Introduction
Dans ce laboratoire, l'objectif est d'apprendre à énumérer les services HTTP à l'aide de Nmap. Vous commencerez par exécuter une énumération HTTP sur le localhost 127.0.0.1 avec le script http-enum. Ensuite, vous scannerez le port 80, ajouterez un agent utilisateur (user agent) et enregistrerez les résultats de l'énumération. Enfin, vous examinerez les résultats HTTP et les comparerez avec un scan de bannière (banner scan) dans le terminal Xfce.
N'oubliez pas que dans les scénarios du monde réel, vous ne devez scanner que les réseaux et les systèmes avec une autorisation explicite.
Exécuter l'énumération HTTP avec nmap --script http-enum 127.0.0.1
Dans cette étape, nous utiliserons Nmap avec le script http-enum pour énumérer les services HTTP sur le localhost. Ce script aide à identifier les vulnérabilités potentielles et les mauvaises configurations en découvrant les fichiers et répertoires courants des serveurs web.
Avant de commencer, discutons brièvement de ce que sont Nmap et les scripts NSE. Nmap ("Network Mapper") est un utilitaire gratuit et open-source pour la découverte de réseaux et l'audit de sécurité. Le NSE (Nmap Scripting Engine) permet aux utilisateurs d'écrire des scripts pour automatiser une grande variété de tâches réseau. Le script http-enum est l'un de ces scripts NSE conçu pour énumérer les ressources HTTP courantes.
Pour ce laboratoire, nous ciblerons l'adresse IP du localhost 127.0.0.1. C'est une approche sûre pour l'apprentissage car nous scannons notre propre machine locale.
Maintenant, exécutons la commande Nmap :
sudo nmap --script http-enum 127.0.0.1
Cette commande indique à Nmap de :
sudo: Exécuter la commande avec les privilèges de superutilisateur, ce qui peut être requis pour certaines opérations Nmap.nmap: Appeler l'outil Nmap.--script http-enum: Spécifier que nous voulons utiliser le scripthttp-enum.127.0.0.1: L'adresse IP cible à scanner (localhost).
Après avoir exécuté la commande, vous verrez une sortie similaire à la suivante (la sortie exacte dépendra du système cible) :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
3001/tcp open nessus
8080/tcp open http-proxy
| http-enum:
| /robots.txt: Robots file
|_ /session/: Potentially interesting folder
Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds
La sortie montre que le script http-enum a trouvé quelques ressources intéressantes sur le port 8080 :
/robots.txt: Un fichier qui spécifie quelles parties du site web ne doivent pas être explorées par les robots web./session/: Un répertoire potentiellement intéressant qui pourrait contenir des fichiers ou des fonctionnalités liés aux sessions.
Ces découvertes peuvent être étudiées plus en détail pour identifier les vulnérabilités potentielles ou les mauvaises configurations.
Scanner le port 8080 avec nmap --script http-enum -p 8080 127.0.0.1
Dans cette étape, nous allons concentrer notre scan Nmap sur un port spécifique, le port 8080, en utilisant le script http-enum. La spécification d'un port peut aider à affiner le scan et à fournir des résultats plus ciblés. Nous allons scanner 127.0.0.1, qui est l'adresse de bouclage (loopback address), représentant la machine locale. Ceci est utile pour tester les services exécutés sur votre propre système.
Décomposons la commande que nous allons utiliser :
sudo nmap --script http-enum -p 8080 127.0.0.1
Voici ce que signifie chaque partie de la commande :
sudo: Exécute la commande avec les privilèges de superutilisateur. Cela peut être nécessaire pour obtenir des résultats précis, en particulier sur les numéros de port inférieurs.nmap: Appelle l'outil Nmap.--script http-enum: Spécifie que nous voulons utiliser le scripthttp-enumpour énumérer les ressources HTTP.-p 8080: Cette option indique à Nmap de ne scanner que le port 8080. Le port 8080 est couramment utilisé comme port HTTP alternatif, souvent pour les serveurs de développement ou les services proxy.127.0.0.1: L'adresse IP cible, dans ce cas, l'adresse de bouclage, qui fait référence à la machine locale.
Maintenant, exécutez la commande dans votre terminal :
sudo nmap --script http-enum -p 8080 127.0.0.1
La sortie ressemblera à ceci (la sortie exacte dépendra des services exécutés sur votre machine locale) :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
PORT STATE SERVICE
8080/tcp open http-proxy
| http-enum:
| /robots.txt: Robots file
|_ /session/: Potentially interesting folder
Nmap done: 1 IP address (1 host up) scanned in 0.87 seconds
Dans cet exemple, le script http-enum a trouvé /robots.txt et /session/. Ce sont des ressources courantes sur les serveurs web, et une investigation plus approfondie pourrait révéler plus d'informations sur la configuration du serveur et les vulnérabilités potentielles. En spécifiant le port 8080, nous avons concentré le scan et obtenu des résultats spécifiques au service HTTP exécuté sur la machine locale.
Ajouter un User-Agent avec nmap --script http-enum --script-args http.useragent=Test 127.0.0.1
Dans cette étape, nous allons personnaliser l'en-tête User-Agent utilisé par le script http-enum. L'en-tête User-Agent est envoyé par le client (dans ce cas, Nmap) au serveur et identifie le logiciel client. La modification du User-Agent peut être utile pour plusieurs raisons, telles que :
- Contourner les mesures de sécurité de base : Certains serveurs peuvent bloquer les requêtes provenant d'outils de scan connus. La modification du User-Agent peut aider à éviter ces blocages.
- Tester le comportement du serveur : Vous pouvez observer comment le serveur répond à différentes chaînes User-Agent.
- Discrétion : L'utilisation d'un User-Agent moins courant peut rendre vos scans moins visibles.
Nous utiliserons l'option --script-args pour modifier la valeur de http.useragent.
Voici la commande que nous allons utiliser :
sudo nmap --script http-enum --script-args http.useragent=Test 127.0.0.1
Décomposons cette commande :
sudo: Exécute la commande avec les privilèges de superutilisateur.nmap: Appelle l'outil Nmap.--script http-enum: Spécifie que nous voulons utiliser le scripthttp-enum.--script-args http.useragent=Test: C'est la partie clé. Elle passe un argument au scripthttp-enum. Plus précisément, elle définit la variablehttp.useragentà la valeur "Test". Cela signifie que lorsque le script enverra des requêtes HTTP, il utilisera "Test" comme en-tête User-Agent.127.0.0.1: L'adresse IP cible à scanner (localhost).
Exécutez la commande dans votre terminal :
sudo nmap --script http-enum --script-args http.useragent=Test 127.0.0.1
La sortie sera similaire à la sortie de la première étape, mais les requêtes HTTP envoyées au serveur incluront désormais l'en-tête User-Agent: Test. Vous ne verrez pas directement le User-Agent dans la sortie Nmap, mais il sera utilisé en arrière-plan pendant le scan.
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
3001/tcp open nessus
8080/tcp open http-proxy
| http-enum:
| /robots.txt: Robots file
|_ /session/: Potentially interesting folder
Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds
Cette étape montre comment personnaliser les scripts Nmap à l'aide de l'option --script-args. Cela vous permet d'affiner le comportement des scripts et de les adapter à des situations spécifiques.
Sauvegarder les résultats de l'énumération avec nmap --script http-enum -oN http_enum.txt 127.0.0.1
Dans cette étape, nous allons sauvegarder les résultats du script http-enum dans un fichier. Ceci est crucial pour l'analyse et le reporting ultérieurs. Nmap propose plusieurs options pour sauvegarder les résultats de scan dans différents formats. Nous utiliserons l'option -oN, qui sauvegarde les résultats dans un format "normal" lisible par l'homme.
Voici la commande que nous allons utiliser :
sudo nmap --script http-enum -oN http_enum.txt 127.0.0.1
Décomposons cette commande :
sudo: Exécute la commande avec les privilèges de superutilisateur.nmap: Appelle l'outil Nmap.--script http-enum: Spécifie que nous voulons utiliser le scripthttp-enum.-oN http_enum.txt: Cette option indique à Nmap de sauvegarder les résultats au format normal dans le fichier nomméhttp_enum.txt. Le fichier sera créé dans votre répertoire courant (~/project).127.0.0.1: L'adresse IP cible à scanner (l'adresse de bouclage).
Exécutez la commande dans votre terminal :
sudo nmap --script http-enum -oN http_enum.txt 127.0.0.1
La sortie dans le terminal sera similaire à la sortie des étapes précédentes, mais en plus d'afficher les résultats à l'écran, Nmap les sauvegardera également dans le fichier http_enum.txt.
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
3001/tcp open nessus
8080/tcp open http-proxy
| http-enum:
| /robots.txt: Robots file
|_ /session/: Potentially interesting folder
Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds
Pour vérifier que le fichier a été créé et contient les résultats du scan, vous pouvez utiliser la commande cat pour afficher le contenu du fichier :
cat http_enum.txt
Vous devriez voir les résultats du scan Nmap dans la sortie. Ce fichier peut maintenant être utilisé pour une analyse plus approfondie, pour le reporting, ou comme entrée pour d'autres outils.
Examiner les résultats HTTP dans le terminal Xfce
Dans cette étape, nous allons examiner les découvertes HTTP du fichier http_enum.txt que nous avons créé à l'étape précédente. Nous utiliserons le terminal Xfce et la commande cat pour afficher le contenu du fichier et analyser les résultats.
Tout d'abord, assurez-vous d'être dans le répertoire ~/project. C'est là que le fichier http_enum.txt devrait se trouver.
Pour visualiser le contenu du fichier http_enum.txt, utilisez la commande suivante :
cat http_enum.txt
Cette commande affichera le contenu du fichier dans votre terminal.
Exemple de sortie (la sortie réelle peut varier en fonction de la cible) :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
3001/tcp open nessus
8080/tcp open http-proxy
| http-enum:
| /robots.txt: Robots file
|_ /session/: Potentially interesting folder
Nmap done: 1 IP address (1 host up) scanned in 1.58 seconds
Maintenant, analysons la sortie. Le script http-enum tente d'identifier les fichiers et répertoires potentiellement intéressants sur le serveur web. Dans cet exemple, il a trouvé :
/robots.txt: Ce fichier fournit des instructions aux robots web (robots d'exploration) sur les parties du site web qui ne doivent pas être indexées. Il peut parfois révéler des zones cachées ou sensibles du site./session/: Il s'agit d'un répertoire potentiellement intéressant qui pourrait contenir des fichiers liés aux sessions, des fichiers de configuration ou d'autres informations sensibles.
En examinant ces découvertes, vous pouvez mieux comprendre la structure du serveur web et identifier les domaines potentiels pour des investigations plus poussées. Par exemple, vous pourriez utiliser un navigateur web pour visiter http://127.0.0.1:8080/robots.txt et http://127.0.0.1:8080/session/ pour voir ce qu'ils contiennent.
Cette étape démontre comment examiner la sortie des scripts Nmap et identifier les informations potentiellement intéressantes. C'est une partie cruciale du processus de reconnaissance.
Comparer les résultats avec le scan de bannière dans le terminal Xfce
Dans cette étape, nous allons effectuer un scan de bannière à l'aide de Nmap et comparer ses résultats avec ceux du script http-enum. Le "banner grabbing" est une technique utilisée pour recueillir des informations sur un service en examinant la bannière qu'il présente lorsqu'une connexion est établie. Cela peut révéler la version du logiciel et d'autres détails.
Tout d'abord, effectuons un scan de bannière sur le port 8080 de la cible (127.0.0.1) en utilisant Nmap. Nous utiliserons l'option -sV, qui active la détection de version :
sudo nmap -sV -p 8080 127.0.0.1
Cette commande tentera de déterminer le service et la version en cours d'exécution sur le port 8080.
Exemple de sortie :
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000087s latency).
PORT STATE SERVICE VERSION
8080/tcp open http SimpleHTTPServer 0.6 (Python 3.7.5)
Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds
Dans cet exemple, le scan de bannière révèle que le serveur web est SimpleHTTPServer 0.6 exécuté sur Python 3.7.5.
Maintenant, comparons ces informations avec les découvertes du script http-enum, que nous avons examinées à l'étape précédente. Le script http-enum a identifié des fichiers et répertoires potentiels, tels que /robots.txt et /session/.
En comparant les résultats du scan de bannière et du script http-enum, nous pouvons construire une image plus complète du système cible. Le scan de bannière fournit des informations sur les versions logicielles, tandis que le script http-enum révèle les fichiers et répertoires potentiels. Ces informations combinées peuvent être précieuses pour identifier les vulnérabilités et planifier des attaques ultérieures.
Par exemple, connaître la version du logiciel du serveur web vous permet de rechercher les vulnérabilités connues spécifiques à cette version. Les fichiers et répertoires identifiés peuvent ensuite être ciblés pour une exploitation.
Cette étape démontre l'importance de combiner différentes techniques de scan pour recueillir des informations complètes sur un système cible.
Résumé
Dans ce laboratoire, les participants ont appris à énumérer les services HTTP à l'aide du script http-enum de Nmap. Ils ont exécuté des commandes pour scanner localhost (127.0.0.1), ciblant le port 8080, en ajoutant un agent utilisateur personnalisé et en enregistrant les résultats dans un fichier texte. Le laboratoire a souligné l'utilisation des privilèges de superutilisateur pour certaines opérations et a démontré des pratiques de scan sécurisées en utilisant localhost.
Après avoir exécuté les scans, les participants ont examiné les découvertes HTTP et comparé les résultats avec un scan de bannière dans le terminal Xfce, les aidant à identifier les vulnérabilités potentielles et les mauvaises configurations sur le serveur web local. Cette approche pratique a fourni une expérience concrète des techniques de reconnaissance réseau.



