Les techniques et commandes présentées dans cet article sont destinées exclusivement à des fins éducatives, à la recherche en sécurité et aux tests sur des systèmes dont vous possédez les droits ou pour lesquels vous disposez d’une autorisation écrite explicite. Scanner des infrastructures sans autorisation est illégal dans la plupart des pays (article 323-1 du Code pénal en France). L’auteur décline toute responsabilité quant à un usage malveillant ou non autorisé de ces outils.
Introduction : c’est quoi Nuclei ?
Nuclei est un moteur de scan de vulnérabilités open source développé par ProjectDiscovery. Contrairement aux scanners monolithiques comme Nessus ou OpenVAS, Nuclei repose sur une architecture minimaliste : un moteur Go ultra-rapide + des templates YAML qui décrivent chaque test à effectuer.
Ce découplage entre le moteur et les règles le rend extrêmement puissant :
- La communauté maintient plus de 9 000 templates sur le dépôt officiel.
- Écrire son propre template prend 10 minutes.
- Il s’intègre parfaitement dans une pipeline de reconnaissance automatisée.
Nuclei sait tester : des endpoints HTTP/HTTPS, des ports TCP/UDP, du DNS, des certificats SSL, des workflows multi-étapes, des injections (SQLi, SSTI, SSRF, XSS…), des configurations cloud, et bien plus.
Installation
Via Go (recommandé)
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
Via les binaires GitHub Releases
# Linux amd64
wget https://github.com/projectdiscovery/nuclei/releases/latest/download/nuclei_linux_amd64.zip
unzip nuclei_linux_amd64.zip
sudo mv nuclei /usr/local/bin/
Mise à jour des templates
nuclei -update-templates
Les templates sont stockés dans ~/.local/nuclei-templates/ (Linux) ou ~/nuclei-templates/.
Premiers pas avec Nuclei
Scanner une cible unique
# Scan rapide avec les templates par défaut
nuclei -u https://example.com
# Avec un niveau de sévérité minimum
nuclei -u https://example.com -severity medium,high,critical
# Afficher les résultats en JSON
nuclei -u https://example.com -json-export results.json
Scanner une liste de cibles
nuclei -list targets.txt -severity high,critical -o vuln_report.txt
Utiliser une catégorie de templates spécifique
# Uniquement les CVE
nuclei -u https://example.com -tags cve
# Uniquement les misconfigurations
nuclei -u https://example.com -tags misconfig
# Panneaux d'administration exposés
nuclei -u https://example.com -tags panel
# Expositions de fichiers sensibles
nuclei -u https://example.com -tags exposure
Lancer un template précis
nuclei -u https://example.com -t cves/2023/CVE-2023-44487.yaml
Reconnaissance avec subfinder
subfinder (également de ProjectDiscovery) est un outil d’énumération passive de sous-domaines. Il interroge des dizaines de sources (VirusTotal, Shodan, SecurityTrails, crt.sh, etc.) pour construire une liste exhaustive de sous-domaines.
Installation
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
Utilisation de base
# Énumérer les sous-domaines
subfinder -d example.com
# Sortie silencieuse (parfait pour les pipes)
subfinder -d example.com -silent
# Avec plus de sources (nécessite des clés API)
subfinder -d example.com -all -silent
One-liner subfinder → Nuclei
# Découverte de sous-domaines + scan Nuclei en un coup
subfinder -d example.com -silent | nuclei -tags cve,misconfig -severity medium,high,critical
# Avec filtre httpx pour ne garder que les hôtes actifs
subfinder -d example.com -silent | httpx -silent | nuclei -severity high,critical
# Pipe complet avec export JSON
subfinder -d example.com -silent \
| httpx -silent -status-code -title -tech-detect \
| awk '{print $1}' \
| nuclei -tags cve -severity high,critical -json-export nuclei_results.json
Reconnaissance avec assetfinder
assetfinder de Tom Hudson est un outil léger et rapide qui récupère des sous-domaines et des assets associés à un domaine via des sources publiques (crt.sh, HackerTarget, etc.).
Installation
go install github.com/tomnomnom/assetfinder@latest
Utilisation
# Tous les assets liés au domaine
assetfinder example.com
# Uniquement les sous-domaines directs
assetfinder --subs-only example.com
One-liner assetfinder → httpx → Nuclei
# Pipeline complet : sous-domaines → hôtes vivants → scan vulnérabilités
assetfinder --subs-only example.com \
| httpx -silent \
| nuclei -tags panel,exposure -severity medium,high,critical
# Couverture maximale : subfinder + assetfinder combinés
{ subfinder -d example.com -silent; assetfinder --subs-only example.com; } \
| sort -u \
| httpx -silent \
| nuclei -severity high,critical
Reconnaissance avec Amass
Amass (OWASP) est le couteau suisse de la reconnaissance DNS et réseau. Il va bien plus loin que la simple énumération passive : il effectue de la résolution DNS brute-force, du scraping web, et peut cartographier l’infrastructure d’une organisation.
Installation
go install -v github.com/owasp-amass/amass/v4/...@master
Modes d’utilisation
# Mode passif uniquement (discret, pas de requêtes directes)
amass enum -passive -d example.com
# Mode actif (résolution DNS + brute-force)
amass enum -active -d example.com
# Avec brute-force de sous-domaines
amass enum -brute -d example.com -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt
# Sortie vers fichier texte
amass enum -passive -d example.com -o amass_results.txt
One-liner Amass → Nuclei
# Pipeline Amass + Nuclei
amass enum -passive -d example.com -silent \
| httpx -silent \
| nuclei -tags cve,misconfig -severity high,critical
# Fusionner Amass, subfinder et assetfinder pour une recon maximale
{ amass enum -passive -d example.com -silent;
subfinder -d example.com -silent;
assetfinder --subs-only example.com; } \
| sort -u \
| tee all_subdomains.txt \
| httpx -silent -o live_hosts.txt
nuclei -list live_hosts.txt -severity medium,high,critical -o nuclei_report.txt
Découverte de paramètres avec ParamSpider
ParamSpider fouille des sources comme le Wayback Machine et Common Crawl pour extraire toutes les URLs avec paramètres GET connues pour un domaine. C’est indispensable avant de lancer des tests d’injection (XSS, SQLi, SSRF, Open Redirect…).
Installation
git clone https://github.com/devanshbatham/ParamSpider
cd ParamSpider
pip install -r requirements.txt
Utilisation
# Collecter les URLs avec paramètres
python3 paramspider.py -d example.com
# Avec exclusion d'extensions inutiles
python3 paramspider.py -d example.com --exclude jpg,png,css,js,svg
# Sortie dans un fichier
python3 paramspider.py -d example.com -o params_example.txt
One-liner ParamSpider → Nuclei
# Trouver les paramètres vulnérables (XSS, Open Redirect, SSRF...)
python3 paramspider.py -d example.com --quiet \
| nuclei -tags xss,redirect,ssrf -severity medium,high,critical
# Pipeline complet : recon paramètres + tests d'injection
python3 paramspider.py -d example.com -o params.txt --quiet
nuclei -list params.txt -t ~/nuclei-templates/dast/ -severity medium,high,critical -o dast_results.txt
One-liners avancés httpx + subfinder + Nuclei
httpx est le couteau suisse HTTP de ProjectDiscovery : il sonde rapidement des listes d’URLs/domaines, récupère les codes de statut, les titres, les technologies détectées, les headers, etc.
Installation
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
One-liners prêts à l’emploi
# 1. Recon complète + détection technos + scan CVE
subfinder -d example.com -silent \
| httpx -silent -title -status-code -tech-detect -follow-redirects \
| tee live_hosts_details.txt \
| awk '{print $1}' \
| nuclei -tags cve -severity high,critical
# 2. Chercher les interfaces d'admin exposées
subfinder -d example.com -silent \
| httpx -silent \
| nuclei -tags panel -severity info,low,medium,high,critical
# 3. Détecter les secrets et tokens exposés dans les réponses HTTP
subfinder -d example.com -silent \
| httpx -silent \
| nuclei -tags exposure,token,secret -severity medium,high,critical
# 4. Scanner les misconfigs cloud (S3, GCP, Azure)
subfinder -d example.com -silent \
| httpx -silent \
| nuclei -tags aws,gcp,azure,misconfig
# 5. Tester les CVE récentes sur toute une plage IP (CIDR)
echo "192.168.1.0/24" \
| httpx -silent \
| nuclei -tags cve -severity critical -rl 50
# 6. Scan multi-domaines depuis un fichier, résultats en JSON enrichi
cat domains.txt \
| subfinder -silent \
| httpx -silent -json \
| jq -r '.url' \
| nuclei -severity high,critical -json-export final_report.json
# 7. Chercher les endpoints de login par défaut
subfinder -d example.com -silent \
| httpx -silent \
| nuclei -t ~/nuclei-templates/default-logins/ -severity medium,high,critical
# 8. Fuzzing de chemins cachés + scan Nuclei
subfinder -d example.com -silent \
| httpx -silent \
| nuclei -tags fuzzing -severity medium,high,critical -headless
Intégration avec Shodan CLI
Shodan est le moteur de recherche des appareils connectés à Internet. Son CLI permet d’exporter des résultats directement en ligne de commande, que l’on peut ensuite passer à Nuclei pour un scan ciblé.
Installation du CLI Shodan
pip install shodan
shodan init VOTRE_CLE_API
Commandes Shodan de base
# Rechercher des hôtes exposant Apache
shodan search "apache" --fields ip_str,port --separator : | head -50
# Chercher des panneaux d'admin WordPress exposés
shodan search 'http.title:"WordPress" country:"FR"' --fields ip_str,port
# Obtenir les infos d'un hôte précis
shodan host 1.2.3.4
# Compter les résultats d'une requête
shodan count 'product:"nginx" country:"FR"'
One-liners Shodan → Nuclei
# 1. Récupérer des IPs Shodan et scanner avec Nuclei
shodan search 'http.title:"Dashboard" country:"FR"' --fields ip_str,port --separator : \
| awk -F: '{print "http://"$1":"$2}' \
| nuclei -tags panel,misconfig -severity medium,high,critical
# 2. Cibler les serveurs Jenkins exposés en France
shodan search 'product:"Jenkins" country:"FR"' --fields ip_str,port --separator : \
| awk -F: '{print "http://"$1":"$2}' \
| nuclei -tags jenkins -severity high,critical
# 3. Trouver les instances GitLab exposées
shodan search 'http.title:"GitLab" country:"FR"' --fields ip_str \
| httpx -silent \
| nuclei -tags gitlab -severity high,critical
# 4. Combiner Shodan + subfinder pour une recon exhaustive
shodan search 'ssl.cert.subject.cn:"example.com"' --fields ip_str \
| tee shodan_ips.txt
subfinder -d example.com -silent >> shodan_ips.txt
sort -u shodan_ips.txt | httpx -silent | nuclei -severity high,critical
# 5. Détecter les interfaces Grafana exposées
shodan search 'http.title:"Grafana" country:"FR"' --fields ip_str,port --separator : \
| awk -F: '{print "http://"$1":"$2}' \
| nuclei -tags grafana -severity medium,high,critical
Écrire son propre template Nuclei
La vraie puissance de Nuclei, c’est de pouvoir écrire ses propres règles. Voici un exemple de template pour détecter une page d’erreur PHP verbose :
id: php-error-verbose
info:
name: PHP Error Verbose
author: votre-pseudo
severity: low
description: Le serveur retourne des erreurs PHP détaillées, révélant potentiellement des chemins ou des variables internes.
tags: php,exposure,misconfig
http:
- method: GET
path:
- "{{BaseURL}}/index.php?debug=1"
matchers:
- type: word
words:
- "Fatal error"
- "Warning: "
- "Parse error"
condition: or
- type: status
status:
- 200
Pour lancer ce template :
nuclei -u https://example.com -t ./php-error-verbose.yaml
Bonnes pratiques et conseils
- Limitez le débit : utilisez
-rl(rate limit) pour ne pas saturer la cible et rester discret. Ex :-rl 50pour 50 requêtes/seconde. - Utilisez
-silentet-json-exportpour des pipelines propres et des rapports exploitables. - Mettez vos templates à jour régulièrement avec
nuclei -update-templates— de nouveaux CVE sont ajoutés quasi quotidiennement. - Testez sur vos propres infrastructures (VMs, lab, bug bounty programs) avant tout. Des plateformes comme HackTheBox, TryHackMe ou des programmes de bug bounty (HackerOne, Bugcrowd) offrent des cibles légales.
- Consultez la documentation officielle : docs.projectdiscovery.io
Conclusion
Nuclei est devenu un standard de facto dans le domaine de la sécurité offensive et défensive. Sa force réside dans sa capacité à s’intégrer dans des pipelines de reconnaissance automatisée : en quelques lignes, on peut enchaîner subfinder, assetfinder, Amass, httpx et Nuclei pour obtenir une cartographie complète des vulnérabilités d’une surface d’attaque.
Couplé à Shodan, il devient un outil d’une redoutable efficacité pour les pentesters, les chasseurs de bugs et les équipes de sécurité défensive qui veulent connaître leur exposition avant les attaquants.
N’oubliez jamais : ces outils sont des couteaux à double tranchant. Utilisez-les uniquement dans un cadre légal et éthique.