Einen vorherigen Scan in Nikto wiederholen und neu formatieren

Kali LinuxBeginner
Jetzt üben

Einleitung

Nikto ist ein beliebter Open-Source-Webserver-Scanner, der umfassende Tests gegen Webserver für mehrere Elemente durchführt, darunter über 6700 potenziell gefährliche Dateien/Programme, Prüfungen auf veraltete Versionen von über 1250 Servern und versionsspezifische Probleme auf über 270 Servern.

Ein vollständiger Nikto-Scan kann zeitaufwendig sein, insbesondere bei großen und komplexen Webanwendungen. Wenn Sie die Scan-Ergebnisse in mehreren Formaten benötigen (z. B. eines für einen technischen Bericht und ein anderes für eine Präsentation), ist das wiederholte Ausführen des Scans ineffizient. Nikto bietet eine leistungsstarke Funktion zum Speichern von Scan-Ergebnissen und zum anschließenden "Wiederholen" (replay), um Berichte in verschiedenen Formaten zu generieren, ohne das Ziel erneut zu scannen.

In diesem Lab lernen Sie, wie Sie einen initialen Scan durchführen, die Ergebnisse in einer XML-Datei speichern und dann die Option -replay verwenden, um effizient einen neuen Bericht im HTML-Format zu generieren.

Scan durchführen und Ausgabe in einer XML-Datei speichern

In diesem Schritt führen Sie einen grundlegenden Nikto-Scan gegen einen lokalen Test-Webserver durch. Der Schlüssel liegt darin, die Ausgabe in einer strukturierten Datei, wie z. B. XML, zu speichern, die Nikto später parsen kann. Wir verwenden die Option -o, um eine Ausgabedatei anzugeben, und -Format, um den Dateityp zu definieren.

Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project befinden. Unser Setup-Skript hat bereits einen einfachen Webserver auf localhost mit Port 8000 gestartet.

Führen Sie nun den folgenden Befehl in Ihrem Terminal aus, um den lokalen Webserver zu scannen und die Ergebnisse in einer Datei namens scan_results.xml zu speichern:

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

Lassen Sie uns diesen Befehl aufschlüsseln:

  • nikto: Der Befehl zum Ausführen des Nikto-Scanners.
  • -h http://localhost:8000: Gibt den zu scannenden Host (Ziel) an.
  • -o scan_results.xml: Gibt den Namen der Ausgabedatei an.
  • -Format xml: Weist Nikto an, die Ausgabe im XML-Format zu speichern.

Der Scan wird einen Moment dauern. Sie sehen eine Ausgabe in Ihrem Terminal, die der folgenden ähnelt (Details können variieren):

- 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

Nachdem der Befehl abgeschlossen ist, wird eine Datei namens scan_results.xml in Ihrem aktuellen Verzeichnis (~/project) erstellt.

Die Option -replay mit der gespeicherten XML-Datei verwenden

In diesem Schritt lernen Sie, wie Sie die -replay-Funktion von Nikto verwenden. Diese Option ermöglicht es Nikto, eine zuvor gespeicherte XML-Scan-Datei zu parsen und die Ergebnisse anzuzeigen, ohne erneut eine Verbindung zum Zielserver herzustellen. Dies ist äußerst nützlich, um Ergebnisse schnell zu überprüfen oder in Situationen, in denen das Ziel nicht mehr online ist.

Um den gerade gespeicherten Scan erneut abzuspielen, verwenden Sie den folgenden Befehl:

nikto -replay scan_results.xml

Dieser Befehl weist Nikto an, die Datei scan_results.xml zu lesen und die Ergebnisse im Terminal auszugeben. Die Ausgabe wird fast identisch mit der Terminalausgabe des ursprünglichen Scans aussehen, wird aber sofort aus der Datei generiert.

- 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

Beachten Sie, wie schnell der Befehl abgeschlossen ist. Dies zeigt, dass Nikto aus der lokalen Datei liest und keinen neuen Netzwerksuchlauf durchführt.

Verwenden Sie -Format htm, um einen neuen HTML-Bericht zu generieren

In diesem Schritt kombinieren Sie die Option -replay mit der Option -Format, um einen Bericht in einem neuen Format zu generieren. Dies ist der Kern der Lektion dieses Labs: Sie können einen gespeicherten Scan nehmen und daraus verschiedene Arten von Berichten erstellen.

Nehmen wir an, Sie benötigen nun einen schön formatierten HTML-Bericht für eine Präsentation. Sie können ihn direkt aus Ihrer gespeicherten Datei scan_results.xml generieren.

Führen Sie den folgenden Befehl aus:

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

Hier ist die Aufschlüsselung des neuen Befehls:

  • nikto -replay scan_results.xml: Dieser Teil ist derselbe wie im vorherigen Schritt; er weist Nikto an, die gespeicherten Daten zu verwenden.
  • -o report.html: Dies gibt eine neue Ausgabedatei namens report.html an.
  • -Format htm: Dies weist Nikto an, die Ausgabe als HTML-Datei zu formatieren.

Dieser Befehl wird sehr schnell ausgeführt und erzeugt minimale Ausgabe im Terminal, da er den Bericht direkt in die Datei report.html schreibt.

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

Sie haben nun erfolgreich einen neuen Bericht in einem anderen Format generiert, ohne das Ziel erneut zu scannen.

Überprüfen, ob der neue Bericht ohne erneutes Scannen erstellt wurde

In diesem Schritt überprüfen Sie, ob die neue HTML-Berichtsdatei erstellt wurde, und bestätigen, dass sie gültigen HTML-Inhalt enthält. Dies unterstreicht das Verständnis, dass der vorherige Befehl einen dateibasierten Bericht generiert hat.

Listen Sie zunächst die Dateien in Ihrem aktuellen Verzeichnis (~/project) auf, um den neu erstellten Bericht anzuzeigen.

ls -l

In der Ausgabe sollten sowohl die ursprüngliche XML-Datei als auch die neue HTML-Datei angezeigt werden:

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

Um den Inhalt des neuen Berichts schnell zu überprüfen, können Sie anschließend den Befehl head verwenden, um die ersten Zeilen der Datei report.html anzuzeigen.

head report.html

Die Ausgabe zeigt den Anfang eines HTML-Dokuments und bestätigt, dass die Datei korrekt erstellt wurde.

<?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">
...

Die wichtigste Beobachtung ist die Geschwindigkeit. Der Befehl in Schritt 3 wurde fast sofort abgeschlossen, während der ursprüngliche Scan in Schritt 1 eine spürbare Zeit in Anspruch nahm. Dies ist der eindeutige Beweis dafür, dass Sie vorhandene Daten neu formatieren und keinen neuen, zeitaufwändigen Scan durchführen.

Verstehen der Effizienz des Wiederholens gespeicherter Ergebnisse

In diesem letzten Schritt festigen Sie Ihr Verständnis der Effizienz, die durch die Verwendung der Replay-Funktion erzielt wird. Stellen Sie sich vor, Sie benötigen die Ergebnisse auch im CSV-Format (Comma-Separated Values), um sie für weitere Analysen in eine Tabellenkalkulation zu importieren. Anstatt einen weiteren Scan durchzuführen, können Sie einfach einen weiteren Bericht aus derselben Datei scan_results.xml generieren.

Führen Sie den folgenden Befehl aus, um einen CSV-Bericht zu erstellen:

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

Dieser Befehl ist genauso strukturiert wie der für HTML, gibt jedoch einen neuen Dateinamen (report.csv) und ein neues Format (csv) an. Auch dieser wird in Sekundenschnelle abgeschlossen sein.

Listen Sie nun erneut die Dateien auf, um alle generierten Berichte anzuzeigen:

ls -l

Sie sehen nun drei Berichtsdateien, die alle aus einem einzigen Scan generiert wurden:

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

Dieser Workflow – einmal scannen, viele Male berichten – ist ein Eckpfeiler einer effizienten Schwachstellenbewertung. Bei groß angelegten Scans, die Stunden dauern können, spart diese Funktion enorm viel Zeit und Rechenressourcen, sodass Sie sich auf die Analyse der Ergebnisse konzentrieren können, anstatt auf den Abschluss von Scans zu warten.

Zusammenfassung

In diesem Lab haben Sie einen hocheffizienten Workflow für die Arbeit mit Nikto-Scanergebnissen kennengelernt. Sie haben erfolgreich einen Webserver-Scan durchgeführt und dessen Ergebnisse in einer XML-Datei gespeichert. Anschließend haben Sie die leistungsstarke Option -replay verwendet, um diese gespeicherten Daten zu parsen und neue Berichte in verschiedenen Formaten (HTML und CSV) zu generieren, ohne den zeitaufwändigen Netzwerks-Scan erneut ausführen zu müssen.

Die wichtigsten Befehle und Konzepte, die Sie geübt haben, sind:

  • nikto -h [host] -o [file.xml] -Format xml: Zum Durchführen eines Scans und Speichern der Ergebnisse.
  • nikto -replay [file.xml] -o [new_report] -Format [htm/csv/txt]: Zum Generieren neuer Berichte aus gespeicherten Daten.

Diese Technik, die Scan-Phase von der Berichts-Phase zu trennen, ist entscheidend für effiziente Sicherheitstests und Analysen.