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. Cependant, parfois, un scan complet peut être trop "bruyant" ou produire de faux positifs. Dans ce laboratoire, vous apprendrez à affiner vos scans Nikto en excluant des plugins spécifiques, rendant ainsi vos résultats plus ciblés et exploitables.
Identifier un plugin bruyant ou indésirable lors d'un scan complet
Dans cette étape, nous allons effectuer un scan Nikto de base contre un serveur web de test. Ce scan initial servira de référence, nous permettant de visualiser toutes les découvertes générées par l'ensemble par défaut des plugins. À partir de ce rapport complet, nous pourrons identifier les plugins que nous souhaiterons exclure lors des scans futurs.
Tout d'abord, assurez-vous d'être dans le répertoire ~/project. Notre script de configuration a déjà démarré un serveur web simple en arrière-plan. Exécutons un scan Nikto standard contre celui-ci. L'option -h est utilisée pour spécifier l'hôte cible.
Exécutez la commande suivante dans votre terminal :
nikto -h http://127.0.0.1:8000
Une fois le scan terminé, vous verrez un rapport. Votre sortie ressemblera à ceci, bien que la version du serveur et d'autres détails puissent varier.
- 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)
+ OSVDB-3233: /cgi-bin/: This might be interesting...
+ 7558 requests: 0 error(s) and 4 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Dans la sortie ci-dessus, remarquez la ligne : + OSVDB-3233: /cgi-bin/: This might be interesting.... Cette découverte est générée par le plugin cgi. Pour ce laboratoire, nous allons prétendre qu'il s'agit d'un répertoire attendu et que la découverte est simplement du "bruit" que nous voulons supprimer.
Utiliser l'option -plugins avec un tiret préfixé
Dans cette étape, nous allons découvrir la syntaxe utilisée pour contrôler quels plugins Nikto exécute. Nikto fournit l'option -plugins à cet effet. Pour exclure un plugin, vous fournissez son nom avec un tiret préfixé (-).
Pour savoir quels plugins sont disponibles pour être inclus ou exclus, vous pouvez utiliser l'option -list-plugins. Celle-ci affichera une liste de tous les plugins disponibles avec une brève description de chacun.
Listons tous les plugins :
nikto -list-plugins
La sortie sera une longue liste. Voici un petit extrait de ce que vous verrez :
- Nikto v2.5.0
---------------------------------------------------------------------------
Loaded Main Plugins:
- apache_expect_header
Apache Expect header XSS (CVE-2006-3918)
- apache_users
Checks for sensitive files in ~user directories
- auth
Checks for authentication problems
- cgi
Checks for CGI directories
- clientaccesspolicy
Checks for permissive Client Access Policy (Silverlight)
... (la liste continue) ...
À partir de cette liste, vous pouvez trouver les noms exacts des plugins que vous souhaitez exclure, comme cgi que nous avons identifié à l'étape précédente.
Construire la commande pour exclure un seul plugin
Dans cette étape, nous allons combiner ce que nous avons appris pour construire la commande d'un nouveau scan qui exclut un seul plugin. Nous ciblerons le plugin cgi que nous avons identifié à l'étape 1.
La syntaxe est simple : vous ajoutez l'option -plugins à votre commande de scan habituelle, suivie du nom du plugin préfixé par un tiret.
La structure de la commande est : nikto -h [cible] -plugins -[plugin_à_exclure]
Sur la base de cette structure, la commande pour scanner notre serveur local tout en excluant le plugin cgi est :
nikto -h http://127.0.0.1:8000 -plugins -cgi
Cette commande indique à Nikto d'effectuer son scan standard sur http://127.0.0.1:8000 mais d'ignorer toutes les vérifications associées au plugin cgi. Dans l'étape suivante, nous exécuterons cette commande et observerons la différence dans la sortie.
Exécuter le scan et vérifier que le plugin a été ignoré
Dans cette étape, vous allez exécuter la commande que nous avons construite à l'étape précédente. En exécutant le scan avec le plugin cgi exclu, nous nous attendons à ce que le rapport ne contienne plus la découverte liée au répertoire /cgi-bin/.
Exécutez maintenant la commande dans votre terminal :
nikto -h http://127.0.0.1:8000 -plugins -cgi
Le scan s'exécutera à nouveau, mais cette fois-ci, il sera légèrement plus rapide car il effectue moins de vérifications. La sortie devrait ressembler à ceci :
- 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.
+ 7557 requests: 0 error(s) and 3 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Comparez cette sortie à celle de l'étape 1. Vous remarquerez que la ligne + OSVDB-3233: /cgi-bin/: This might be interesting... est maintenant absente. Cela confirme que nous avons réussi à exclure le plugin cgi de notre scan.
Exclure plusieurs plugins dans une seule commande
Dans cette étape, vous apprendrez comment exclure plusieurs plugins lors d'un seul scan. Ceci est utile lorsque vous souhaitez supprimer plusieurs plugins bruyants ou non pertinents en une seule fois.
Pour exclure plusieurs plugins, vous fournissez une liste de noms de plugins séparés par des virgules après l'option -plugins. Chaque nom de plugin dans la liste doit être préfixé par un tiret.
La syntaxe est : nikto -h [cible] -plugins -[plugin1],-[plugin2],-[plugin3]
Développons notre commande précédente pour exclure également le plugin apache_expect_header, qui est une autre découverte courante pouvant être considérée comme de faible priorité dans certains contextes.
Construisez et exécutez la commande suivante :
nikto -h http://127.0.0.1:8000 -plugins -cgi,-apache_expect_header
La sortie sera maintenant encore plus concise, car les vérifications des plugins cgi et apache_expect_header ont été ignorées.
- 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.
+ ... requests: 0 error(s) and 2 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Comme vous pouvez le constater, en excluant sélectivement des plugins, vous pouvez adapter le comportement de scan de Nikto à vos besoins spécifiques, ce qui se traduit par des rapports plus clairs et plus pertinents.
Résumé
Dans ce laboratoire, vous avez appris à personnaliser les scans Nikto en excluant des plugins spécifiques. Vous avez commencé par exécuter un scan de référence complet pour identifier un plugin à exclure. Ensuite, vous avez découvert l'option -plugins et la commande -list-plugins. Enfin, vous vous êtes exercé à construire et exécuter des commandes pour exclure un plugin unique et plusieurs plugins, en vérifiant les résultats en observant les changements dans la sortie du scan. Cette technique est essentielle pour exécuter des scans de vulnérabilité plus efficaces, ciblés et moins bruyants avec Nikto.


