Rejouer et reformater un scan précédent dans 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.

Un scan Nikto complet peut prendre du temps, en particulier sur des applications web vastes et complexes. Si vous avez besoin des résultats du scan dans plusieurs formats (par exemple, un pour un rapport technique et un autre pour une présentation), exécuter le scan de manière répétée est inefficace. Nikto offre une fonctionnalité puissante pour sauvegarder les résultats du scan et ensuite les "rejouer" afin de générer des rapports dans différents formats sans avoir à scanner à nouveau la cible.

Dans ce laboratoire, vous apprendrez comment effectuer un scan initial, sauvegarder les résultats dans un fichier XML, puis utiliser l'option -replay pour générer efficacement un nouveau rapport au format HTML.

Effectuer un scan et sauvegarder la sortie dans un fichier XML

Dans cette étape, vous allez effectuer un scan Nikto de base sur un serveur web de test local. L'objectif est de sauvegarder la sortie dans un fichier dans un format structuré, comme XML, que Nikto pourra analyser ultérieurement. Nous utiliserons l'option -o pour spécifier un fichier de sortie et -Format pour définir le type de fichier.

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 sur localhost au port 8000.

Exécutez maintenant la commande suivante dans votre terminal pour scanner le serveur web local et sauvegarder les résultats dans un fichier nommé scan_results.xml :

nikto -h http://localhost:8000 -o scan_results.xml -Format xml

Analysons cette commande :

  • nikto: La commande pour exécuter le scanner Nikto.
  • -h http://localhost:8000: Spécifie l'hôte (cible) à scanner.
  • -o scan_results.xml: Spécifie le nom du fichier de sortie.
  • -Format xml: Indique à Nikto de sauvegarder la sortie au format XML.

Le scan prendra un moment pour se terminer. Vous verrez une sortie dans votre terminal similaire à ce qui suit (les détails peuvent varier) :

- Nikto v2.5.0
---------------------------------------------------------------------------
+ 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-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)
+ Allowed HTTP Methods: GET, HEAD, OPTIONS
+ Public HTTP Methods: GET, HEAD, OPTIONS
...
+ 1 host(s) tested

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

Utiliser l'option -replay avec le fichier XML sauvegardé

Dans cette étape, vous apprendrez à utiliser la fonctionnalité -replay de Nikto. Cette option permet à Nikto d'analyser un fichier de scan XML précédemment sauvegardé et d'afficher les résultats sans se reconnecter au serveur cible. C'est extrêmement utile pour examiner rapidement les résultats ou pour les situations où la cible n'est plus en ligne.

Pour rejouer le scan que vous venez de sauvegarder, utilisez la commande suivante :

nikto -replay scan_results.xml

Cette commande indique à Nikto de lire le fichier scan_results.xml et d'afficher les résultats dans le terminal. La sortie sera presque identique à la sortie du terminal du scan original, mais elle sera générée instantanément à partir du fichier.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ 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-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

Remarquez la rapidité avec laquelle la commande se termine. Cela démontre que Nikto lit le fichier local et n'effectue pas un nouveau scan réseau.

Utiliser -Format htm pour générer un nouveau rapport HTML

Dans cette étape, vous allez combiner l'option -replay avec l'option -Format pour générer un rapport dans un nouveau format. C'est le cœur de la leçon de ce laboratoire : vous pouvez prendre un scan sauvegardé et en produire plusieurs types de rapports.

Supposons que vous ayez maintenant besoin d'un rapport HTML bien formaté pour une présentation. Vous pouvez le générer directement à partir de votre fichier scan_results.xml sauvegardé.

Exécutez la commande suivante :

nikto -replay scan_results.xml -o report.html -Format htm

Voici la description de la nouvelle commande :

  • nikto -replay scan_results.xml: Cette partie est identique à l'étape précédente ; elle indique à Nikto d'utiliser les données sauvegardées.
  • -o report.html: Ceci spécifie un nouveau fichier de sortie nommé report.html.
  • -Format htm: Ceci indique à Nikto de formater la sortie en tant que fichier HTML.

Cette commande s'exécutera très rapidement et produira une sortie minimale dans le terminal, car elle écrit le rapport directement dans le fichier report.html.

- Nikto v2.5.0
+ 1 host(s) tested

Vous avez maintenant généré avec succès un nouveau rapport dans un format différent sans re-scanner la cible.

Vérifier la création du nouveau rapport sans re-scanner

Dans cette étape, vous allez vérifier que le nouveau fichier de rapport HTML a été créé et confirmer qu'il contient du contenu HTML valide. Cela renforce la compréhension que la commande précédente a généré un rapport basé sur un fichier.

Tout d'abord, listez les fichiers de votre répertoire actuel (~/project) pour voir le rapport nouvellement créé.

ls -l

Vous devriez voir à la fois le fichier XML original et le nouveau fichier HTML dans la sortie :

total 12
-rw-r--r-- 1 labex labex  68 ... index.html
-rw-r--r-- 1 labex labex ... ... report.html
-rw-r--r-- 1 labex labex ... ... scan_results.xml

Ensuite, pour vérifier rapidement le contenu du nouveau rapport, vous pouvez utiliser la commande head pour afficher les premières lignes du fichier report.html.

head report.html

La sortie affichera le début d'un document HTML, confirmant que le fichier a été créé correctement.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Nikto Report</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style type="text/css">
...

L'observation la plus importante est la rapidité. La commande de l'étape 3 s'est terminée presque instantanément, tandis que le scan original de l'étape 1 a pris un temps notable. C'est la preuve définitive que vous re-formatez des données existantes, et non que vous effectuez un nouveau scan, chronophage.

Comprendre l'efficacité de la relecture des résultats sauvegardés

Dans cette dernière étape, vous allez consolider votre compréhension de l'efficacité obtenue en utilisant la fonctionnalité de relecture. Imaginez que vous ayez également besoin des résultats au format CSV (Comma-Separated Values) pour les importer dans une feuille de calcul pour une analyse plus approfondie. Au lieu d'exécuter un autre scan, vous pouvez simplement générer un autre rapport à partir du même fichier scan_results.xml.

Exécutez la commande suivante pour créer un rapport CSV :

nikto -replay scan_results.xml -o report.csv -Format csv

Cette commande est structurée de la même manière que celle pour le HTML, mais elle spécifie un nouveau nom de fichier (report.csv) et un nouveau format (csv). Encore une fois, elle se terminera en quelques secondes.

Maintenant, listez à nouveau les fichiers pour voir tous les rapports générés :

ls -l

Vous verrez maintenant trois fichiers de rapport, tous générés à partir d'un seul scan :

total 16
-rw-r--r-- 1 labex labex  68 ... index.html
-rw-r--r-- 1 labex labex ... ... report.csv
-rw-r--r-- 1 labex labex ... ... report.html
-rw-r--r-- 1 labex labex ... ... scan_results.xml

Ce flux de travail — scanner une fois, générer des rapports plusieurs fois — est une pierre angulaire de l'évaluation efficace des vulnérabilités. Pour les scans à grande échelle qui peuvent prendre des heures, cette fonctionnalité permet d'économiser une énorme quantité de temps et de ressources informatiques, vous permettant de vous concentrer sur l'analyse des résultats plutôt que d'attendre la fin des scans.

Résumé

Dans ce laboratoire, vous avez appris un flux de travail très efficace pour travailler avec les résultats des scans Nikto. Vous avez réussi à effectuer un scan de serveur web et à sauvegarder ses résultats dans un fichier XML. Vous avez ensuite utilisé la puissante option -replay pour analyser ces données sauvegardées et générer de nouveaux rapports dans différents formats (HTML et CSV) sans avoir à relancer le scan réseau, qui prend du temps.

Les commandes et concepts clés que vous avez pratiqués sont :

  • nikto -h [host] -o [file.xml] -Format xml: Pour effectuer un scan et sauvegarder les résultats.
  • nikto -replay [file.xml] -o [new_report] -Format [htm/csv/txt]: Pour générer de nouveaux rapports à partir de données sauvegardées.

Cette technique de séparation de la phase de scan de la phase de génération de rapports est cruciale pour des tests et analyses de sécurité efficaces.