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.
Eine seiner Hauptfunktionen ist das Scannen von Common Gateway Interface (CGI)-Verzeichnissen. CGI-Skripte können eine Quelle erheblicher Schwachstellen sein, wenn sie nicht ordnungsgemäß gesichert sind. Standardmäßig scannt Nikto eine vordefinierte Liste gängiger CGI-Verzeichnisse. Für ein effizienteres und gezielteres Scannen ist es jedoch entscheidend zu wissen, wie dieses Verhalten gesteuert werden kann.
In diesem Lab lernen Sie, wie Sie die Option -Cgidirs von Nikto verwenden, um das Scannen von CGI-Verzeichnissen zu verwalten, einschließlich des Deaktivierens, des Scannens aller möglichen Verzeichnisse und des Angebens benutzerdefinierter Verzeichnisse zum Testen.
Nikto's Standardverhalten beim Scannen von CGI-Verzeichnissen verstehen
In diesem Schritt starten Sie einen einfachen Webserver und führen einen Standard-Nikto-Scan durch, um sein übliches Verhalten beim Auffinden von CGI-Verzeichnissen zu beobachten.
Zuerst richten wir einen einfachen Webserver zum Scannen ein. Wir verwenden dafür das integrierte Modul http.server von Python.
Navigieren Sie in das für Sie vorbereitete Verzeichnis webroot.
cd ~/project/webroot
Starten Sie nun den Webserver auf Port 8000. Das & am Ende des Befehls führt den Server im Hintergrund aus, sodass Sie das Terminal weiterhin nutzen können.
python3 -m http.server 8000 &
Sie sollten eine Meldung sehen, die anzeigt, dass der Server läuft.
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Nachdem der Server läuft, führen wir einen grundlegenden Nikto-Scan dagegen durch. Die Option -h wird verwendet, um den Zielhost anzugeben.
nikto -h http://localhost:8000
Nach Abschluss des Scans überprüfen Sie die Ausgabe. Nikto prüft viele Dinge, aber Sie sollten eine Zeile finden, die angibt, dass es das Verzeichnis /cgi-bin/ gefunden hat. Dies liegt daran, dass /cgi-bin/ eines der gängigen Verzeichnisse ist, die Nikto standardmäßig prüft.
- Nikto v2.x
---------------------------------------------------------------------------
+ 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-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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)
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3092: /: This might be interesting...
+ /index.html: This might be interesting...
+ 7 items found on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Hinweis: In einigen neueren Nikto-Versionen oder Konfigurationen meldet der Standardscan möglicherweise
/cgi-bin/nicht, es sei denn, ein spezifischer Test löst dies aus. Die wichtigste Erkenntnis ist das Verständnis, dass eine Standardmenge von Pfaden überprüft wird. Wir werden diese Prüfungen in den nächsten Schritten erzwingen, um klarere Ergebnisse zu sehen.
Verwenden von -Cgidirs none zum Deaktivieren des gesamten CGI-Verzeichnis-Scans
In diesem Schritt lernen Sie, wie Sie das Scannen von CGI-Verzeichnissen vollständig deaktivieren. Dies ist nützlich, wenn Sie einen schnellen Scan durchführen möchten, der sich auf andere Schwachstellen konzentriert, oder wenn Sie sicher sind, dass der Zielserver keine CGI-Skripte verwendet.
Die Option -Cgidirs steuert das CGI-Scannen. Indem Sie ihren Wert auf none setzen, weisen Sie Nikto an, diesen Teil des Tests vollständig zu überspringen.
Führen Sie den folgenden Befehl aus, um den Server erneut zu scannen, diesmal jedoch mit deaktiviertem CGI-Scanning:
nikto -h http://localhost:8000 -Cgidirs none
Untersuchen Sie die Ausgabe. Sie werden feststellen, dass sie dem vorherigen Scan sehr ähnlich ist, aber explizit bestätigt, dass keine CGI-Verzeichnisse gescannt wurden. Die Zeile No CGI directories found wird weiterhin vorhanden sein, aber diesmal, weil wir Nikto angewiesen haben, nicht danach zu suchen. Dies macht den Scan etwas schneller.
- Nikto v2.x
---------------------------------------------------------------------------
+ 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-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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
+ CGI directory scanning has been disabled.
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3092: /: This might be interesting...
+ /index.html: This might be interesting...
+ 7 items found on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Beachten Sie die Zeile + CGI directory scanning has been disabled., die bestätigt, dass unser Befehl wie erwartet funktioniert hat.
Verwenden von -Cgidirs all zum Scannen aller konfigurierten CGI-Verzeichnisse
In diesem Schritt verwenden Sie den Wert all für die Option -Cgidirs. Dies zwingt Nikto, den umfassendsten CGI-Scan durchzuführen, indem jedes Verzeichnis überprüft wird, das in seiner internen Konfiguration aufgeführt ist. Dies ist gründlicher als der Standardscan.
Führen Sie den Nikto-Scan mit der Option -Cgidirs all aus:
nikto -h http://localhost:8000 -Cgidirs all
Inspizieren Sie nun sorgfältig die Ausgabe. Diesmal wird Nikto explizit das Verzeichnis /cgi-bin/ melden, da unser Testserver es hat und das Flag all sicherstellt, dass es überprüft wird.
- Nikto v2.x
---------------------------------------------------------------------------
+ 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-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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
+ OSVDB-3233: /cgi-bin/: Directory indexing found.
+ OSVDB-3092: /cgi-bin/: This might be interesting...
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3092: /: This might be interesting...
+ /index.html: This might be interesting...
+ 8 items found on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Sie sehen zwei neue Funde im Zusammenhang mit /cgi-bin/, die bestätigen, dass der erzwungene Scan erfolgreich war.
Angabe eines benutzerdefinierten CGI-Verzeichnispfads zum Scannen
In diesem Schritt lernen Sie, wie Sie nach spezifischen, nicht standardmäßigen CGI-Verzeichnissen suchen. Dies ist äußerst nützlich, wenn Sie eine benutzerdefinierte Webanwendung bewerten, die ihre Skripte an einzigartigen Orten platziert.
Unsere Einrichtung umfasst ein Verzeichnis namens /cgi-custom/. Ein Standard-Nikto-Scan würde dieses nicht finden. Wir können Nikto anweisen, gezielt danach zu suchen, indem wir den Pfad an die Option -Cgidirs übergeben.
Führen Sie den folgenden Befehl aus, um nur nach dem Verzeichnis /cgi-custom/ zu suchen:
nikto -h http://localhost:8000 -Cgidirs /cgi-custom/
Überprüfen Sie die Ausgabe. Nikto wird nun melden, dass es /cgi-custom/ gefunden hat. Es wird nicht /cgi-bin/ melden, da wir den Scan auf den von uns angegebenen Pfad beschränkt haben.
- Nikto v2.x
---------------------------------------------------------------------------
+ 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-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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
+ OSVDB-3233: /cgi-custom/: Directory indexing found.
+ OSVDB-3092: /cgi-custom/: This might be interesting...
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3092: /: This might be interesting...
+ /index.html: This might be interesting...
+ 8 items found on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Wie Sie sehen können, hat der Scan das benutzerdefinierte Verzeichnis erfolgreich identifiziert, was zeigt, wie Sie das CGI-Scanning von Nikto an Ihre spezifischen Bedürfnisse anpassen können.
Vergleichen von Ergebnissen aus verschiedenen CGI-Scanstrategien
Im letzten Schritt werden wir die Ergebnisse der verschiedenen von Ihnen verwendeten Scanstrategien überprüfen und vergleichen. Dies wird Ihnen helfen, Ihr Verständnis dafür zu festigen, wie Sie die CGI-Scans von Nikto steuern können.
Sie haben vier verschiedene Arten von Scans durchgeführt:
- Standard-Scan (
nikto -h ...): Scannte eine Standardliste gängiger Verzeichnisse. In unserem Fall wurde/cgi-bin/zunächst nicht markiert, obwohl das Verzeichnis vorhanden war. Dieser Scan bietet eine gute Basis. - Kein CGI-Scan (
-Cgidirs none): Alle CGI-Verzeichnisprüfungen wurden vollständig übersprungen. Die Ausgabe bestätigte, dassCGI directory scanning has been disabled. Dies ist die schnellste Option, wenn Sie keine CGI-Prüfungen durchführen müssen. - Alle CGI-Scans (
-Cgidirs all): Erzwang eine Überprüfung aller Nikto bekannten CGI-Verzeichnisse. Dieser Scan hat unser/cgi-bin/-Verzeichnis erfolgreich gefunden und gemeldet. Dies ist die gründlichste, aber auch die langsamste Option. - Benutzerdefinierter CGI-Scan (
-Cgidirs /cgi-custom/): Scannte nur nach dem spezifischen Verzeichnis/cgi-custom/und fand es erfolgreich, wobei alle anderen wie/cgi-bin/ignoriert wurden. Dies ist der gezielteste Ansatz.
Die Wahl der richtigen Strategie hängt von Ihrem Ziel ab:
- Für einen schnellen Überblick ist der Standard-Scan oft ausreichend.
- Um absolut gründlich zu sein, verwenden Sie
all. - Um Zeit auf einem bekannten Nicht-CGI-Server zu sparen, verwenden Sie
none. - Für benutzerdefinierte Anwendungen ist die Angabe von benutzerdefinierten Pfaden die effizienteste Methode.
Zum Schluss räumen wir auf, indem wir den Python-Webserver stoppen. Da es der erste und einzige Hintergrundjob war, den Sie gestartet haben, können Sie ihn mit dem Befehl kill %1 stoppen.
kill %1
Sie sehen eine Meldung "Terminated", die bestätigt, dass der Server heruntergefahren wurde.
Zusammenfassung
In diesem Lab haben Sie praktische Erfahrungen mit der Steuerung des CGI-Verzeichnissuchens in Nikto gesammelt. Sie haben gelernt, wie Sie einen einfachen Webserver zu Testzwecken starten und dann verschiedene Scanstrategien mit der Option -Cgidirs anwenden.
Sie haben erfolgreich:
- Einen Standard-Nikto-Scan durchgeführt.
- Das CGI-Scanning vollständig mit
-Cgidirs nonedeaktiviert. - Einen umfassenden Scan aller bekannten CGI-Verzeichnisse mit
-Cgidirs alldurchgeführt. - Ein spezifisches, nicht standardmäßiges Verzeichnis durch Angabe eines benutzerdefinierten Pfads anvisiert.
Durch die Beherrschung dieser Optionen können Sie nun effizientere, gezieltere und effektivere Schwachstellenscans von Webservern mit Nikto durchführen und Ihre Tests an die spezifischen Merkmale Ihres Ziels anpassen.


