Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
LocalPotato_CVE-2023-21746 — Exploit proof-of-concept per escalation dei privilegi locale di Windows (CVE-2023-21746) che abusa dell'autenticazione locale NTLM per ottenere privilegi SYSTEM tramite accesso a condivisioni SMB e DLL hijacking. | Kitploit
Strumenti/GitHubGitHub/muhammad-ali007/localpotato_cve-2023-21746
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitMovimento LateralePost-ExploitPenetration TestingSviluppo PayloadBinary Exploitation

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
muhammad-ali007/localpotato_cve-2023-21746

LocalPotato_CVE-2023-21746

Exploit proof-of-concept per escalation dei privilegi locale di Windows (CVE-2023-21746) che abusa dell'autenticazione locale NTLM per ottenere privilegi SYSTEM tramite accesso a condivisioni SMB e DLL hijacking.

Vedi Repository
3223 anni faNon ancora revisionato

Una vulnerabilità di escalation dei privilegi locali (LPE) in Windows è stata segnalata a Microsoft il 9 settembre 2022 da Andrea Pierini (@decoder_it) e Antonio Cocomazzi (@splinter_code). La vulnerabilità consentirebbe a un attaccante con un account a bassi privilegi su un host di leggere/scrivere file arbitrari con privilegi di SYSTEM.

Sebbene la vulnerabilità in sé non consenta direttamente di eseguire comandi come SYSTEM, possiamo combinarla con diversi vettori per ottenere questo risultato. Opportunamente, il 13 febbraio è stato pubblicato da BlackArrowSec un altro PoC di escalation dei privilegi che abusa del servizio StorSvc, consentendo a un attaccante di eseguire codice come SYSTEM purché possa scrivere un file DLL in qualsiasi directory del PATH.

Il PoC LocalPotato sfrutta un difetto in un caso speciale dell'autenticazione NTLM chiamato autenticazione locale NTLM per indurre un processo privilegiato ad autenticare una sessione che l'attaccante avvia contro il server SMB locale. Di conseguenza, l'attaccante ottiene una connessione che gli garantisce l'accesso a qualsiasi condivisione con i privilegi del processo raggirato, incluse condivisioni speciali come C$ o ADMIN$.

Il processo seguito dall'exploit è il seguente:

  • L'attaccante induce un processo privilegiato a connettersi a un server rogue sotto il suo controllo. Questo funziona in modo simile ai precedenti exploit Potato, in cui un utente non privilegiato può forzare il Sistema Operativo a creare connessioni che utilizzano un utente privilegiato (di solito SYSTEM).
  • Il server rogue istanzierà un Security Context A per la connessione privilegiata ma non lo rimanderà immediatamente indietro. Invece, l'attaccante lancerà un client rogue che contemporaneamente avvia una connessione contro il server SMB locale (Windows File Sharing) con le sue attuali credenziali non privilegiate. Il client invierà il messaggio Type1 per avviare la connessione e il server risponderà inviando un messaggio Type2 con l'ID per un nuovo Security Context B.
  • L'attaccante scambierà gli ID di contesto di entrambe le connessioni in modo che il processo privilegiato riceva il contesto della connessione al server SMB invece del proprio. Di conseguenza, il client privilegiato assocerà il suo utente (SYSTEM) al Security Context B della connessione SMB creata dall'attaccante. Di conseguenza, il client dell'attaccante può ora accedere a qualsiasi condivisione di rete con privilegi SYSTEM!

Avendo una connessione privilegiata alle condivisioni SMB, l'attaccante può leggere o scrivere file sulla macchina target in qualsiasi posizione. Sebbene questo non ci consenta di eseguire comandi direttamente contro la macchina vulnerabile, combineremo questo con un diverso vettore di attacco per raggiungere tale obiettivo.

Nota che la vulnerabilità è nel protocollo NTLM piuttosto che nel server SMB, quindi questo stesso vettore di attacco potrebbe teoricamente essere usato contro qualsiasi servizio che sfrutta l'autenticazione tramite NTLM. In pratica, tuttavia, bisogna gestire alcune avvertenze quando si seleziona il protocollo da attaccare. Il PoC usa il server SMB per evitare alcune protezioni extra presenti per altri protocolli contro vettori di attacco simili e implementa persino un rapido bypass per far funzionare l'exploit contro il server SMB. Post dell'autore originale dell'exploit - (https://decoder.cloud/2023/02/13/localpotato-when-swapping-the-context-leads-you-to-system/)

Finora abbiamo usato LocalPotato per scrivere file arbitrari sulla macchina target. Per ottenere una shell privilegiata, dobbiamo ancora capire come usare la scrittura arbitraria per eseguire un comando.

Recentemente è stato trovato un altro vettore di escalation dei privilegi, in cui un attaccante potrebbe dirottare una DLL mancante per eseguire comandi arbitrari con privilegi SYSTEM. L'unico problema con questo vettore era che un attaccante avrebbe dovuto scrivere una DLL nel PATH di sistema per attivarlo. Per impostazione predefinita, il PATH di Windows include solo directory che possono essere scritte solo da account privilegiati. Sebbene possa essere possibile trovare macchine in cui l'installazione di applicazioni specifiche ha alterato la variabile PATH e reso la macchina vulnerabile, il vettore di attacco si applica solo a scenari particolari. Combinando questo attacco con LocalPotato possiamo superare questa restrizione e avere un exploit di escalation dei privilegi completamente funzionante.

StorSvc e DLL Hijacking Come scoperto da BlackArrowSec (https://github.com/blackarrowsec/redteam-research/tree/26e6fc0c0d30d364758fa11c2922064a9a7fd309/LPE via StorSvc), un attaccante può inviare una chiamata RPC al metodo "SvcRebootToFlashingMode" fornito dal servizio "StorSvc", che a sua volta finirà per innescare un tentativo di caricare una DLL mancante chiamata "SprintCSP.dll". Se non hai familiarità con RPC, consideralo come un'API che espone funzioni in modo che possano essere usate in remoto. In questo caso, il servizio StorSvc espone il metodo SvcRebootToFlashingMode, che chiunque abbia accesso alla macchina può chiamare. Poiché StorSvc viene eseguito con privilegi SYSTEM, creare SprintCSP.dll da qualche parte nel PATH la farà caricare ogni volta che viene effettuata una chiamata a SvcRebootToFlashingMode.

Compilazione dell'Exploit Link dell'exploit - (https://github.com/decoder-it/LocalPotato) Per utilizzare questo exploit, dovrai prima compilare entrambi i file forniti:

  • SprintCSP.dll: Questa è la DLL mancante che andremo a dirottare. Dovremo modificare il comando per eseguire una reverse shell.
  • RpcClient.exe: Questo programma attiverà la chiamata RPC a SvcRebootToFlashingMode. A seconda della versione di Windows che stai prendendo di mira, potresti dover modificare un po' il codice dell'exploit, poiché diverse versioni di Windows utilizzano identificatori di interfaccia diversi per esporre SvcRebootToFlashingMode. I progetti per entrambi i file possono essere trovati nella directory "LPE via StorSvc".

Iniziamo occupandoci di "RpcClient.exe". Come accennato in precedenza, dovremo modificare l'exploit a seconda della versione di Windows della macchina target. Per fare ciò, dovremo modificare le prime righe di "LPE via StorSvc\RpcClient\RpcClient\storsvc_c.c" in modo che venga scelto il sistema operativo corretto. Questo imposterà l'exploit per utilizzare il corretto identificatore di interfaccia RPC. Ora che il codice è stato corretto, apriamo un prompt dei comandi per sviluppatori e compiliamo il progetto eseguendo il seguente comando: Comandi: C:\LPE via StorSvc\RpcClient> msbuild RpcClient.sln C:\LPE via StorSvc\RpcClient> move x64\Debug\RpcClient.exe C:\Users\user\Desktop\ (The compiled executable will be found on your desktop.)

Ora per compilare "SprintCSP.dll", dobbiamo solo modificare la funzione "DoStuff()" in "C:\LPE via StorSvc\SprintCSP\SprintCSP\main.c" in modo che esegua un comando che ci conceda accesso privilegiato alla macchina. Per semplicità, faremo in modo che la DLL aggiunga il nostro utente corrente al gruppo Administrators. Possiamo anche ottenere una reverse shell dal target verso la nostra macchina. Ora compiliamo la DLL eseguendo il seguente comando e spostiamo il risultato sul nostro desktop: Comandi: C:\LPE via StorSvc\SprintCSP> msbuild SprintCSP.sln C:\LPE via StorSvc\SprintCSP> move x64\Debug\SprintCSP.dll C:\Users\user\Desktop\

Ora siamo pronti a lanciare l'exploit. Assicurati di avere l'exploit "LocalPotato.exe", "RpcClient.exe" e il file "SprintCSP.dll".

  • Iniziamo verificando che il nostro utente corrente non faccia parte del gruppo Administrators.
  • Per sfruttare con successo "StorSvc", dobbiamo copiare "SprintCSP.dll" in qualsiasi directory nel PATH corrente. Possiamo verificare il PATH eseguendo il seguente comando: C:> reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -v Path
  • Prenderemo di mira la directory %SystemRoot%\system32, che si espande in "C:\windows\system32". Dovresti comunque essere in grado di usare una qualsiasi delle directory.
  • Usando LocalPotato, possiamo copiare SprintCSP.dll in system32 anche se stiamo usando un utente non privilegiato: C:\Users\user\Desktop> LocalPotato.exe -i SprintCSP.dll -o \Windows\System32\SprintCSP.dll
  • Con la nostra DLL in posizione, possiamo ora eseguire "RpcClient.exe" per attivare la chiamata a "SvcRebootToFlashingMode", eseguendo di fatto il payload nella nostra DLL. C:\Users\user\Desktop> RpcClient.exe
  • Per verificare se il nostro exploit ha funzionato come previsto, possiamo controllare se il nostro utente ora fa parte del gruppo Administrators. C:> net user user

Rilevamento e Mitigazione

Rilevamento Ora che abbiamo capito come funziona l'exploit localpotato e come può essere concatenato con il servizio StorSrv per eseguire codice come SYSTEM, è il momento di vedere come questo può essere rilevato nel sistema e come prevenire tali attacchi.

Regola YARA: Poiché questo attacco coinvolge un eseguibile che gira nel terminale della riga di comando con argomenti, due modi comuni per rilevare questa attività sarebbero l'uso dello strumento di pattern matching YARA per rilevare i pattern dei file e l'esame degli eventi generati dall'esecuzione di questo hack tool localpotato.exe. Poiché l'attacco utilizza l'hack tool noto come localpotato.exe, possiamo creare una regola YARA per rilevare la presenza di questo strumento nel sistema usando YARA o altri strumenti di rilevamento come THOR per scansionare l'host. (La regola YARA è allegata in questo repository, questa regola minima cerca pattern di stringhe comuni nell'eseguibile localpotato).

Regola Sigma: SIGMA è un linguaggio di firma generico utilizzato per scrivere regole di rilevamento basate sui pattern trovati nei log degli eventi. Per rilevare localpotato nella rete, è previsto che sia abilitato il monitoraggio centralizzato dei log. La seguente regola SIGMA è tratta dal repository ufficiale SIGMA (https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_hktl_localpotato.yml).

  • Rilevamento di LocalPotato (la regola è allegata nel repository)
  • Rilevamento del dirottamento di Storsvc e SprintCSP.dll Abbiamo appreso che la vulnerabilità localpotato è combinata con Storsvc per dirottare SprintCSP.dll ed eseguire come SYSTEM. La seguente regola SIGMA allegata, presa dal GitHub ufficiale, può essere usata per rilevare questa attività.

Possiamo usare queste regole sigma per convertirle nello strumento di Rilevamento/Monitoraggio in uso e cercare nei log degli eventi potenziali attacchi.

Mitigazione

  • Aggiornamenti di patch: L'exploit localpotato prende di mira una vulnerabilità nel sistema operativo Windows. Assicurati che tutti i sistemi siano aggiornati con le ultime patch di sicurezza per impedire agli attaccanti di sfruttare questa vulnerabilità. Questa vulnerabilità non colpisce i sistemi operativi patchati.
  • Principio del privilegio minimo: Un modo per impedire agli attaccanti di sfruttare l'exploit localpotato è implementare il principio del privilegio minimo. Questo significa limitare l'accesso degli utenti solo alle risorse di cui hanno bisogno per svolgere le loro funzioni lavorative. In questo modo, gli attaccanti hanno meno probabilità di ottenere i privilegi elevati necessari per eseguire l'exploit.
  • Monitoraggio delle attività sospette: Usa strumenti come "Splunk" per monitorare attività sospette sulla tua rete. Cerca segni di un attacco localpotato, come attività di processo insolite o tentativi di eseguire codice malevolo.
Scarica lo strumento