Introduction
Nikto est un scanner de serveurs web open-source populaire qui effectue des tests complets sur les serveurs web pour plusieurs éléments, notamment plus de 6700 fichiers/programmes potentiellement dangereux, des vérifications de versions obsolètes pour plus de 1250 serveurs, et des problèmes spécifiques à la version sur plus de 270 serveurs.
Bien que Nikto soit puissant, les analyses peuvent parfois échouer, produire des résultats inattendus ou nécessiter une investigation plus approfondie. Dans ces situations, les fonctionnalités de débogage de Nikto sont inestimables. Elles vous permettent de voir les requêtes HTTP exactes envoyées et les réponses reçues, vous aidant ainsi à identifier les problèmes réseau, les mauvaises configurations du serveur ou les problèmes liés à l'analyse elle-même.
Dans ce laboratoire, vous apprendrez à utiliser les options de débogage de Nikto pour dépanner et comprendre efficacement vos analyses de vulnérabilités web.
Exécuter une analyse avec l'option -debug
Dans cette étape, vous allez effectuer une analyse Nikto de base en utilisant l'option -debug. Cette option fournit une sortie très détaillée, montrant les détails complets de chaque requête envoyée par Nikto et la réponse correspondante du serveur. C'est la première et la plus cruciale étape pour le dépannage de toute analyse.
Tout d'abord, assurez-vous d'être dans le répertoire ~/project. Nous avons déjà configuré un serveur web simple fonctionnant sur 127.0.0.1 au port 8000 que vous pouvez analyser.
Exécutez la commande suivante pour lancer Nikto avec l'option -debug contre le serveur web local :
nikto -h http://127.0.0.1:8000 -debug
Vous verrez une grande quantité de sortie défiler. Ce sont les informations de débogage. Elles incluent les résultats standard de l'analyse Nikto mélangés à des données détaillées de requêtes et de réponses.
Une petite partie de la sortie ressemblera à ceci, montrant la communication HTTP brute :
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI directories found (use '-C all' to force check all possible dirs)
DEBUG: User-Agent is 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
DEBUG: Request -> 127.0.0.1:8000
GET / HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Accept-Encoding: gzip,deflate
Accept: */*
DEBUG: Response -> 127.0.0.1:8000
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.10.12
Date: ...
Content-type: text/html; charset=utf-8
Content-Length: 36
Last-Modified: ...
DEBUG: Received: <h1>Welcome to the Test Site</h1>
... (many more lines) ...
Cette vue détaillée est essentielle pour comprendre exactement ce que Nikto teste.
Observer les informations détaillées de requête et de réponse
Dans cette étape, vous allez examiner de plus près la sortie générée à l'étape précédente. Le volume d'informations de débogage peut être écrasant, il est donc utile d'utiliser un outil de pagination comme less pour l'examiner.
Exécutons à nouveau la commande, mais cette fois, nous allons rediriger la sortie vers less. Cela vous permet de faire défiler la sortie page par page.
nikto -h http://127.0.0.1:8000 -debug | less
Une fois que la sortie apparaît dans less, vous pouvez utiliser les touches suivantes pour naviguer :
- Touches fléchées ou j/k pour faire défiler vers le haut et vers le bas.
- Page Up/Page Down ou barre d'espace pour avancer par pages.
- q pour quitter et revenir à l'invite de commande.
Pendant que vous faites défiler, prêtez attention à ces parties clés de la sortie de débogage pour chaque test :
DEBUG: Request ->: Cette section montre la requête HTTP exacte envoyée, y compris la méthode (GET, POST, etc.), l'URI et tous les en-têtes (headers).DEBUG: Response ->: Ceci montre les en-têtes de réponse du serveur, y compris le code d'état HTTP (par exemple,200 OK,404 Not Found).DEBUG: Received:: Ceci montre le corps de la réponse HTTP du serveur.
En examinant ces informations, vous pouvez vérifier si le serveur répond comme prévu, si un pare-feu bloque les requêtes, ou si Nikto interprète correctement une réponse.
Appuyez sur q pour quitter less lorsque vous avez terminé l'observation.
Rediriger la sortie de débogage vers un fichier pour une analyse ultérieure
Dans cette étape, vous apprendrez comment enregistrer la sortie de débogage détaillée dans un fichier. Pour les analyses longues ou complexes, l'analyse de la sortie en temps réel est peu pratique. L'enregistrer dans un fichier permet une analyse hors ligne, une recherche et un partage avec les membres de l'équipe.
Les informations de débogage de Nikto sont envoyées au flux Standard Error (STDERR), tandis que les résultats normaux vont au Standard Output (STDOUT). Pour tout capturer, vous devez rediriger les deux flux vers un fichier.
Utilisez la commande suivante pour exécuter l'analyse et enregistrer toute la sortie dans un fichier nommé debug_output.txt :
nikto -h http://127.0.0.1:8000 -debug > debug_output.txt 2>&1
Décomposons la partie redirection :
>: C'est l'opérateur de redirection de sortie standard. Il envoie STDOUT versdebug_output.txt.2>&1: Ceci redirige STDERR (descripteur de fichier 2) vers le même emplacement que STDOUT (descripteur de fichier 1), qui est notre fichier.
Une fois la commande terminée, vérifiez que le fichier a été créé :
ls -l debug_output.txt
Vous devriez voir le fichier listé dans la sortie :
-rw-r--r-- 1 labex labex ... ... debug_output.txt
Vous pouvez maintenant examiner le contenu du fichier en utilisant cat ou less :
less debug_output.txt
Vous disposez maintenant d'un enregistrement permanent de l'analyse et de ses informations de débogage pour un examen détaillé. Appuyez sur q pour quitter less.
Utiliser -dbcheck pour vérifier la syntaxe des bases de données de scan
Dans cette étape, vous utiliserez l'option -dbcheck. Il s'agit d'un outil de diagnostic qui n'effectue pas de scan mais vérifie la syntaxe des bases de données internes et des plugins de Nikto. Si Nikto plante, ne démarre pas ou se comporte de manière erratique, l'exécution d'une vérification de la base de données est une bonne première étape pour s'assurer que ses propres fichiers ne sont pas corrompus.
Les bases de données contiennent les définitions de toutes les vérifications de vulnérabilité que Nikto effectue. Une erreur de syntaxe dans l'un de ces fichiers pourrait entraîner l'échec silencieux des tests ou le plantage complet du programme.
Pour effectuer la vérification, exécutez la commande suivante :
nikto -dbcheck
Nikto analysera ses fichiers de plugins et ses bases de données. Si tout est correct, la sortie confirmera qu'aucune erreur n'a été trouvée.
- Nikto v2.5.0
---------------------------------------------------------------------------
+ DBCheck: Parsing database '/var/lib/nikto/plugins/db_variables'
+ DBCheck: Parsing database '/var/lib/nikto/plugins/db_tests'
... (beaucoup plus de lignes) ...
+ DBCheck: 0 error(s) found in database.
Si des erreurs étaient trouvées, la sortie indiquerait le fichier et le numéro de ligne spécifiques, ce qui vous aiderait à résoudre le problème (ou à réinstaller Nikto si nécessaire). Cette commande simple peut vous faire gagner beaucoup de temps lors du dépannage de l'outil lui-même.
Dépanner un scan échoué à l'aide de la sortie de débogage
Dans cette étape, vous appliquerez ce que vous avez appris à un scénario de dépannage pratique. Nous allons simuler un problème courant : un scan qui échoue car l'hôte cible est inaccessible. Sans la sortie de débogage, la cause pourrait ne pas être immédiatement évidente.
Nous allons tenter de scanner une adresse IP inexistante sur le réseau local, 10.255.255.1. Nous utiliserons également -maxtime 10s pour garantir que le scan se termine rapidement.
Exécutez la commande suivante :
nikto -h 10.255.255.1 -maxtime 10s -debug
Observez attentivement la sortie. Comme l'hôte n'existe pas, Nikto ne pourra pas établir de connexion. La sortie de débogage montrera clairement ces tentatives et échecs de connexion.
Vous verrez des messages d'erreur comme celui-ci disséminés dans le journal de débogage :
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 10.255.255.1
+ Target Hostname: 10.255.255.1
+ Target Port: 80
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: No banner retrieved
DEBUG: Request -> 10.255.255.1:80
GET / HTTP/1.1
Host: 10.255.255.1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Accept-Encoding: gzip,deflate
Accept: */*
+ ERROR: Cannot connect to 10.255.255.1:80 (No route to host)
...
Le message clé ici est ERROR: Cannot connect... (No route to host). Cela vous indique immédiatement que le problème ne vient pas de la configuration du serveur web ou d'un bug dans Nikto, mais d'un problème fondamental de connectivité réseau. Le scan "échoue" car la cible est inaccessible. Cela démontre comment l'option -debug fournit le contexte nécessaire pour diagnostiquer rapidement la cause première d'un problème.
Résumé
Dans ce laboratoire, vous avez appris les techniques essentielles pour le débogage et le dépannage des scans de serveurs web avec Nikto.
Vous avez commencé par utiliser l'option -debug pour visualiser les données détaillées des requêtes et des réponses, vous donnant une image claire des actions du scanner. Vous avez ensuite appris à gérer cette sortie en la redirigeant vers un fichier pour une analyse hors ligne. Vous avez également utilisé l'utilitaire -dbcheck pour vérifier l'intégrité des fichiers de base de données de Nikto, une étape cruciale lors du dépannage de l'outil lui-même. Enfin, vous avez appliqué ces compétences à un scénario réel, identifiant rapidement un problème de connectivité réseau comme cause d'un scan échoué.
Avec ces compétences, vous êtes maintenant mieux équipé pour diagnostiquer et résoudre les problèmes, garantissant que vos scans Nikto sont à la fois efficaces et fiables.


