mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
33 lines
2.6 KiB
Markdown
33 lines
2.6 KiB
Markdown
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
**Controlla i dettagli completi di questa tecnica in [https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf](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.
|
|
|
|
> [!NOTE]
|
|
> **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.**
|
|
|
|
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`. Notabilmente:
|
|
|
|
- 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.
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|