Accueil » Non classé » Nuclei : le scanner de vulnérabilités open source piloté par templates
Logo de Nuclei — Nuclei : le scanner de vulnérabilités open source piloté par templates

Nuclei : le scanner de vulnérabilités open source piloté par templates

Chaque semaine, de nouvelles vulnérabilités critiques sont publiées et exploitées en quelques jours, parfois en quelques heures. Pour une équipe sécurité, la question n’est plus seulement « sommes-nous vulnérables ? » mais « combien de temps nous faut-il pour le savoir sur l’ensemble de notre périmètre exposé ? ». Les scanners traditionnels, lourds et fermés, peinent à suivre ce rythme. C’est précisément le problème que cherche à résoudre Nuclei, le scanner open source de ProjectDiscovery, devenu en quelques années l’un des outils les plus utilisés par les pentesteurs, les équipes Red Team et les chasseurs de bugs.

Dans une démarche offensive, Nuclei intervient généralement juste après la phase de reconnaissance : une fois la surface d’attaque cartographiée avec un outil comme Amass, il s’agit de tester rapidement les actifs découverts contre des milliers de vérifications connues. Voici comment il fonctionne, comment l’installer et comment l’utiliser de façon maîtrisée.

Qu’est-ce que Nuclei ?

Nuclei est un scanner de vulnérabilités rapide et personnalisable, écrit en Go et distribué sous licence MIT. Sa particularité tient en une idée : toute la logique de détection est décrite dans des templates YAML, et non codée en dur dans le moteur. Chaque template décrit une requête (ou une suite de requêtes) à envoyer et les conditions qui permettent de conclure qu’une faille, une mauvaise configuration ou une exposition est présente.

Le projet est maintenu par ProjectDiscovery, l’éditeur à l’origine d’autres outils bien connus de la communauté offensive comme subfinder, httpx ou naabu. Le dépôt GitHub de Nuclei dépasse les 32 000 étoiles, et la version majeure actuelle est la branche v3.

Nuclei permet notamment de détecter :

  • des CVE connues sur des applications web, des équipements réseau ou des logiciels exposés ;

  • des mauvaises configurations (pages d’administration accessibles, en-têtes de sécurité absents, répertoires listables) ;

  • des expositions de fichiers sensibles (sauvegardes, fichiers de configuration, journaux) ;

  • des identifiants par défaut et des panneaux de connexion ;

  • des erreurs de configuration cloud et des problèmes de certificats SSL/TLS.

Architecture et fonctionnement

L’architecture de Nuclei repose sur deux éléments distincts : le moteur, qui exécute les requêtes de manière massivement parallèle, et la bibliothèque de templates, hébergée dans le dépôt communautaire projectdiscovery/nuclei-templates, lui aussi sous licence MIT. Cette bibliothèque compte aujourd’hui près de 12 000 fichiers, dont environ 1 500 templates liés aux vulnérabilités activement exploitées recensées dans les catalogues KEV (CISA KEV et VulnCheck KEV).

Les templates sont organisés par type de protocole : http (de loin le plus fourni), dns, network, ssl, file, headless, javascript, code, cloud ou encore dast pour le fuzzing d’applications. Des workflows permettent d’enchaîner plusieurs templates de manière conditionnelle, par exemple en ne lançant des tests spécifiques à WordPress que si la technologie a été détectée.

Chaque template contient trois blocs principaux :

  • info : identifiant, nom, auteur, sévérité (info, low, medium, high, critical) et tags ;

  • la requête : méthode, chemin, en-têtes, corps, ou payloads selon le protocole ;

  • les matchers et extractors : conditions sur le code de retour, le contenu, les en-têtes ou des expressions DSL, et extraction de données utiles (versions, jetons…).

Cette approche déclarative a un avantage majeur : lorsqu’une nouvelle CVE est publiée, la communauté peut proposer un template par pull request en quelques heures, sans attendre une nouvelle version du moteur. Les templates simulent les étapes réelles d’exploitation pour confirmer la vulnérabilité, ce qui réduit sensiblement les faux positifs par rapport à une simple comparaison de numéros de version.

Le projet propose également des fonctions plus récentes : génération d’un template à partir d’une description en langage naturel (option -ai) et envoi des résultats vers la plateforme cloud de ProjectDiscovery (option -dashboard), qui dispose d’une offre gratuite et d’éditions payantes pour les équipes.

Installation

Nuclei est distribué sous forme de binaire unique pour Linux, macOS et Windows, téléchargeable depuis la page des releases GitHub. L’installation par les sources nécessite une version récente de Go. Il est aussi disponible via Homebrew et sous forme d’image Docker officielle, pratique pour l’intégrer à une chaîne CI/CD sans rien installer sur l’hôte. Au premier lancement, Nuclei télécharge automatiquement la bibliothèque de templates.

# Installation via Go (version récente de Go requise)
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest

# Ou via Homebrew (macOS / Linux)
brew install nuclei

# Ou via Docker
docker pull projectdiscovery/nuclei:latest
docker run --rm projectdiscovery/nuclei:latest -u https://cible-autorisee.example.com

# Vérifier la version installée
nuclei -version

# Mettre à jour le moteur, puis les templates
nuclei -update
nuclei -update-templates

Utilisation au quotidien

La commande de base consiste à cibler une URL avec l’option -u : Nuclei exécute alors l’ensemble des templates applicables. En pratique, il est préférable de filtrer pour obtenir des résultats exploitables et maîtriser la charge générée sur la cible. Les options les plus utiles sont :

  • -l : scanner une liste de cibles depuis un fichier ;

  • -severity : ne retenir que certaines sévérités (par exemple critical,high) ;

  • -tags et -etags : inclure ou exclure des familles de templates (cve, misconfig, exposure, dos…) ;

  • -t : exécuter un template ou un répertoire de templates précis ;

  • -as : scan automatique qui détecte d’abord les technologies (via Wappalyzer) puis ne lance que les templates correspondants ;

  • -rl et -c : limiter le nombre de requêtes par seconde et le nombre de templates exécutés en parallèle ;

  • -o et -jsonl : enregistrer les résultats, au format JSON Lines pour une exploitation automatisée.

Nuclei s’intègre naturellement dans une chaîne d’outils ProjectDiscovery : subfinder énumère les sous-domaines, httpx identifie les services web actifs, et Nuclei teste le tout. L’écriture de templates maison est également simple : l’exemple ci-dessous détecte la présence d’un en-tête X-Powered-By, qui divulgue inutilement la technologie utilisée par un serveur.

# Scan simple d'une cible autorisée
nuclei -u https://app.example.com

# Liste de cibles, uniquement les vulnérabilités critiques et élevées
nuclei -l cibles.txt -severity critical,high -o resultats.txt

# Filtrer par tags, exclure les tests intrusifs, sortie JSON Lines
nuclei -u https://app.example.com -tags cve,misconfig -etags dos,fuzz -jsonl -o resultats.jsonl

# Scan automatique basé sur la détection des technologies
nuclei -u https://app.example.com -as

# Limiter la charge : 50 requêtes/s, 10 templates en parallèle
nuclei -l cibles.txt -rl 50 -c 10

# Chaîne de reconnaissance ProjectDiscovery
subfinder -d example.com -silent | httpx -silent | nuclei -severity high,critical

# --- Template personnalisé : mon-template.yaml ---
id: azur-x-powered-by
info:
  name: Divulgation de technologie via X-Powered-By
  author: azursecure
  severity: info
  tags: misconfig,exposure
http:
  - method: GET
    path:
      - "{{BaseURL}}"
    matchers:
      - type: regex
        part: header
        regex:
          - "(?i)x-powered-by"

# Valider puis exécuter le template
nuclei -t mon-template.yaml -validate
nuclei -u https://app.example.com -t mon-template.yaml

Comparaison avec les alternatives

Nuclei n’a pas vocation à remplacer tous les outils offensifs ; il occupe une place bien précise dans la boîte à outils.

  • Face aux scanners d’infrastructure (OpenVAS/Greenbone, Nessus) : ces solutions excellent dans l’audit authentifié de systèmes et la gestion de parc. Nuclei est plus léger, plus rapide à déployer et plus réactif sur les CVE web récentes, mais ne propose pas nativement de gestion de parc ni de rapports de conformité.

  • Face à Burp Suite : Burp reste la référence pour l’analyse manuelle approfondie d’une application (proxy, répéteur, logique métier). Nuclei automatise la détection de failles connues à grande échelle ; les deux sont complémentaires, et Burp Suite peut d’ailleurs servir à affiner une requête avant de la transformer en template.

  • Face à Nikto : Nikto effectue des vérifications web classiques avec une base de tests intégrée. Nuclei se distingue par son modèle de templates ouvert, sa base communautaire beaucoup plus active et sa couverture multi-protocoles.

  • Face aux outils d’exploitation : Nuclei détecte et confirme, mais n’a pas pour objectif de fournir des charges d’exploitation complètes comme un framework de post-exploitation.

Bonnes pratiques

  • Toujours disposer d’une autorisation écrite : scanner un système sans accord explicite de son propriétaire est illégal (article 323-1 du Code pénal). Définissez le périmètre, les horaires et les contacts d’urgence avant tout lancement.

  • Maîtriser la charge : utilisez -rl et -c, excluez les tags dos et fuzz en production, et prévenez les équipes d’exploitation et le SOC.

  • Mettre à jour les templates avant chaque campagne : la valeur de Nuclei réside dans la fraîcheur de sa base, en particulier pour les vulnérabilités activement exploitées.

  • Relire les templates tiers : les templates de type code ou provenant de dépôts non officiels peuvent exécuter des actions sur la machine qui lance le scan. N’utilisez que des sources de confiance.

  • Qualifier les résultats : un résultat Nuclei est un indicateur fort, pas un rapport final. Vérifiez manuellement les découvertes critiques avant de les remonter.

  • Industrialiser : exportez en JSONL vers votre SIEM ou votre outil de suivi, et planifiez des scans réguliers de votre surface exposée pour détecter les régressions.

Pour vous entraîner dans un cadre légal, les travaux pratiques de notre cours Gestion de la cybersécurité proposent des exercices de collecte d’informations et de tests de sécurité en environnement contrôlé.

Conclusion

Nuclei a profondément changé la manière de détecter les vulnérabilités connues : un moteur rapide, une bibliothèque de près de 12 000 templates alimentée par la communauté, et la possibilité d’écrire ses propres vérifications en quelques lignes de YAML. Pour une équipe de pentest comme pour un RSSI qui veut contrôler en continu sa surface d’attaque, c’est un outil gratuit, sous licence MIT, qui mérite sa place dans la chaîne de sécurité, à condition de l’utiliser dans un cadre autorisé et maîtrisé.

À lire aussi : Metasploit : l’outil culte des hackers éthiques · SpiderFoot : un outil polyvalent de reconnaissance automatisée

Partagez cet article !
Défiler vers le haut