Enregistrer la sortie du scan dans un fichier 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 lancez un scan, les résultats sont généralement affichés directement dans votre terminal. Pour la documentation, une analyse plus approfondie ou le partage avec une équipe, il est essentiel de sauvegarder cette sortie dans un fichier. Nikto offre des options flexibles pour enregistrer les rapports de scan dans divers formats.

Dans ce lab, vous apprendrez comment sauvegarder les résultats des scans Nikto dans un fichier. Vous pratiquerez la sauvegarde de la sortie aux formats texte brut (.txt) et Comma-Separated Values (.csv) en scannant un serveur web simple, fonctionnant localement.

Choisir un format de sortie texte brut

Dans cette étape, vous allez explorer les différents formats de sortie pris en charge par Nikto. Nikto utilise des plugins pour ses capacités de reporting, et vous pouvez les lister pour voir les formats disponibles.

L'option -list-plugins affiche tous les plugins disponibles, y compris ceux pour le reporting. Exécutons cette commande pour voir quels formats nous pouvons utiliser.

Exécutez la commande suivante dans votre terminal :

nikto -list-plugins

Vous verrez une longue liste de plugins. Faites défiler la sortie et recherchez la section "Reporting". Cette section liste tous les formats de fichiers dans lesquels vous pouvez enregistrer vos résultats de scan.

...
Reporting
--------------------------------------------------
        csv - Comma-separated value
        htm - HTML Report
        json - JSON Report
        nbe - Nessus NBE format
        sql - SQL (generic)
        txt - Plain text
        xml - XML
...

Comme vous pouvez le voir, txt est listé comme un format "Plain text" (texte brut). Nous utiliserons ce format en premier.

Utiliser le drapeau -o pour spécifier un nom de fichier de sortie

Dans cette étape, vous apprendrez quel drapeau est utilisé pour spécifier un fichier de sortie. Pour indiquer à Nikto où enregistrer le rapport, vous utilisez le drapeau -o (ou --output).

Ce drapeau doit être utilisé conjointement avec le drapeau -Format, qui spécifie le format de fichier que vous avez choisi à l'étape précédente. La syntaxe de base est :

nikto -h <cible> -Format <format> -o <nom_fichier>

Utilisons l'option -help pour voir la description officielle du drapeau -o. Vous pouvez rediriger la sortie vers grep pour trouver rapidement la ligne pertinente.

Exécutez cette commande :

nikto -help | grep -- "-o "

La sortie vous montrera l'utilisation des drapeaux -o et --output.

-o, -output <file>      Write output to this file

Vous savez maintenant comment spécifier à la fois le format et le nom du fichier. À l'étape suivante, nous combinerons ces éléments pour exécuter un scan et enregistrer les résultats.

Exécuter le scan et générer le fichier texte

Dans cette étape, vous allez effectuer un scan et enregistrer la sortie dans un fichier texte brut. Nous allons combiner les drapeaux et les informations des étapes précédentes.

Notre cible est le serveur web local fonctionnant sur le port 8000. L'URL de ce serveur est http://127.0.0.1:8000.

  • Hôte cible (-h) : http://127.0.0.1:8000
  • Format (-Format) : txt
  • Fichier de sortie (-o) : scan_report.txt

Maintenant, construisez la commande complète et exécutez-la dans votre terminal. Toutes les opérations doivent être effectuées dans le répertoire par défaut ~/project.

nikto -h http://127.0.0.1:8000 -Format txt -o scan_report.txt

Nikto commencera le scan. Vous verrez la progression du scan dans le terminal, mais le rapport final sera écrit dans le fichier scan_report.txt. Veuillez attendre la fin du scan.

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

Une fois la commande terminée, un nouveau fichier nommé scan_report.txt sera créé dans votre répertoire actuel (~/project).

Vérifier le contenu du fichier texte enregistré

Dans cette étape, vous allez vérifier que les résultats du scan ont été correctement enregistrés dans le fichier texte. Vous pouvez utiliser un outil en ligne de commande comme cat pour afficher le contenu du fichier.

Exécutez la commande suivante pour visualiser le contenu de scan_report.txt :

cat scan_report.txt

La sortie sera le rapport Nikto complet, qui devrait ressembler beaucoup à la sortie que vous avez vue dans le terminal pendant le scan.

Nikto V2.5.0
================================================================
+-----------+
| General |
+-----------+
Date: ...
Start Time: ...
End Time: ...
Version: 2.5.0
...
+-----------+
|  Target   |
+-----------+
IP: 127.0.0.1
Hostname: 127.0.0.1
Port: 8000
...
+-----------+
| Findings  |
+-----------+
+ The anti-clickjacking X-Frame-Options header is not present.
...

Vous avez réussi à enregistrer un rapport de scan Nikto dans un fichier texte brut. Ce fichier peut maintenant être facilement stocké, archivé ou partagé.

Répéter le processus pour enregistrer au format CSV

Dans cette étape, vous allez répéter le processus pour enregistrer les résultats du scan dans un format différent : CSV (Comma-Separated Values). Le format CSV est structuré et idéal pour l'importation dans des tableurs comme Excel ou LibreOffice Calc, ou pour le traitement par des scripts.

La procédure est quasiment identique. Il vous suffit de modifier la valeur du drapeau -Format en csv et de fournir un nouveau nom de fichier avec une extension .csv.

  • Hôte cible (-h) : http://127.0.0.1:8000
  • Format (-Format) : csv
  • Fichier de sortie (-o) : scan_report.csv

Exécutez la commande suivante pour générer le rapport au format CSV :

nikto -h http://127.0.0.1:8000 -Format csv -o scan_report.csv

Une fois le scan terminé, un nouveau fichier nommé scan_report.csv sera créé. Visualisons son contenu avec la commande cat.

cat scan_report.csv

La sortie sera structurée avec des champs séparés par des virgules, ce qui est la norme pour les fichiers CSV.

"Host","IP","Port","Banner","Date","Vulnerability","Method","Description","Reference"
"127.0.0.1","127.0.0.1","8000","","...","OSVDB-3233: The anti-clickjacking X-Frame-Options header is not present.","GET","",""
"127.0.0.1","127.0.0.1","8000","","...","OSVDB-3092: 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.","GET","",""
...

Vous avez maintenant généré avec succès un rapport dans deux formats différents, démontrant la flexibilité des options de sortie de Nikto.

Résumé

Dans ce laboratoire, vous avez appris à gérer la sortie du scanner de serveurs web Nikto. Vous avez réussi à scanner un serveur web local et à enregistrer les résultats dans des fichiers pour une utilisation ultérieure.

Plus précisément, vous avez pratiqué :

  • La liste des formats de sortie disponibles à l'aide de l'option -list-plugins.
  • L'utilisation des drapeaux -o et -Format pour contrôler le fichier de sortie et son format.
  • La génération d'un rapport de scan en texte brut (.txt).
  • La génération d'un rapport de scan au format Comma-Separated Values (.csv).

Cette compétence est fondamentale pour tout professionnel de la sécurité qui a besoin de documenter ses découvertes, d'effectuer des analyses hors ligne ou d'intégrer les résultats de scan dans des systèmes de reporting plus importants.