Nmap Scripting Engine
Le Nmap Scripting Engine (NSE) est une puissante fonctionnalité qui permet d'automatiser des tâches complexes lors d'un scan, telles que :
L'énumération de services,
La détection de vulnérabilités,
L'exploitation de failles connues,
Ou même des attaques par force brute.
Les scripts sont écrits en Lua et sont classés par catégories selon leur usage.
📁 Catégories de Scripts NSE
auth
Recherche d’identifiants valides (authentification).
broadcast
Découverte de services via broadcast.
brute
Attaque par force brute sur les services.
default
Scripts exécutés par défaut avec -sC
.
discovery
Collecte d'informations sur les services disponibles.
dos
Tests de vulnérabilités DoS (rarement utilisés car destructifs).
exploit
Exploitation de vulnérabilités connues.
external
Utilisation de services externes.
fuzzer
Envoi de paquets aléatoires pour tester la robustesse des services.
intrusive
Scripts intrusifs pouvant impacter la cible.
malware
Vérifie si le système est infecté.
safe
Scripts sûrs, non destructifs.
version
Complément à la détection de version (-sV
).
vuln
Recherche de vulnérabilités connues.
⚙️ Utilisation des scripts
▶ Scripts par défaut
sudo nmap <IP CIBLE> -sC
▶ Par catégorie
sudo nmap <IP CIBLE> --script vuln
▶ Scripts définis manuellement
sudo nmap <IP CIBLE> --script banner,smtp-commands
📬 Exemple sur le port SMTP (25)
sudo nmap 10.xx.xx.xx -p 25 --script banner,smtp-commands
📊 Résultat :
PORT STATE SERVICE
25/tcp open smtp
|_banner: 220 inlane ESMTP Postfix (Ubuntu)
|_smtp-commands: PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ...
✅ Ici, le script banner
révèle que la cible utilise Postfix sur Ubuntu.
✅ Le script smtp-commands
affiche les commandes SMTP activées — utile pour énumérer les utilisateurs par exemple.
🚀 Scan agressif -A
-A
sudo nmap <IP CIBLE> -p 80 -A
🔍 Ce que fait l'option -A
:
-A
:Détection de services (
-sV
)Détection du système d’exploitation (
-O
)Traceroute (
--traceroute
)NSE par défaut (
-sC
)
📊 Résultat :
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-generator: WordPress 5.3.4
|_http-title: blog.inlanefreight.com
✅ On identifie ici :
Le serveur web : Apache 2.4.29
L'application utilisée : WordPress 5.3.4
L'OS supposé : Linux (96%)
🛡️ Évaluation de vulnérabilités (catégorie vuln
)
vuln
)sudo nmap <IP CIBLE> -p 80 -sV --script vuln
📊 Exemple de sortie :
| http-enum:
| /wp-login.php: Possible admin folder
| /: WordPress version: 5.3.4
| http-wordpress-users:
| Username found: admin
| vulners:
| cpe:/a:apache:http_server:2.4.29:
| CVE-2019-0211 7.2 https://vulners.com/cve/CVE-2019-0211
✅ Le script vulners
fournit les CVE connues pour les services détectés.
✅ http-enum
et http-wordpress-users
permettent d’énumérer les fichiers et utilisateurs WordPress.
💡 Astuces & Recommandations
Combine
--script
avec-sV
pour améliorer la détection.Utilise
--script-help <nom>
pour avoir la doc d’un script.Tu peux créer tes propres scripts en Lua dans
/usr/share/nmap/scripts/
.
Use NSE and its scripts to find the flag that one of the services contain and submit it as the answer.
Nous exécutons un scan via un script NSE dont voici le résultat :
$ nmap 10.xx.xx.xx --script http-enum -oA NSE
Starting Nmap 7.93 ( https://nmap.org ) at 2025-06-18 11:25 CEST
Nmap scan report for 10.xx.xx.xx
Host is up (0.027s latency).
Not shown: 993 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
| http-enum:
|_ /robots.txt: Robots file
110/tcp open pop3
139/tcp open netbios-ssn
143/tcp open imap
445/tcp open microsoft-ds
31337/tcp open Elite
Nmap done: 1 IP address (1 host up) scanned in 499.40 seconds
Les résultats sont alors enregistrés dans les fichier NSE.*, cela est une bonne pratique vu plus tôt dans le module.
Nous récupérons donc le contenu du fichier /robots.txt :
$ curl 10.129.126.177/robots.txt
User-agent: *
Allow: /
HTB{873nniuc71bu6usbs1i96as6dsv26}
Nous obtenons alors le flag souhaité :
HTB{873nniuc71bu6usbs1i96as6dsv26}
Mis à jour