LFI2RCE via phpinfo()
Last updated
Last updated
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ottieni la prospettiva di un hacker sulle tue app web, rete e cloud
Trova e segnala vulnerabilità critiche e sfruttabili con un reale impatto sul business. Usa i nostri oltre 20 strumenti personalizzati per mappare la superficie di attacco, trovare problemi di sicurezza che ti permettano di elevare i privilegi e utilizzare exploit automatizzati per raccogliere prove essenziali, trasformando il tuo duro lavoro in report persuasivi.
Per sfruttare questa vulnerabilità hai bisogno di: Una vulnerabilità LFI, una pagina dove viene visualizzato phpinfo(), "file_uploads = on" e il server deve essere in grado di scrivere nella directory "/tmp".
https://www.insomniasec.com/downloads/publications/phpinfolfi.py
Tutorial HTB: https://www.youtube.com/watch?v=rs4zEwONzzk&t=600s
Devi correggere l'exploit (cambia => in =>). Per farlo puoi fare:
You have to change also the payload at the beginning of the exploit (for a php-rev-shell for example), the REQ1 (this should point to the phpinfo page and should have the padding included, i.e.: REQ1="""POST /install.php?mode=phpinfo&a="""+padding+""" HTTP/1.1), and LFIREQ (this should point to the LFI vulnerability, i.e.: LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r -- Controlla il doppio "%" quando sfrutti il carattere nullo)
Se gli upload sono consentiti in PHP e provi a caricare un file, questo file viene memorizzato in una directory temporanea fino a quando il server ha finito di elaborare la richiesta, poi questo file temporaneo viene eliminato.
Quindi, se hai trovato una vulnerabilità LFI nel server web, puoi provare a indovinare il nome del file temporaneo creato e sfruttare un RCE accedendo al file temporaneo prima che venga eliminato.
In Windows i file sono solitamente memorizzati in C:\Windows\temp\php
In linux il nome del file di solito è random e si trova in /tmp. Poiché il nome è casuale, è necessario estrarre da qualche parte il nome del file temporaneo e accedervi prima che venga eliminato. Questo può essere fatto leggendo il valore della variabile $_FILES all'interno del contenuto della funzione "phpconfig()".
phpinfo()
PHP utilizza un buffer di 4096B e quando è pieno, viene inviato al client. Poi il client può inviare molte richieste grandi (utilizzando intestazioni grandi) caricando un php reverse shell, aspettare che la prima parte di phpinfo() venga restituita (dove si trova il nome del file temporaneo) e provare ad accedere al file temporaneo prima che il server php elimini il file sfruttando una vulnerabilità LFI.
Script Python per provare a forzare il nome (se la lunghezza = 6)
Ottieni la prospettiva di un hacker sulle tue app web, rete e cloud
Trova e segnala vulnerabilità critiche ed esploitabili con un reale impatto sul business. Usa i nostri oltre 20 strumenti personalizzati per mappare la superficie di attacco, trovare problemi di sicurezza che ti permettano di elevare i privilegi e utilizzare exploit automatizzati per raccogliere prove essenziali, trasformando il tuo duro lavoro in report persuasivi.
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)