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. Manchmal kann ein vollständiger Scan jedoch zu "laut" sein oder Fehlalarme erzeugen. In diesem Lab lernen Sie, wie Sie Ihre Nikto-Scans verfeinern können, indem Sie bestimmte Plugins ausschließen, um Ihre Ergebnisse fokussierter und umsetzbarer zu gestalten.
Identifizieren eines "lauten" oder unerwünschten Plugins aus einem vollständigen Scan
In diesem Schritt führen wir einen grundlegenden Nikto-Scan gegen einen Test-Webserver durch. Dieser erste Scan dient als Basislinie, die es uns ermöglicht, alle von der Standardgruppe von Plugins generierten Ergebnisse zu sehen. Aus diesem vollständigen Bericht können wir Plugins identifizieren, die wir bei zukünftigen Scans ausschließen möchten.
Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis ~/project befinden. Unser Setup-Skript hat bereits einen einfachen Webserver im Hintergrund gestartet. Führen wir einen Standard-Nikto-Scan dagegen aus. Die Option -h wird verwendet, um den Zielhost anzugeben.
Führen Sie den folgenden Befehl in Ihrem Terminal aus:
nikto -h http://127.0.0.1:8000
Nach Abschluss des Scans sehen Sie einen Bericht. Ihre Ausgabe wird ähnlich wie diese aussehen, obwohl die Serverversion und andere Details variieren können.
- 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.12
+ 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)
+ OSVDB-3233: /cgi-bin/: This might be interesting...
+ 7558 requests: 0 error(s) and 4 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Beachten Sie in der obigen Ausgabe die Zeile: + OSVDB-3233: /cgi-bin/: This might be interesting.... Dieser Fund wird vom cgi-Plugin generiert. Für dieses Lab tun wir so, als wäre dies ein erwartetes Verzeichnis und der Fund wäre nur "Rauschen", das wir unterdrücken möchten.
Verwenden der Option -plugins mit einem führenden Bindestrich
In diesem Schritt lernen wir die Syntax kennen, mit der gesteuert wird, welche Plugins Nikto ausführt. Nikto stellt zu diesem Zweck die Option -plugins zur Verfügung. Um ein Plugin auszuschließen, geben Sie dessen Namen mit einem führenden Bindestrich (-) an.
Um zu erfahren, welche Plugins zur Ein- oder Ausschließung verfügbar sind, können Sie die Option -list-plugins verwenden. Diese gibt eine Liste aller verfügbaren Plugins mit einer kurzen Beschreibung jedes einzelnen aus.
Listen wir alle Plugins auf:
nikto -list-plugins
Die Ausgabe wird eine lange Liste sein. Hier ist ein kleiner Auszug dessen, was Sie sehen werden:
- Nikto v2.5.0
---------------------------------------------------------------------------
Loaded Main Plugins:
- apache_expect_header
Apache Expect header XSS (CVE-2006-3918)
- apache_users
Prüft auf sensible Dateien in ~user-Verzeichnissen
- auth
Prüft auf Authentifizierungsprobleme
- cgi
Prüft auf CGI-Verzeichnisse
- clientaccesspolicy
Prüft auf permissive Client Access Policy (Silverlight)
... (Liste wird fortgesetzt) ...
Aus dieser Liste können Sie die genauen Namen der Plugins finden, die Sie ausschließen möchten, wie z. B. cgi, das wir im vorherigen Schritt identifiziert haben.
Erstellen des Befehls zum Ausschließen eines einzelnen Plugins
In diesem Schritt kombinieren wir das Gelernte, um den Befehl für einen neuen Scan zu erstellen, der ein einzelnes Plugin ausschließt. Wir werden das cgi-Plugin anvisieren, das wir in Schritt 1 identifiziert haben.
Die Syntax ist einfach: Sie fügen die Option -plugins zu Ihrem normalen Scanbefehl hinzu, gefolgt vom Plugin-Namen, dem ein Bindestrich vorangestellt ist.
Die Befehlsstruktur lautet: nikto -h [target] -plugins -[plugin_to_exclude]
Basierend auf dieser Struktur lautet der Befehl zum Scannen unseres lokalen Servers unter Ausschluss des cgi-Plugins:
nikto -h http://127.0.0.1:8000 -plugins -cgi
Dieser Befehl weist Nikto an, seinen Standardscan auf http://127.0.0.1:8000 durchzuführen, aber alle mit dem cgi-Plugin verbundenen Prüfungen zu überspringen. Im nächsten Schritt führen wir diesen Befehl aus und beobachten den Unterschied in der Ausgabe.
Scan ausführen und überprüfen, ob das Plugin übersprungen wurde
In diesem Schritt führen Sie den Befehl aus, den wir im vorherigen Schritt erstellt haben. Indem wir den Scan mit ausgeschlossenem cgi-Plugin ausführen, erwarten wir, dass der Bericht die Meldung bezüglich des /cgi-bin/-Verzeichnisses nicht mehr enthält.
Führen Sie nun den Befehl in Ihrem Terminal aus:
nikto -h http://127.0.0.1:8000 -plugins -cgi
Der Scan wird erneut ausgeführt, ist diesmal jedoch etwas schneller, da weniger Prüfungen durchgeführt werden. Die Ausgabe sollte wie folgt aussehen:
- 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.12
+ Der Anti-Clickjacking-Header X-Frame-Options ist nicht vorhanden.
+ Der Header X-Content-Type-Options ist nicht gesetzt. Dies könnte dem User-Agenten ermöglichen, den Inhalt der Website anders als nach dem MIME-Typ darzustellen.
+ 7557 Anfragen: 0 Fehler und 3 Elemente auf dem Remote-Host gemeldet
+ End Time: ...
---------------------------------------------------------------------------
+ 1 Host(s) getestet
Vergleichen Sie diese Ausgabe mit der aus Schritt 1. Sie werden feststellen, dass die Zeile + OSVDB-3233: /cgi-bin/: This might be interesting... nun fehlt. Dies bestätigt, dass wir das cgi-Plugin erfolgreich von unserem Scan ausgeschlossen haben.
Mehrere Plugins in einem einzigen Befehl ausschließen
In diesem Schritt lernen Sie, wie Sie mehrere Plugins in einem einzigen Scan ausschließen können. Dies ist nützlich, wenn Sie mehrere "laute" oder irrelevante Plugins gleichzeitig unterdrücken möchten.
Um mehrere Plugins auszuschließen, geben Sie eine durch Kommas getrennte Liste von Plugin-Namen nach der Option -plugins an. Jedem Plugin-Namen in der Liste muss ein Bindestrich vorangestellt werden.
Die Syntax lautet: nikto -h [target] -plugins -[plugin1],-[plugin2],-[plugin3]
Erweitern wir unseren vorherigen Befehl, um auch das Plugin apache_expect_header auszuschließen, das eine weitere häufige Feststellung ist, die in manchen Kontexten als von geringer Priorität angesehen werden könnte.
Erstellen und führen Sie den folgenden Befehl aus:
nikto -h http://127.0.0.1:8000 -plugins -cgi,-apache_expect_header
Die Ausgabe wird nun noch prägnanter sein, da die Prüfungen sowohl des cgi- als auch des apache_expect_header-Plugins übersprungen wurden.
- 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.12
+ Der Anti-Clickjacking-Header X-Frame-Options ist nicht vorhanden.
+ Der Header X-Content-Type-Options ist nicht gesetzt. Dies könnte dem User-Agenten ermöglichen, den Inhalt der Website anders als nach dem MIME-Typ darzustellen.
+ ... Anfragen: 0 Fehler und 2 Elemente auf dem Remote-Host gemeldet
+ End Time: ...
---------------------------------------------------------------------------
+ 1 Host(s) getestet
Wie Sie sehen können, können Sie durch selektives Ausschließen von Plugins das Scan-Verhalten von Nikto an Ihre spezifischen Bedürfnisse anpassen, was zu saubereren und relevanteren Berichten führt.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie Nikto-Scans durch Ausschließen spezifischer Plugins anpassen können. Sie haben mit einem vollständigen Baseline-Scan begonnen, um ein Plugin zu identifizieren, das ausgeschlossen werden soll. Anschließend haben Sie die Option -plugins und den Befehl -list-plugins kennengelernt. Schließlich haben Sie das Erstellen und Ausführen von Befehlen zum Ausschließen einzelner und mehrerer Plugins geübt und die Ergebnisse durch Beobachtung der Änderungen in der Scan-Ausgabe verifiziert. Diese Technik ist unerlässlich, um effizientere, gezieltere und weniger "laute" Schwachstellenscans mit Nikto durchzuführen.


