hacktricks/pentesting-web/file-inclusion/lfi2rce-via-temp-file-uploads.md

70 lines
6.1 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- 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) !
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **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)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **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)**.
2022-04-28 16:01:33 +00:00
</details>
2023-06-03 13:10:46 +00:00
## **Téléchargements de fichiers PHP**
2022-04-21 00:07:27 +00:00
2023-06-03 13:10:46 +00:00
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).
2022-04-21 00:07:27 +00:00
{% hint style="info" %}
2023-06-03 13:10:46 +00:00
**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.**
2022-04-21 00:07:27 +00:00
{% endhint %}
2023-06-03 13:10:46 +00:00
Le principal problème pour accéder au fichier est essentiellement de **deviner son nom (qui sera "aléatoire")**.
2022-04-21 00:07:27 +00:00
2023-06-03 13:10:46 +00:00
## Exploitation sous Windows
2022-04-21 00:07:27 +00:00
2023-06-03 13:10:46 +00:00
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 :
2022-04-21 00:07:27 +00:00
`<path>\<pre><uuuu>.TMP`
2023-06-03 13:10:46 +00:00
* Le chemin est `upload_tmp_dir` qui est normalement `C:\Windows\Temp`
* Le préfixe est généralement : "php"
* Le \<uuuu> 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.**
2022-04-21 00:07:27 +00:00
2023-06-03 13:10:46 +00:00
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** :
2022-04-21 00:07:27 +00:00
```
http://site/vuln.php?inc=c:\windows\temp\php<<
```
2023-06-03 13:10:46 +00:00
(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é.
2022-04-21 00:07:27 +00:00
2023-06-03 13:10:46 +00:00
## Exploitation GNU/Linux
2022-04-21 00:07:27 +00:00
2023-06-03 13:10:46 +00:00
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.
2022-04-21 00:07:27 +00:00
2023-06-03 13:10:46 +00:00
## Références
2022-04-21 00:07:27 +00:00
* [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)
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- 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) !
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **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)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **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)**.
2022-04-28 16:01:33 +00:00
</details>