☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! - Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) - Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) - **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
## **Téléchargements de fichiers PHP** Le moteur **PHP**, lorsqu'il reçoit un paquet **POST** avec des fichiers codés **RFC 1867**, **crée** un ou plusieurs **fichiers temporaires** qui sont utilisés pour **stocker les données des fichiers téléchargés**. Un script PHP gérant les téléchargements de fichiers doit utiliser la fonction move\_uploaded\_file pour déplacer le fichier temporaire téléchargé à l'endroit souhaité (si le script nécessite que le fichier existe après sa terminaison). **Lorsque le script se termine, le moteur PHP supprime tous les fichiers temporaires** pour les fichiers qui ont été téléchargés (s'il en reste après la fin du script). {% hint style="info" %} **Comme l'attaquant connaîtra généralement l'emplacement de ces fichiers temporaires, en cas de Local File Inclusion, il pourrait charger le fichier téléchargé et obtenir RCE.** {% endhint %} Le principal problème pour accéder au fichier est essentiellement de **deviner son nom (qui sera "aléatoire")**. ## Exploitation sous Windows Pour générer le nom **aléatoire sous Windows**, PHP utilise la fonction **`GetTempFileName`**. En examinant la documentation, nous pouvons trouver l'explication suivante : La fonction GetTempFileName crée un nom de fichier temporaire de la forme suivante : `\
.TMP`

* Le chemin est `upload_tmp_dir` qui est normalement `C:\Windows\Temp`
* Le préfixe est généralement : "php"
* Le \ est une valeur hexadécimale unique. Cependant :
  * Seuls les 16 bits inférieurs du paramètre uUnique sont utilisés. Cela limite GetTempFileName à un maximum de 65 535 noms de fichiers uniques si les paramètres lpPathName et lpPrefixString restent les mêmes. **Il est possible de le forcer par la méthode brute.**

Comme nous l'avons vu, il est assez **facile** de **trouver** le **fichier temporaire dans les systèmes Windows**. Et cela va devenir plus facile car la force brute n'est pas nécessaire ici, grâce à une certaine particularité de FindFirstFile qui permet d'utiliser des masques (<< comme \* et > comme ?) dans les chemins LFI sur Windows. Grâce à cela, on peut former un **chemin d'inclusion comme celui-ci** :
```
http://site/vuln.php?inc=c:\windows\temp\php<<
```
(Dans certains cas, un masque plus spécifique peut être nécessaire, tel que `php1<<` ou `phpA<<`). Vous pouvez effectuer une attaque par force brute avec des masques plus spécifiques jusqu'à ce que vous trouviez votre fichier temporaire téléchargé.

## Exploitation GNU/Linux

La valeur aléatoire du nom de fichier est suffisamment bonne pour ne pas être prévisible ni attaquable par force brute. Pour plus d'informations, consultez les références.

## Références

* [https://gynvael.coldwind.pl/?id=376](https://gynvael.coldwind.pl/?id=376)
* [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)


☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) ! - Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family) - Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com) - **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.