Apprenez et pratiquez le hacking AWS :<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Apprenez et pratiquez le hacking GCP : <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) !
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de hacking en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
**Vérifiez les détails complets de cette technique sur [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)**
Lorsqu'un moteur **PHP** reçoit une **requête POST** contenant des fichiers formatés selon la RFC 1867, il génère des fichiers temporaires pour stocker les données téléchargées. Ces fichiers sont cruciaux pour la gestion des téléchargements de fichiers dans les scripts PHP. La fonction `move_uploaded_file` doit être utilisée pour déplacer ces fichiers temporaires vers un emplacement souhaité si un stockage persistant au-delà de l'exécution du script est nécessaire. Après l'exécution, PHP supprime automatiquement tous les fichiers temporaires restants.
**Alerte de sécurité : Les attaquants, conscients de l'emplacement des fichiers temporaires, pourraient exploiter une vulnérabilité d'inclusion de fichiers locaux pour exécuter du code en accédant au fichier pendant le téléchargement.**
Sur Windows, PHP génère des noms de fichiers temporaires en utilisant la fonction `GetTempFileName`, ce qui donne un motif comme `<path>\<pre><uuuu>.TMP`. Notamment :
- Le `<uuuu>` représente une valeur hexadécimale unique. Crucialement, en raison de la limitation de la fonction, seuls les 16 bits inférieurs sont utilisés, permettant un maximum de 65,535 noms uniques avec un chemin et un préfixe constants, rendant la force brute réalisable.
De plus, le processus d'exploitation est simplifié sur les systèmes Windows. Une particularité de la fonction `FindFirstFile` permet l'utilisation de caractères génériques dans les chemins d'inclusion de fichiers locaux (LFI). Cela permet de créer un chemin d'inclusion comme suit pour localiser le fichier temporaire :
Dans certaines situations, un masque plus spécifique (comme `php1<<` ou `phpA<<`) peut être requis. On peut systématiquement essayer ces masques pour découvrir le fichier temporaire téléchargé.
Pour les systèmes GNU/Linux, le caractère aléatoire dans la nomination des fichiers temporaires est robuste, rendant les noms ni prévisibles ni susceptibles aux attaques par force brute. D'autres détails peuvent être trouvés dans la documentation référencée.