Guide pratique complet de Nikto, le scanner de vulnérabilités web open source : installation, options -Tuning, évasion WAF, scan via Burp Suite, interprétation des résultats OSVDB et comparaison avec OWASP ZAP et Burp Suite.
Nikto est le scanner de vulnérabilités web open source de référence depuis sa création par Chris Sullo en 2001. Écrit en Perl et maintenu activement sur GitHub, il embarque une base de données de plus de 6 700 tests couvrant les fichiers sensibles exposés, les configurations serveur dangereuses, les versions logicielles obsolètes et les headers de sécurité manquants. Nikto est pré-installé dans Kali Linux et Parrot OS, ce qui en fait l'outil de scan web le plus accessible pour les pentesters débutants et les analystes sécurité en charge d'audits rapides. Contrairement aux scanners commerciaux (Nessus, Qualys), Nikto ne prétend pas être discret — il est volontairement bruyant et génère de nombreuses requêtes HTTP, ce qui le rend facilement détectable par les WAF et les systèmes de monitoring réseau. Cette caractéristique en fait un outil parfaitement adapté aux pentests autorisés où la discrétion n'est pas un objectif, et aux audits de configuration basiques en interne. Ce guide couvre l'installation, toutes les options importantes, le tuning des scans, l'évasion WAF, l'interprétation des résultats, les intégrations avec Burp Suite et les comparaisons avec OWASP ZAP. Utilisez Nikto uniquement sur des systèmes dont vous êtes propriétaire ou pour lesquels vous disposez d'une autorisation écrite explicite.
Présentation de Nikto : Architecture, Base de Données et Cas d'Usage
Nikto est un scanner web en ligne de commande écrit en Perl, disponible sous licence GPL. Son architecture repose sur un moteur de tests modulaire alimenté par des fichiers de base de données au format texte (databases/), ce qui facilite l'ajout de nouvelles règles sans modifier le code principal. La base de données principale (db_tests) contient les tests génériques, complétée par des bases spécialisées pour les cookies (db_cookies), les fichiers (db_filenames), les headers (db_headers) et les CVE référencées.
Ce que Nikto détecte :
- Fichiers sensibles exposés :
.git/,.env,phpinfo.php,backup.zip,wp-config.php.bak - Headers de sécurité manquants : X-Frame-Options, Content-Security-Policy, X-Content-Type-Options, Strict-Transport-Security, Permissions-Policy
- Versions logicielles obsolètes : Apache, Nginx, PHP, IIS, Tomcat, WordPress avec numéro de version exposé
- Configurations dangereuses : directory listing activé, méthodes HTTP non restreintes (PUT, DELETE, TRACE), authentication bypasses connus
- Vulnérabilités CVE connues référencées par OSVDB (Open Source Vulnerability Database)
- Fichiers de configuration de CMS : WordPress, Joomla, Drupal, Magento
Cas d'usage appropriés : audit de configuration rapide avant livraison d'un site en production, vérification des headers de sécurité, scan initial lors d'un pentest web pour identifier les "low-hanging fruits", audit de parcs de serveurs internes dans le cadre d'un programme de gestion des vulnérabilités.
Cas d'usage inappropriés : test de logique applicative (injection, XSS persistant, IDOR — utilisez Burp Suite), crawl d'une application React/Angular (Nikto ne parse pas le JavaScript), audit furtif (utilisez OWASP ZAP avec throttling).
Installation de Nikto : Kali Linux, Ubuntu et depuis GitHub
Nikto est pré-installé dans Kali Linux et Parrot OS — vérifiez la version avec nikto -Version. Pour les autres distributions :
Installation Ubuntu/Debian :
# Via apt (version packagée, peut être légèrement en retard)
apt update && apt install nikto
# Vérification
nikto -Version
# Nikto v2.1.6 ou supérieur
Installation depuis les sources GitHub (version la plus récente) :
git clone https://github.com/sullo/nikto.git
cd nikto/program
perl nikto.pl -Version
# Ou via Docker
docker pull sullo/nikto
docker run --rm sullo/nikto -h http://target.com
Les prérequis Perl sont minimes : Net::SSLeay pour HTTPS et LWP::UserAgent pour les requêtes HTTP. Sur Ubuntu, installez-les avec cpan Net::SSLeay si apt ne les fournit pas automatiquement.
Mise à jour de la base de données :
nikto -update
# Télécharge les dernières signatures depuis le dépôt CIRT.net
Scan de Base et Options Essentielles
Scan minimal :
nikto -h http://target.com
Cette commande déclenche un scan complet sur le port 80 avec les options par défaut. La durée varie de 2 à 30 minutes selon la vitesse du serveur et le nombre de tests.
Options de base essentielles :
# Scan HTTPS
nikto -h https://target.com -ssl
# Port non-standard
nikto -h target.com -port 8443 -ssl
# Authentification HTTP Basic
nikto -h http://target.com -id admin:password
# Authentification NTLM (Windows/IIS)
nikto -h http://intranet.company.com -id domain\user:password
# Tous les tests (-C all pour all CGI tests)
nikto -h http://target.com -C all
# Générer un rapport HTML
nikto -h http://target.com -output /tmp/scan_target.html -Format html
# Rapport CSV (pour import dans des outils de ticketing)
nikto -h http://target.com -output /tmp/scan_target.csv -Format csv
# Rapport XML (pour intégration CI/CD)
nikto -h http://target.com -output /tmp/scan_target.xml -Format xml
Tuning des Scans avec l'Option -Tuning
L'option -Tuning permet de sélectionner des catégories de tests spécifiques, réduisant le temps de scan et les faux positifs. Elle accepte des chiffres de 0 à 9 et des lettres :
Catégories disponibles :
0 - File Upload (test upload de fichiers)
1 - Interesting File (fichiers intéressants : .git, .svn, backup)
2 - Misconfiguration (directory listing, méthodes HTTP)
3 - Information Disc. (disclosure de version, phpinfo)
4 - Injection (XSS, SQL injection basiques)
5 - Remote File Retrieval - Inside Web Root
6 - Denial of Service (ATTENTION: peut impacter la cible)
7 - Remote File Retrieval - Server Wide
8 - Command Exec. (shell, reverse shell)
9 - SQL Injection (tests SQLi spécifiques)
a - Authentication (bypass d'authentification)
b - Software ID (fingerprinting frameworks)
c - Remote Source Inclusion
# Scan axé fichiers sensibles uniquement (rapide)
nikto -h http://target.com -Tuning 1
# Scan sécurité headers + misconfiguration
nikto -h http://target.com -Tuning 23
# Scan complet sans DoS et sans injection (raisonnable en prod)
nikto -h http://target.com -Tuning 01234789abc
Évitez la catégorie 6 (DoS) sur des systèmes de production — même un scan de vulnérabilités peut provoquer une instabilité sur des serveurs fragiles.
Scan derrière Proxy Burp Suite et Intégration Pentest
L'intégration de Nikto avec Burp Suite est une combinaison classique en pentest : Nikto génère un volume important de requêtes de scan, Burp les capture dans son historique pour analyse manuelle ultérieure.
# Démarrer Burp Suite en mode proxy (127.0.0.1:8080)
# Puis lancer Nikto via le proxy
nikto -h http://target.com -useproxy http://127.0.0.1:8080
# Pour HTTPS avec Burp (certificat Burp doit être installé)
nikto -h https://target.com -useproxy http://127.0.0.1:8080 -ssl
Cette approche présente deux avantages : Burp capture toutes les requêtes pour un replay manuel, et vous pouvez utiliser les plugins Burp pour analyser automatiquement les réponses Nikto à la recherche de patterns supplémentaires.
Pour un audit web complet, Nikto est généralement la première étape : il identifie rapidement les vulnérabilités évidentes. Les résultats alimentent ensuite le pentest réseau plus approfondi avec des outils comme Burp Suite ou OWASP ZAP.
Évasion WAF : Options -evasion et Techniques d'Obfuscation
Les WAF (Web Application Firewalls) détectent et bloquent facilement les scans Nikto par défaut à cause des patterns de requêtes reconnaissables. L'option -evasion propose plusieurs techniques d'obfuscation :
Techniques d'évasion disponibles (cumulables) :
1 - Random URL encoding (non-UTF8) → /php%69nfo.php
2 - Directory self-reference (/./) → /./phpinfo.php
3 - Premature URL ending → /%2F../phpinfo.php
4 - Prepend long random string → /AAAAAA...phpinfo.php
5 - Fake parameter → /phpinfo.php?A=B
6 - TAB as request spacer → GET/phpinfo.php HTTP/1.0
7 - Change the case of the URL → /PhPiNfO.pHp
8 - Windows directory separator → \phpinfo.php
A - Use carriage return (%0d) (header manipulation)
B - Use binary value 0x0b as spacer
# Combinaison d'évasion basique
nikto -h http://target.com -evasion 12
# Évasion plus agressive
nikto -h http://target.com -evasion 1245
# User-Agent custom pour contourner les blacklists
nikto -h http://target.com -useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
Attention : les techniques d'évasion peuvent réduire la fiabilité des résultats — certains tests ne fonctionnent qu'avec des URL non-obfusquées. Utilisez d'abord un scan standard, puis relancez avec évasion sur les serveurs protégés par WAF.
Interprétation des Résultats Nikto
La sortie Nikto suit un format structuré :
+ Server: Apache/2.4.51 (Ubuntu)
+ The X-XSS-Protection header is not defined.
+ The X-Content-Type-Options header is not set.
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /phpinfo.php: Output from the phpinfo() function was found.
+ OSVDB-3268: /uploads/: Directory indexing found.
+ /backup.zip: Backup file found.
+ OSVDB-17292: /.git/HEAD: Git repository found.
+ 8073 requests: 0 error(s) and 7 item(s) reported on remote host
Interprétation par type de finding :
OSVDB-XXXX : référence à la base Open Source Vulnerability Database (archive, mais toujours utilisée dans Nikto). Ces IDs identifient des vulnérabilités ou configurations connues. Recherchez l'OSVDB-ID dans des bases CVE modernes pour les détails complets.
Headers manquants : X-Frame-Options manquant → risque Clickjacking. X-Content-Type-Options manquant → risque MIME-type sniffing. Strict-Transport-Security manquant → risque downgrade HTTPS. Content-Security-Policy manquant → risque XSS. Ces findings sont systématiquement présents et constituent des "quick wins" de remédiation.
Fichiers sensibles : /.git/HEAD exposé signifie que le dépôt Git est accessible — un attaquant peut télécharger le code source complet via git clone depuis l'URL racine. /phpinfo.php expose la configuration PHP complète incluant les paths serveur, extensions actives et variables d'environnement. /backup.zip contient potentiellement le code source et des credentials.
Directory listing : OSVDB-3268 indique que le listing de répertoire est activé — l'attaquant peut naviguer dans l'arborescence du serveur comme dans un FTP.
Faux Positifs Courants et Qualification des Résultats
Nikto génère des faux positifs — des findings qui semblent critiques mais ne le sont pas dans le contexte de la cible. La qualification manuelle est indispensable avant de les inclure dans un rapport de pentest.
Exemples de faux positifs fréquents :
- Nikto signale "Apache/2.4.51 est vulnérable" → vérifiez si la distribution a backporté les correctifs de sécurité. Ubuntu/Debian/RHEL appliquent des patchs de sécurité sans changer le numéro de version — Apache 2.4.51 Ubuntu peut inclure les fixes de 2.4.57.
- Nikto signale un fichier inexistant comme trouvé → certains serveurs retournent 200 OK pour n'importe quelle URL (soft 404). Nikto détecte ces patterns mais peut manquer des cas edge.
- Headers CORS signalés comme dangereux → vérifiez si
Access-Control-Allow-Origin: *est intentionnel (API publique) ou accidentel.
Pour qualifier chaque finding, testez manuellement dans le navigateur ou avec curl :
curl -I https://target.com/.git/HEAD
curl -I https://target.com/phpinfo.php
# Une réponse 200 confirme le finding
Rapport HTML : Structure et Présentation dans un Pentest
Le rapport HTML de Nikto est structuré avec une en-tête de métadonnées (hôte, IP, date de scan, serveur) et une liste de findings avec code OSVDB, description et URL affectée.
nikto -h https://target.com -ssl -output /tmp/pentest_target.html -Format htm
Dans un rapport de pentest professionnel, les findings Nikto doivent être :
- Qualifiés : confirmés manuellement, avec preuve (screenshot, curl output)
- Contextualisés : impact réel sur la cible (phpinfo.php sur un serveur interne non-accessible ≠ phpinfo.php sur un serveur public)
- Dédupliqués : Nikto signale parfois le même finding plusieurs fois sous des OSVDB différents
- Classifiés CVSS : attribuez un score CVSS 3.1 à chaque vulnérabilité confirmée
Un scanner de vulnérabilités complémentaire comme ceux couverts dans notre article sur Nessus et Greenbone permet de couvrir aussi les vulnérabilités au niveau réseau et système.
Comparaison Nikto vs OWASP ZAP vs Burp Suite
Nikto : rapide, simple, idéal pour les scans passifs de configuration et les fichiers exposés. Pas de JavaScript crawling, pas d'authentification complexe, bruyant. Parfait pour les quick wins en début de pentest.
OWASP ZAP : scanner dynamique avec spider JavaScript, support d'authentification complexe (forms, OAuth), mode actif pour les injections (XSS, SQLi). Interface graphique et mode démon pour CI/CD. Plus lent que Nikto mais beaucoup plus complet pour les applications web modernes.
Burp Suite : outil de pentest web professionnel (version Community gratuite, Pro à 449 USD/an). Scanner actif dans la version Pro, proxy intercept puissant, extensions (Turbo Intruder, AuthMatrix). Référence pour les tests manuels approfondis.
Recommandation de workflow : Nikto (scan initial 15 min) → OWASP ZAP (spider + scan actif 1-2h) → Burp Suite (tests manuels ciblés sur les findings). Cette approche combine l'efficacité de Nikto pour les détections rapides et la profondeur de ZAP/Burp pour les vulnérabilités applicatives complexes.
Pour les scans de pentests complets incluant la couche réseau, notre guide sur les outils MITM Bettercap et Ettercap complète l'approche web-only de Nikto.
À retenir
- Nikto couvre 6700+ tests de configuration et fichiers sensibles — idéal pour les "quick wins" en début de pentest web
- Utilisez -Tuning pour cibler les catégories pertinentes et réduire les faux positifs
- Nikto est intentionnellement bruyant — utilisez -evasion uniquement si vous avez l'autorisation de tester les défenses WAF
- Qualifiez manuellement chaque finding avant de l'inclure dans un rapport : 20-30% des findings Nikto sont des faux positifs
Questions fréquentes sur Nikto
Nikto peut-il être utilisé pour tester un site en production ?
Oui, mais avec précautions. Nikto peut générer des erreurs dans les logs applicatifs et potentiellement déclencher des alertes de sécurité côté serveur. En mode default, il ne tente pas d'exploiter les vulnérabilités — il se contente d'observer les réponses HTTP. Pour un scan en production, utilisez les options de throttling implicites (Nikto n'est pas excessivement rapide par défaut) et évitez la catégorie 6 (DoS). Planifiez le scan hors heures de pointe et informez l'équipe ops. Obtenez toujours une autorisation écrite avant de scanner un système en production.
Quelle est la différence entre Nikto et un scanner de ports comme Nmap ?
Nmap est un scanner réseau qui identifie les ports ouverts, les services et les versions de services. Nikto est un scanner web qui teste spécifiquement les applications HTTP/HTTPS pour des vulnérabilités et configurations dangereuses. Ils sont complémentaires : Nmap d'abord pour identifier les ports web ouverts (80, 443, 8080, 8443), puis Nikto sur chaque port HTTP découvert. Le script NSE http-nikto de Nmap permet d'intégrer Nikto directement dans un scan Nmap pour automatiser cette chaîne.
Nikto peut-il tester les injections SQL ou XSS ?
Nikto inclut des tests basiques d'injection SQL (catégorie 9) et XSS (catégorie 4), mais ils sont très limités comparés à un scanner dédié. Il teste des patterns préfixés connus et des payloads simples, sans analyse contextuelle. Pour une couverture sérieuse des injections SQL, utilisez sqlmap. Pour les XSS réfléchis et stockés, OWASP ZAP en mode actif ou Burp Suite Pro sont bien plus efficaces. Nikto pour les injections doit être considéré comme un test de premier niveau uniquement.
Besoin d'un audit de sécurité de votre application web ?
Ayi NEDJIMI réalise des audits de sécurité applicatifs incluant scans automatisés et tests manuels approfondis. Rapport détaillé avec plan de remédiation priorisé.
Demander un devis auditÀ propos de l'auteur
Ayi NEDJIMI
Auditeur Senior Cybersécurité & Consultant IA
Expert Judiciaire — Cour d'Appel de Paris
Habilitation Confidentiel Défense
ayi@ayinedjimi-consultants.fr
Ayi NEDJIMI est un vétéran de la cybersécurité avec plus de 25 ans d'expérience sur des missions critiques. Ancien développeur Microsoft à Redmond sur le module GINA (Windows NT4) et co-auteur de la version française du guide de sécurité Windows NT4 pour la NSA.
À la tête d'Ayi NEDJIMI Consultants, il réalise des audits Lead Auditor ISO 42001 et ISO 27001, des pentests d'infrastructures critiques, du forensics et des missions de conformité NIS2 / AI Act.
Conférencier international (Europe & US), il a formé plus de 10 000 professionnels.
Domaines d'expertise
Ressources & Outils de l'auteur
Testez vos connaissances
Mini-quiz de certification lié à cet article — propulsé par CertifExpress
Articles connexes
WPScan 2026 : Guide Complet pour Auditer et Sécuriser un Site WordPress
Guide WPScan complet 2026 : installation, API token, énumération plugins/thèmes/utilisateurs vulnérables, brute force XML-RPC, options de discrétion et recommandations de hardening WordPress post-audit.
OPNsense vs pfSense 2026 : Comparatif Complet pour Choisir Votre Firewall Open Source
Comparatif exhaustif OPNsense vs pfSense en 2026 : base OS (HardenedBSD vs FreeBSD), API REST, WireGuard natif, ZFS, cycles de release et licences. Recommandations selon votre cas d'usage — PME, MSP, opérateur ou laboratoire de sécurité.
OPNsense : Guide Complet d'Installation et Configuration du Firewall Open Source
OPNsense est le firewall open source de référence en 2026, basé sur HardenedBSD avec ZFS, WireGuard natif et une API REST complète. Ce guide complet couvre l'installation, la configuration des interfaces, les règles firewall, les VLAN 802.1Q, le VPN, Suricata IDS/IPS et la haute disponibilité CARP.
Un projet cybersécurité ? Parlons-en.
Pentest, conformité NIS 2, ISO 27001, audit IA, RSSI externalisé… nos experts répondent sous 24h pour évaluer votre besoin et vous proposer un accompagnement sur mesure.
Commentaires
Aucun commentaire pour le moment. Soyez le premier à commenter !
Laisser un commentaire