Générer un rapport HTML 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.

Bien qu'il soit utile d'exécuter un scan, la capacité de sauvegarder les résultats dans un format clair, lisible et partageable est cruciale pour les professionnels de la sécurité. Nikto peut exporter les résultats de scan dans divers formats, le HTML étant l'un des plus pratiques pour l'analyse.

Dans ce laboratoire, vous apprendrez comment exécuter un scan Nikto contre un serveur web cible et générer un rapport HTML bien structuré.

Spécifier le format HTML avec -Format html

Dans cette étape, vous apprendrez comment spécifier le format de sortie pour votre scan Nikto. Nikto peut générer des rapports dans divers formats, et pour ce laboratoire, nous nous concentrerons sur le HTML, qui est très lisible et facile à naviguer.

L'option -Format est utilisée pour indiquer à Nikto quel format de rapport utiliser. Pour générer un rapport HTML, vous devez spécifier html comme argument pour cette option.

Commençons par explorer le menu d'aide de Nikto pour voir les options de format.

nikto -Help | grep Format

Vous devriez voir une sortie listant les formats disponibles, y compris html.

-Format       Scan report format (csv, htm, msf+, nbe, sql, txt, xml)

La syntaxe pour spécifier le format HTML est simplement -Format html. Nous combinerons cela avec d'autres indicateurs dans les étapes à venir pour construire notre commande complète.

Utiliser le drapeau -o pour le fichier de sortie HTML

Dans cette étape, vous apprendrez comment spécifier le fichier dans lequel Nikto doit enregistrer le rapport. Le simple fait de définir le format sur HTML imprimera le code HTML brut dans votre terminal, ce qui n'est pas très utile. Vous devez diriger cette sortie vers un fichier.

Le drapeau -o (ou --output) est utilisé à cette fin. Vous fournissez le nom de fichier souhaité comme argument à ce drapeau.

Combinons cela avec le drapeau de format de l'étape précédente. Nous nommerons notre fichier de rapport nikto_report.html et l'enregistrerons dans le répertoire courant (~/project). Nous devons également spécifier la cible à scanner en utilisant le drapeau -h (ou --host). Pour ce laboratoire, notre cible est le serveur web local fonctionnant à http://127.0.0.1:8000.

La structure complète de la commande ressemblera à ceci :

nikto -h http://127.0.0.1:8000 -Format html -o nikto_report.html

Nous exécuterons cette commande complète à l'étape suivante. Pour l'instant, familiarisez-vous avec la structure et le but de chaque drapeau.

Exécuter le scan pour créer le rapport

Il est maintenant temps de tout assembler et d'exécuter le scan. Nous utiliserons la commande que nous avons construite dans les étapes précédentes pour scanner notre serveur web local et enregistrer les résultats dans un fichier HTML.

Exécutez la commande suivante dans votre terminal. Le scan peut prendre quelques instants pour se terminer.

nikto -h http://127.0.0.1:8000 -Format html -o nikto_report.html

Pendant le scan, Nikto affichera sa progression dans le terminal. La sortie ressemblera à ceci :

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         2023-10-27 10:30:00
---------------------------------------------------------------------------
+ Server:             SimpleHTTP/0.6 Python/3.10.12
+ 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
+ 7528 requests: 0 error(s) and 5 item(s) reported on remote host
+ End Time:           2023-10-27 10:30:15
+ (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Une fois le scan terminé, vous pouvez vérifier que le fichier de rapport a été créé en listant les fichiers dans le répertoire courant.

ls -l nikto_report.html

Vous devriez voir le fichier nikto_report.html listé dans la sortie.

-rw-r--r-- 1 labex labex 21435 Oct 27 10:30 nikto_report.html

Ouvrir le fichier HTML généré dans un navigateur web

Dans cette étape, vous allez ouvrir le fichier nikto_report.html généré pour en visualiser le contenu. Comme il s'agit d'un fichier HTML, la meilleure façon de le visualiser est dans un navigateur web.

L'environnement LabEx inclut le navigateur web Firefox. Vous pouvez ouvrir le rapport directement depuis le terminal en exécutant la commande firefox suivie du nom du fichier.

Exécutez la commande suivante. Cela lancera Firefox et ouvrira votre rapport.

firefox nikto_report.html

Une nouvelle fenêtre Firefox devrait apparaître sur votre écran, affichant le rapport de scan Nikto. Si la fenêtre apparaît derrière votre terminal, vous devrez peut-être déplacer la fenêtre du terminal pour la voir.

Cette dernière étape consiste à explorer le rapport que vous venez d'ouvrir dans Firefox. Le rapport HTML généré par Nikto est structuré pour être clair et informatif.

Prenez un moment pour examiner les différentes parties du rapport :

  • Scan Details (Détails du scan) : En haut, vous trouverez un résumé du scan, incluant l'adresse IP cible, le nom d'hôte, le port et l'heure à laquelle le scan a été effectué.
  • Vulnerabilities Table (Tableau des vulnérabilités) : La partie principale du rapport est un tableau listant toutes les découvertes. Chaque ligne représente un problème potentiel.
  • Key Columns (Colonnes clés) : Portez une attention particulière à la colonne URI, qui indique le chemin affecté, et à la colonne Description, qui explique la découverte. De nombreuses découvertes incluent un lien (souvent un identifiant OSVDB) sur lequel vous pouvez cliquer pour obtenir des informations plus détaillées sur cette vulnérabilité spécifique.

Cliquez sur certains des liens du rapport pour voir comment ils fournissent un contexte supplémentaire. Vous familiariser avec la structure de ce rapport est une compétence clé pour analyser les résultats des scans de sécurité. Cette étape est à titre d'observation, il n'y a donc pas de commandes à exécuter.

Résumé

Dans ce laboratoire, vous avez appris à utiliser Nikto pour générer un rapport complet de vulnérabilités de serveur web au format HTML.

Vous avez pratiqué l'utilisation de l'option -Format html pour spécifier le type de rapport et du drapeau -o pour enregistrer la sortie dans un fichier nommé nikto_report.html. Enfin, vous avez ouvert et navigué dans le rapport généré dans un navigateur web, apprenant à interpréter le résumé du scan et les découvertes détaillées.

Cette compétence est essentielle pour documenter et communiquer efficacement les évaluations de sécurité.