Silencer la sortie console pour le scripting avec Nikto

Kali LinuxBeginner
Pratiquer maintenant

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.

Lorsque vous exécutez Nikto depuis la ligne de commande, il produit une grande quantité de sorties en temps réel, ce qui est utile pour une utilisation interactive. Cependant, lorsque vous souhaitez automatiser les analyses à l'aide de scripts, cette sortie verbeuse peut être indésirable.

Dans ce laboratoire, vous apprendrez à utiliser l'option -Mute pour exécuter des analyses Nikto silencieusement. C'est une compétence cruciale pour intégrer Nikto dans des flux de travail de sécurité automatisés et des scripts shell, vous permettant de capturer les résultats dans des fichiers sans encombrer la console.

Exécuter un scan standard et observer la sortie verbeuse de la console

Dans cette étape, vous allez effectuer un scan Nikto de base sur un serveur web de test. Cela vous aidera à comprendre le comportement par défaut et la quantité d'informations qu'il affiche sur la console.

Tout d'abord, exécutons un scan standard. L'option -h est utilisée pour spécifier l'hôte cible. Notre serveur de test fonctionne localement sur le port 8000.

Exécutez la commande suivante dans votre terminal :

nikto -h http://127.0.0.1:8000

Vous verrez beaucoup de sorties, y compris la bannière de version de Nikto, les informations sur la cible et les mises à jour de statut en temps réel au fur et à mesure que le scan progresse.

- 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.6
+ 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)
... (beaucoup plus de lignes de sortie) ...
+ 1 host(s) tested

Cette sortie verbeuse est utile pour surveiller un scan en temps réel, mais elle n'est pas idéale pour l'automatisation.

Utiliser l'option -Mute pour supprimer la sortie normale de la console

Dans cette étape, vous apprendrez à utiliser l'option -Mute pour réduire considérablement la sortie de la console. Cette option indique à Nikto de supprimer les requêtes et réponses HTTP normales qu'il afficherait normalement pendant un scan.

L'option -Mute est parfaite pour les situations où vous ne vous souciez que des résultats finaux, pas de la progression étape par étape.

Maintenant, exécutez le même scan qu'auparavant, mais ajoutez l'option -Mute à la fin de la commande :

nikto -h http://127.0.0.1:8000 -Mute

Observez la sortie maintenant. Elle est beaucoup plus propre. La bannière et les mises à jour de statut en temps réel ont disparu. Vous ne verrez que le résumé final des découvertes.

- 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.6
+ 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)
+ 1 host(s) tested

Comme vous pouvez le constater, la sortie est beaucoup moins encombrée, ce qui la rend plus facile à analyser ou à lire lorsque le scan fait partie d'un processus plus vaste.

Combiner -Mute avec -o pour enregistrer les résultats silencieusement dans un fichier

Dans cette étape, nous allons pousser le muting un peu plus loin. L'objectif est d'exécuter un scan qui ne produit aucune sortie sur la console et enregistre toutes les découvertes directement dans un fichier. C'est l'exigence la plus courante pour les scripts automatisés.

Pour y parvenir, vous pouvez combiner l'option -Mute avec l'option -o (ou --output), qui spécifie un fichier de sortie.

Exécutez la commande suivante. Elle effectuera le scan, supprimera toute sortie sur la console et enregistrera le rapport dans un fichier nommé nikto_report.txt.

nikto -h http://127.0.0.1:8000 -Mute -o nikto_report.txt

Après avoir exécuté la commande, vous remarquerez que votre invite de terminal revient immédiatement sans afficher aucun résultat de scan. Le scan s'est exécuté silencieusement en arrière-plan.

Pour confirmer que le rapport a été généré, listez d'abord les fichiers du répertoire courant :

ls

Vous devriez voir nikto_report.txt dans la liste.

nikto_report.txt  www

Maintenant, affichez le contenu du fichier de rapport :

cat nikto_report.txt

Le contenu du fichier sera le même que la sortie mutée que vous avez vue à l'étape précédente. Cette technique est essentielle pour conserver des journaux ou traiter les résultats des scans par programme.

Écrire un script bash simple qui appelle un scan Nikto silencieux

Dans cette étape, vous allez créer un script bash simple pour automatiser le scan Nikto silencieux. Cela démontre comment les options -Mute et -o sont utilisées dans un scénario d'automatisation réel.

Tout d'abord, créez un nouveau fichier nommé scan.sh à l'aide de l'éditeur de texte nano :

nano scan.sh

À l'intérieur de l'éditeur nano, ajoutez le contenu suivant. Ce script affichera des messages de statut à l'utilisateur, exécutera le scan Nikto silencieux et enregistrera les résultats dans un nouveau fichier nommé script_report.txt.

#!/bin/bash

echo "Starting silent Nikto scan..."
nikto -h http://127.0.0.1:8000 -Mute -o script_report.txt
echo "Scan complete. Report saved to script_report.txt"

Appuyez sur Ctrl+X pour quitter, Y pour enregistrer les modifications, et Entrée pour confirmer le nom du fichier.

Ensuite, vous devez rendre le script exécutable. Utilisez la commande chmod pour ajouter les permissions d'exécution :

chmod +x scan.sh

Enfin, exécutez votre nouveau script :

./scan.sh

Le script affichera les messages "Starting" et "Scan complete", mais le scan Nikto lui-même ne produira aucune sortie sur la console.

Starting silent Nikto scan...
Scan complete. Report saved to script_report.txt

Vous pouvez vérifier que le nouveau fichier de rapport script_report.txt a été créé en utilisant à nouveau la commande ls.

Vérifier le code de sortie du script pour déterminer l'achèvement du scan

Dans cette étape, vous apprendrez comment vérifier le code de sortie de votre script. En scripting shell, le code de sortie est un nombre qu'une commande ou un script retourne après avoir terminé son exécution. Un code de sortie de 0 signifie conventionnellement que la commande s'est terminée avec succès.

C'est un concept fondamental pour construire des scripts fiables, car il vous permet de vérifier si une étape a réussi avant de passer à la suivante.

Tout d'abord, exécutez à nouveau votre script :

./scan.sh

Immédiatement après que le script soit terminé, vous pouvez vérifier son code de sortie en examinant la variable spéciale du shell $?. Cette variable contient toujours le code de sortie de la dernière commande exécutée.

Exécutez la commande suivante :

echo $?

La sortie devrait être 0, indiquant que votre script scan.sh s'est terminé sans aucune erreur.

0

Dans des scripts plus avancés, vous pourriez utiliser cette vérification dans une instruction if pour gérer les erreurs, par exemple :

./scan.sh
if [ $? -eq 0 ]; then
  echo "Script completed successfully."
else
  echo "Script failed with an error."
fi

Cela confirme que vous pouvez exécuter de manière fiable votre scan Nikto silencieux dans un script et vérifier sa complétion par programme.

Résumé

Dans ce laboratoire, vous avez appris à contrôler la sortie console de Nikto pour une automatisation et un scripting efficaces.

Vous avez commencé par observer la sortie détaillée d'un scan Nikto standard. Ensuite, vous avez utilisé l'option -Mute pour supprimer la sortie non essentielle et l'option -o pour enregistrer silencieusement les résultats du scan dans un fichier. Enfin, vous avez intégré ces options dans un script bash et appris à vérifier le code de sortie du script pour confirmer sa réussite.

Ces compétences sont fondamentales pour quiconque souhaite automatiser les évaluations de sécurité web et construire des outils de sécurité puissants et non interactifs.