4.7 KiB
{% hint style="success" %}
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)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Controlla i dettagli completi di questa tecnica in https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf
Caricamenti di file PHP
Quando un motore PHP riceve una richiesta POST contenente file formattati secondo l'RFC 1867, genera file temporanei per memorizzare i dati caricati. Questi file sono cruciali per la gestione dei caricamenti di file negli script PHP. La funzione move_uploaded_file
deve essere utilizzata per spostare questi file temporanei in una posizione desiderata se è necessaria una memorizzazione persistente oltre l'esecuzione dello script. Dopo l'esecuzione, PHP elimina automaticamente eventuali file temporanei rimanenti.
{% hint style="info" %} Avviso di sicurezza: Gli attaccanti, a conoscenza della posizione dei file temporanei, potrebbero sfruttare una vulnerabilità di Local File Inclusion per eseguire codice accedendo al file durante il caricamento. {% endhint %}
La sfida per l'accesso non autorizzato risiede nella previsione del nome del file temporaneo, che è intenzionalmente randomizzato.
Sfruttamento su sistemi Windows
Su Windows, PHP genera nomi di file temporanei utilizzando la funzione GetTempFileName
, risultando in un modello come <path>\<pre><uuuu>.TMP
. In particolare:
- Il percorso predefinito è tipicamente
C:\Windows\Temp
. - Il prefisso è solitamente "php".
- Il
<uuuu>
rappresenta un valore esadecimale unico. Crucialmente, a causa della limitazione della funzione, vengono utilizzati solo i 16 bit inferiori, consentendo un massimo di 65.535 nomi unici con percorso e prefisso costanti, rendendo fattibile la forza bruta.
Inoltre, il processo di sfruttamento è semplificato sui sistemi Windows. Una peculiarità nella funzione FindFirstFile
consente l'uso di caratteri jolly nei percorsi di Local File Inclusion (LFI). Questo consente di creare un percorso di inclusione come il seguente per localizzare il file temporaneo:
http://site/vuln.php?inc=c:\windows\temp\php<<
In certe situazioni, potrebbe essere necessaria una maschera più specifica (come php1<<
o phpA<<
). Si possono provare sistematicamente queste maschere per scoprire il file temporaneo caricato.
Sfruttamento su Sistemi GNU/Linux
Per i sistemi GNU/Linux, la casualità nella denominazione dei file temporanei è robusta, rendendo i nomi né prevedibili né suscettibili ad attacchi di forza bruta. Ulteriori dettagli possono essere trovati nella documentazione di riferimento.
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.