Einleitung
Nikto ist ein beliebter Open-Source-Webserver-Scanner, der umfassende Tests gegen Webserver für verschiedene 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.
Wenn Nikto von der Kommandozeile aus ausgeführt wird, erzeugt es viele Echtzeitausgaben, was für die interaktive Nutzung hilfreich ist. Wenn Sie jedoch Scans mithilfe von Skripten automatisieren möchten, kann diese ausführliche Ausgabe unerwünscht sein.
In diesem Lab lernen Sie, wie Sie die Option -Mute verwenden, um Nikto-Scans lautlos auszuführen. Dies ist eine entscheidende Fähigkeit für die Integration von Nikto in automatisierte Sicherheits-Workflows und Shell-Skripte, die es Ihnen ermöglicht, Ergebnisse in Dateien zu erfassen, ohne die Konsole zu überladen.
Führen Sie einen Standard-Scan durch und beobachten Sie die ausführliche Konsolenausgabe
In diesem Schritt führen Sie einen grundlegenden Nikto-Scan gegen einen Test-Webserver durch. Dies hilft Ihnen, das Standardverhalten und die Menge der Informationen zu verstehen, die es auf der Konsole ausgibt.
Zuerst führen wir einen Standard-Scan durch. Die Option -h wird verwendet, um den Zielhost anzugeben. Unser Testserver läuft lokal auf Port 8000.
Führen Sie den folgenden Befehl in Ihrem Terminal aus:
nikto -h http://127.0.0.1:8000
Sie werden viele Ausgaben sehen, einschließlich des Nikto-Versionsbanners, der Zielinformationen und Echtzeit-Statusaktualisierungen, während der Scan fortschreitet.
- 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)
... (viele weitere Zeilen Ausgabe) ...
+ 1 host(s) tested
Diese ausführliche Ausgabe ist nützlich für die Echtzeitüberwachung eines Scans, aber nicht ideal für die Automatisierung.
Verwenden Sie die Option -Mute, um die normale Konsolenausgabe zu unterdrücken
In diesem Schritt lernen Sie, wie Sie die Option -Mute verwenden, um die Konsolenausgabe erheblich zu reduzieren. Diese Option weist Nikto an, die normalen HTTP-Anfragen und -Antworten zu unterdrücken, die es normalerweise während eines Scans anzeigen würde.
Die Option -Mute ist perfekt für Situationen, in denen Sie sich nur für die Endergebnisse interessieren und nicht für den schrittweisen Fortschritt.
Führen Sie nun denselben Scan wie zuvor aus, fügen Sie jedoch die Option -Mute am Ende des Befehls hinzu:
nikto -h http://127.0.0.1:8000 -Mute
Beobachten Sie nun die Ausgabe. Sie ist viel sauberer. Das Banner und die Echtzeit-Statusaktualisierungen sind verschwunden. Sie sehen nur noch die endgültige Zusammenfassung der Ergebnisse.
- 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
Wie Sie sehen können, ist die Ausgabe weitaus weniger überladen, was die Analyse oder das Lesen erleichtert, wenn der Scan Teil eines größeren Prozesses ist.
Kombinieren Sie -Mute mit -o, um Ergebnisse stillschweigend in einer Datei zu speichern
In diesem Schritt gehen wir beim Stummschalten noch einen Schritt weiter. Das Ziel ist es, einen Scan durchzuführen, der keine Ausgabe auf der Konsole erzeugt und alle Ergebnisse direkt in einer Datei speichert. Dies ist die häufigste Anforderung für automatisierte Skripte.
Um dies zu erreichen, können Sie die Option -Mute mit der Option -o (oder --output) kombinieren, die eine Ausgabedatei angibt.
Führen Sie den folgenden Befehl aus. Er führt den Scan durch, unterdrückt die gesamte Konsolenausgabe und speichert den Bericht in einer Datei namens nikto_report.txt.
nikto -h http://127.0.0.1:8000 -Mute -o nikto_report.txt
Nachdem Sie den Befehl ausgeführt haben, werden Sie feststellen, dass Ihre Terminal-Eingabeaufforderung sofort zurückkehrt, ohne Scan-Ergebnisse anzuzeigen. Der Scan wurde im Hintergrund stillschweigend ausgeführt.
Um zu bestätigen, dass der Bericht generiert wurde, listen Sie zuerst die Dateien im aktuellen Verzeichnis auf:
ls
Sie sollten nikto_report.txt in der Liste sehen.
nikto_report.txt www
Zeigen Sie nun den Inhalt der Berichtsdatei an:
cat nikto_report.txt
Der Inhalt der Datei entspricht der stummgeschalteten Ausgabe, die Sie im vorherigen Schritt gesehen haben. Diese Technik ist unerlässlich für die Protokollierung oder die programmatische Verarbeitung von Scan-Ergebnissen.
Schreiben eines einfachen Bash-Skripts, das einen stummgeschalteten Nikto-Scan aufruft
In diesem Schritt erstellen Sie ein einfaches Bash-Skript zur Automatisierung des stillen Nikto-Scans. Dies zeigt, wie die Optionen -Mute und -o in einem realen Automatisierungsszenario verwendet werden.
Erstellen Sie zunächst eine neue Datei namens scan.sh mit dem Texteditor nano:
nano scan.sh
Fügen Sie im nano-Editor den folgenden Inhalt hinzu. Dieses Skript gibt Statusmeldungen an den Benutzer aus, führt den stillen Nikto-Scan durch und speichert die Ergebnisse in einer neuen Datei namens 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"
Drücken Sie Ctrl+X zum Beenden, Y zum Speichern der Änderungen und Enter zur Bestätigung des Dateinamens.
Als Nächstes müssen Sie das Skript ausführbar machen. Verwenden Sie den Befehl chmod, um Ausführungsberechtigungen hinzuzufügen:
chmod +x scan.sh
Führen Sie schließlich Ihr neues Skript aus:
./scan.sh
Das Skript zeigt die Meldungen "Starting" und "Scan complete" an, aber der Nikto-Scan selbst erzeugt keine Konsolenausgabe.
Starting silent Nikto scan...
Scan complete. Report saved to script_report.txt
Sie können mit dem Befehl ls erneut überprüfen, ob die neue Berichtsdatei script_report.txt erstellt wurde.
Überprüfen des Exit-Codes des Skripts zur Bestimmung des Scan-Abschlusses
In diesem Schritt lernen Sie, wie Sie den Exit-Code Ihres Skripts überprüfen. In der Shell-Skripterstellung ist der Exit-Code eine Zahl, die ein Befehl oder ein Skript nach Abschluss der Ausführung zurückgibt. Ein Exit-Code von 0 bedeutet konventionell, dass der Befehl erfolgreich abgeschlossen wurde.
Dies ist ein grundlegendes Konzept für die Erstellung zuverlässiger Skripte, da es Ihnen ermöglicht zu überprüfen, ob ein Schritt erfolgreich war, bevor Sie mit dem nächsten fortfahren.
Führen Sie zunächst Ihr Skript erneut aus:
./scan.sh
Unmittelbar nachdem das Skript beendet ist, können Sie seinen Exit-Code überprüfen, indem Sie die spezielle Shell-Variable $? untersuchen. Diese Variable enthält immer den Exit-Code des zuletzt ausgeführten Befehls.
Führen Sie den folgenden Befehl aus:
echo $?
Die Ausgabe sollte 0 sein, was darauf hinweist, dass Ihr scan.sh-Skript ohne Fehler abgeschlossen wurde.
0
In fortgeschritteneren Skripten könnten Sie diese Überprüfung in einer if-Anweisung verwenden, um beispielsweise Fehler zu behandeln:
./scan.sh
if [ $? -eq 0 ]; then
echo "Script completed successfully."
else
echo "Script failed with an error."
fi
Dies bestätigt, dass Sie Ihren stummgeschalteten Nikto-Scan zuverlässig innerhalb eines Skripts ausführen und dessen Abschluss programmatisch überprüfen können.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie die Konsolenausgabe von Nikto für effektives Skripting und Automatisierung steuern.
Sie haben zunächst die ausführliche Ausgabe eines Standard-Nikto-Scans beobachtet. Anschließend haben Sie die Option -Mute verwendet, um nicht wesentliche Ausgaben zu unterdrücken, und die Option -o, um Scan-Ergebnisse stillschweigend in einer Datei zu speichern. Schließlich haben Sie diese Optionen in ein Bash-Skript integriert und gelernt, wie Sie den Exit-Code des Skripts überprüfen, um einen erfolgreichen Abschluss zu verifizieren.
Diese Fähigkeiten sind grundlegend für jeden, der Web-Sicherheitsbewertungen automatisieren und leistungsstarke, nicht-interaktive Sicherheitstools erstellen möchte.


