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.
L'une de ses fonctionnalités clés est la recherche de répertoires Common Gateway Interface (CGI). Les scripts CGI peuvent être une source de vulnérabilités importantes s'ils ne sont pas correctement sécurisés. Par défaut, Nikto recherche une liste prédéfinie de répertoires CGI courants. Cependant, pour un scan plus efficace et ciblé, il est crucial de savoir comment contrôler ce comportement.
Dans ce laboratoire, vous apprendrez à utiliser l'option -Cgidirs de Nikto pour gérer la recherche de répertoires CGI, y compris la désactiver, rechercher tous les répertoires possibles et spécifier des répertoires personnalisés à tester.
Comprendre le comportement par défaut de Nikto lors de la recherche de répertoires CGI
Dans cette étape, vous allez démarrer un serveur web simple et exécuter un scan Nikto par défaut pour observer son comportement standard lors de la recherche de répertoires CGI.
Tout d'abord, mettons en place un serveur web simple à scanner. Nous utiliserons le module intégré http.server de Python pour cela.
Naviguez vers le répertoire webroot que nous avons préparé pour vous.
cd ~/project/webroot
Maintenant, démarrez le serveur web sur le port 8000. Le & à la fin de la commande exécutera le serveur en arrière-plan, vous permettant de continuer à utiliser le terminal.
python3 -m http.server 8000 &
Vous devriez voir un message indiquant que le serveur est en cours d'exécution.
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Une fois le serveur démarré, effectuons un scan Nikto de base. L'option -h est utilisée pour spécifier l'hôte cible.
nikto -h http://localhost:8000
Après la fin du scan, examinez la sortie. Nikto vérifie de nombreuses choses, mais vous devriez trouver une ligne indiquant qu'il a trouvé le répertoire /cgi-bin/. C'est parce que /cgi-bin/ est l'un des répertoires courants que Nikto vérifie par défaut.
- Nikto v2.x
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: localhost
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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)
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3092: /: This might be interesting...
+ /index.html: This might be interesting...
+ 7 items found on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Note : Dans certaines versions plus récentes de Nikto ou configurations, le scan par défaut pourrait ne pas rapporter
/cgi-bin/à moins qu'un test spécifique ne le déclenche. L'idée principale est de comprendre qu'un ensemble par défaut de chemins est vérifié. Nous forcerons ces vérifications dans les étapes suivantes pour obtenir des résultats plus clairs.
Utiliser -Cgidirs none pour désactiver toute recherche de répertoires CGI
Dans cette étape, vous apprendrez comment désactiver complètement la recherche de répertoires CGI. Ceci est utile lorsque vous souhaitez effectuer un scan rapide axé sur d'autres vulnérabilités ou lorsque vous êtes certain que le serveur cible n'utilise pas de scripts CGI.
L'option -Cgidirs contrôle la recherche CGI. En définissant sa valeur sur none, vous demandez à Nikto de sauter entièrement cette partie du test.
Exécutez la commande suivante pour scanner à nouveau le serveur, mais cette fois avec la recherche CGI désactivée :
nikto -h http://localhost:8000 -Cgidirs none
Examinez la sortie. Vous remarquerez qu'elle est très similaire au scan précédent, mais elle confirme explicitement que les répertoires CGI n'ont pas été recherchés. La ligne No CGI directories found sera toujours présente, mais cette fois, c'est parce que nous avons dit à Nikto de ne pas les chercher. Cela rend le scan légèrement plus rapide.
- Nikto v2.x
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: localhost
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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
+ CGI directory scanning has been disabled.
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3092: /: This might be interesting...
+ /index.html: This might be interesting...
+ 7 items found on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Remarquez la ligne + CGI directory scanning has been disabled. qui confirme que notre commande a fonctionné comme prévu.
Utiliser -Cgidirs all pour scanner tous les répertoires CGI configurés
Dans cette étape, vous utiliserez la valeur all pour l'option -Cgidirs. Cela force Nikto à effectuer le scan CGI le plus complet en vérifiant chaque répertoire listé dans sa configuration interne. C'est plus approfondi que le scan par défaut.
Exécutez le scan Nikto avec l'option -Cgidirs all :
nikto -h http://localhost:8000 -Cgidirs all
Maintenant, inspectez attentivement la sortie. Cette fois, Nikto rapportera explicitement le répertoire /cgi-bin/ car notre serveur de test le possède et le drapeau all garantit qu'il est vérifié.
- Nikto v2.x
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: localhost
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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
+ OSVDB-3233: /cgi-bin/: Directory indexing found.
+ OSVDB-3092: /cgi-bin/: This might be interesting...
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3092: /: This might be interesting...
+ /index.html: This might be interesting...
+ 8 items found on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Vous pouvez voir deux nouvelles découvertes liées à /cgi-bin/, confirmant que le scan forcé a réussi.
Spécifier un chemin de répertoire CGI personnalisé à scanner
Dans cette étape, vous apprendrez comment scanner des répertoires CGI spécifiques et non standards. Ceci est extrêmement utile lorsque vous évaluez une application web personnalisée qui place ses scripts dans des emplacements uniques.
Notre configuration inclut un répertoire nommé /cgi-custom/. Un scan Nikto par défaut ne le trouverait pas. Nous pouvons indiquer à Nikto de le vérifier spécifiquement en passant le chemin à l'option -Cgidirs.
Exécutez la commande suivante pour scanner uniquement le répertoire /cgi-custom/ :
nikto -h http://localhost:8000 -Cgidirs /cgi-custom/
Examinez la sortie. Nikto signalera maintenant qu'il a trouvé /cgi-custom/. Il ne signalera pas /cgi-bin/ car nous avons limité le scan au seul chemin que nous avons spécifié.
- Nikto v2.x
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: localhost
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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
+ OSVDB-3233: /cgi-custom/: Directory indexing found.
+ OSVDB-3092: /cgi-custom/: This might be interesting...
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3092: /: This might be interesting...
+ /index.html: This might be interesting...
+ 8 items found on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Comme vous pouvez le constater, le scan a identifié avec succès le répertoire personnalisé, démontrant comment vous pouvez adapter la recherche CGI de Nikto à vos besoins spécifiques.
Comparer les résultats de différentes stratégies de scan CGI
Dans cette dernière étape, examinons et comparons les résultats des différentes stratégies de scan que vous avez utilisées. Cela vous aidera à mieux comprendre comment contrôler le scan CGI de Nikto.
Vous avez effectué quatre types de scans distincts :
- Scan par défaut (
nikto -h ...) : A scanné une liste par défaut de répertoires courants. Dans notre cas, il n'a pas signalé/cgi-bin/initialement, bien que le répertoire soit présent. Ce scan fournit une bonne base de référence. - Aucun scan CGI (
-Cgidirs none) : A complètement ignoré toutes les vérifications de répertoires CGI. La sortie a confirmé queCGI directory scanning has been disabled(le scan des répertoires CGI a été désactivé). C'est l'option la plus rapide si vous n'avez pas besoin de vérifier les CGI. - Scan de tous les CGI (
-Cgidirs all) : A forcé la vérification de tous les répertoires CGI connus de Nikto. Ce scan a trouvé et signalé avec succès notre répertoire/cgi-bin/. C'est l'option la plus complète mais aussi la plus lente. - Scan CGI personnalisé (
-Cgidirs /cgi-custom/) : A scanné uniquement le répertoire spécifique/cgi-custom/et l'a trouvé avec succès, ignorant tous les autres comme/cgi-bin/. C'est l'approche la plus ciblée.
Le choix de la bonne stratégie dépend de votre objectif :
- Pour un aperçu rapide, le scan par défaut est souvent suffisant.
- Pour être absolument complet, utilisez
all. - Pour gagner du temps sur un serveur connu pour ne pas avoir de CGI, utilisez
none. - Pour les applications personnalisées, la spécification de chemins personnalisés est la méthode la plus efficace.
Enfin, nettoyons en arrêtant le serveur web Python. Comme c'était la première et unique tâche en arrière-plan que vous aviez démarrée, vous pouvez l'arrêter avec la commande kill %1.
kill %1
Vous verrez un message "Terminated" (Terminé), confirmant que le serveur a été arrêté.
Résumé
Dans ce laboratoire, vous avez acquis une expérience pratique du contrôle du scan des répertoires CGI dans Nikto. Vous avez appris à démarrer un serveur web simple à des fins de test, puis appliqué différentes stratégies de scan en utilisant l'option -Cgidirs.
Vous avez réussi à :
- Effectuer un scan Nikto par défaut.
- Désactiver complètement le scan CGI en utilisant
-Cgidirs none. - Mener un scan complet de tous les répertoires CGI connus avec
-Cgidirs all. - Cibler un répertoire spécifique et non standard en fournissant un chemin personnalisé.
En maîtrisant ces options, vous pouvez désormais effectuer des scans de vulnérabilités de serveurs web plus efficaces, ciblés et performants avec Nikto, en adaptant vos tests aux caractéristiques spécifiques de votre cible.


