Writable Sys Path +Dll Hijacking Privesc
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Se hai scoperto che puoi scrivere in una cartella del System Path (nota che questo non funzionerà se puoi scrivere in una cartella del User Path) è possibile che tu possa escalare i privilegi nel sistema.
Per fare ciò puoi abusare di un Dll Hijacking dove andrai a dirottare una libreria che viene caricata da un servizio o processo con più privilegi dei tuoi, e poiché quel servizio sta caricando una Dll che probabilmente non esiste nemmeno nell'intero sistema, cercherà di caricarla dal System Path dove puoi scrivere.
Per ulteriori informazioni su cosa è il Dll Hijacking controlla:
Dll HijackingLa prima cosa di cui hai bisogno è identificare un processo in esecuzione con più privilegi di te che sta cercando di caricare una Dll dal System Path in cui puoi scrivere.
Il problema in questi casi è che probabilmente quei processi sono già in esecuzione. Per trovare quali Dll mancano ai servizi, devi avviare procmon il prima possibile (prima che i processi vengano caricati). Quindi, per trovare le .dll mancanti fai:
Crea la cartella C:\privesc_hijacking
e aggiungi il percorso C:\privesc_hijacking
alla variabile di ambiente System Path. Puoi farlo manualmente o con PS:
Avvia procmon
e vai su Options
--> Enable boot logging
e premi OK
nel prompt.
Poi, riavvia. Quando il computer si riavvia, procmon
inizierà a registrare eventi il prima possibile.
Una volta che Windows è avviato, esegui di nuovo procmon
, ti dirà che è stato in esecuzione e ti chiederà se vuoi memorizzare gli eventi in un file. Rispondi sì e memorizza gli eventi in un file.
Dopo che il file è stato generato, chiudi la finestra procmon
aperta e apri il file degli eventi.
Aggiungi questi filtri e troverai tutti i Dll che alcuni processi hanno cercato di caricare dalla cartella del System Path scrivibile:
Eseguendo questo su una macchina virtuale (vmware) Windows 11 gratuita ho ottenuto questi risultati:
In questo caso gli .exe sono inutili, quindi ignorali, i Dll mancanti erano da:
Servizio | Dll | Riga CMD |
---|---|---|
Task Scheduler (Pianificazione) | WptsExtensions.dll |
|
Diagnostic Policy Service (DPS) | Unknown.DLL |
|
??? | SharedRes.dll |
|
Dopo aver trovato questo, ho trovato questo interessante post sul blog che spiega anche come abuse WptsExtensions.dll per privesc. Che è ciò che stiamo per fare ora.
Quindi, per escalare i privilegi stiamo per hijackare la libreria WptsExtensions.dll. Avendo il percorso e il nome dobbiamo solo generare il dll malevolo.
Puoi provare a usare uno di questi esempi. Potresti eseguire payload come: ottenere una rev shell, aggiungere un utente, eseguire un beacon...
Nota che non tutti i servizi vengono eseguiti con NT AUTHORITY\SYSTEM
, alcuni vengono eseguiti anche con NT AUTHORITY\LOCAL SERVICE
che ha meno privilegi e non sarai in grado di creare un nuovo utente abusando delle sue autorizzazioni.
Tuttavia, quell'utente ha il privilegio seImpersonate
, quindi puoi usare il potato suite per escalare i privilegi. Quindi, in questo caso una rev shell è una migliore opzione rispetto a cercare di creare un utente.
Al momento della scrittura, il servizio Task Scheduler è eseguito con Nt AUTHORITY\SYSTEM.
Avendo generato il Dll malevolo (nel mio caso ho usato una rev shell x64 e ho ottenuto una shell di ritorno ma Defender l'ha uccisa perché proveniva da msfvenom), salvalo nel System Path scrivibile con il nome WptsExtensions.dll e riavvia il computer (o riavvia il servizio o fai tutto il necessario per rieseguire il servizio/programma interessato).
Quando il servizio viene riavviato, il dll dovrebbe essere caricato ed eseguito (puoi riutilizzare il trucco procmon per controllare se la libreria è stata caricata come previsto).
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)