Konsolenausgabe für Skripte mit Nikto stummschalten

Kali LinuxBeginner
Jetzt üben

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.