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.
Das Verständnis, wie die Ergebnisse eines Nikto-Scans gelesen und interpretiert werden, ist eine grundlegende Fähigkeit für jeden im Bereich Cybersicherheit, von Penetrationstestern bis hin zu Systemadministratoren. Die Ausgabe kann anfangs kryptisch erscheinen, ist aber so strukturiert, dass sie wertvolle Einblicke in die Konfiguration eines Webservers und potenzielle Sicherheitslücken bietet.
In diesem Lab lernen Sie, wie Sie einen Standard-Nikto-Scanbericht analysieren. Um Zeit zu sparen und sich auf die Interpretation zu konzentrieren, wurde Ihnen eine vorab generierte Scan-Ergebnisdatei zur Verfügung gestellt. Sie werden diese Datei analysieren, um Zielinformationen zu identifizieren, zwischen den Funden zu unterscheiden, Schwachstellenreferenzen zu verstehen und die abschließende Zusammenfassung zu überprüfen.
Lokalisieren des Abschnitts mit der Zielinformationen-Zusammenfassung
In diesem Schritt untersuchen Sie den Anfang des Nikto-Berichts, um grundlegende Informationen über das gescannte Ziel zu identifizieren. Dieser Abschnitt ist entscheidend, da er bestätigt, was getestet wurde und welche grundlegende Server-Software erkannt wurde.
Eine Beispielberichtdatei namens nikto_scan_results.txt wurde in Ihrem Verzeichnis ~/project erstellt. Verwenden Sie den Befehl cat, um deren Inhalt im Terminal anzuzeigen.
cat ~/project/nikto_scan_results.txt
Betrachten Sie die ersten Zeilen der Ausgabe. Dieser anfängliche Block liefert eine Zusammenfassung des Ziels.
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP: 172.17.0.2
+ Target Hostname: labex-server
+ Target Port: 80
+ Start Time: 2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
Hier ist die Bedeutung dieser Zeilen:
Target IP: Die IP-Adresse des gescannten Servers.Target Hostname: Der Hostname des Servers.Target Port: Der TCP-Port, auf dem der Webdienst läuft (normalerweise 80 für HTTP oder 443 für HTTPS).Server: Die Server-Software und -Version, wie sie im HTTP-HeaderServergemeldet wird. In diesem Fall ist es Apache Version 2.4.52, der unter Ubuntu läuft.
Identifizieren von informativen Funden und OSVDB-Referenzen
In diesem Schritt lernen Sie, informative Funde zu identifizieren, die mit einem +-Symbol gekennzeichnet sind. Dies sind nicht immer direkte Schwachstellen, sondern liefern nützliche Kontextinformationen zur Serverkonfiguration.
Viele Funde in Nikto sind mit einer OSVDB (Open Source Vulnerability Database) ID verknüpft. Obwohl das OSVDB-Projekt nicht mehr aktiv ist, können diese IDs immer noch für historische Referenzen und die Suche nach Details zu einem bestimmten Problem nützlich sein.
Verwenden wir den Befehl grep, um den Bericht zu filtern und nur die Zeilen anzuzeigen, die Funde darstellen. In der Ausgabe von Nikto beginnen diese Zeilen mit einem +.
grep "^\+" ~/project/nikto_scan_results.txt
Sie sehen eine Liste aller Funde aus dem Scan.
+ Target IP: 172.17.0.2
+ Target Hostname: labex-server
+ Target Port: 80
+ Start Time: 2023-10-27 10:30:00 (GMT0)
+ Server: Apache/2.4.52 (Ubuntu)
+ 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.
+ Uncommon header 'x-powered-by' found, with contents: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS
+ OSVDB-3233: /icons/README: The Apache web server is configured to return a valid response to a request for /icons/README.
+ /index.php: PHP is installed.
+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
+ 8123 requests: 0 error(s) and 11 item(s) reported on remote host
+ End Time: 2023-10-27 10:38:20 (GMT0) (500 seconds)
+ 1 host(s) tested
Beachten Sie die Zeile + OSVDB-3233: /icons/README: .... Dies kennzeichnet einen informativen Fund (ID 3233) im Zusammenhang mit einer öffentlich zugänglichen README-Datei im Verzeichnis /icons/, was bei Apache-Servern üblich ist.
Unterscheiden zwischen Low- und High-Risk-Schwachstellen
In diesem Schritt lernen Sie, zwischen Funden zu unterscheiden, die ein geringes Risiko darstellen, und solchen, die von höherer Bedeutung sein könnten. Nikto weist keinen Schweregrad zu; es liegt an Ihnen, dem Analysten, die Ergebnisse kontextbezogen zu interpretieren.
Low-Risk-Funde beziehen sich typischerweise auf nicht implementierte Sicherheitspraktiken (Security Best Practices). Zum Beispiel:
+ The anti-clickjacking X-Frame-Options header is not present.
Dies ist ein fehlender Sicherheitsheader. Obwohl es eine gute Praxis ist, ihn zu haben, führt seine Abwesenheit allein normalerweise nicht zu einer direkten Kompromittierung.
Higher-Risk-Funde deuten oft auf Informationspreisgabe (Information Disclosure) oder Fehlkonfigurationen hin, die ausgenutzt werden könnten. Zum Beispiel:
+ /admin/: Directory indexing found.
Dies ist ernster. Directory Indexing ermöglicht es einem Angreifer, alle Dateien und Unterverzeichnisse im /admin/-Verzeichnis einzusehen, was potenziell sensible Dateien, die Anwendungsstruktur oder Backup-Dateien preisgeben könnte.
Verwenden wir grep, um diesen höhergradigen Fund aus dem Bericht zu isolieren.
grep "Directory indexing" ~/project/nikto_scan_results.txt
Dieser Befehl zeigt Ihnen alle Instanzen an, bei denen Directory Indexing entdeckt wurde.
+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
Das Sehen dieser Ergebnisse sollte einen Analysten dazu veranlassen, diese Verzeichnisse sofort zu untersuchen, um festzustellen, ob sensible Informationen preisgegeben werden.
Bedeutung von CGI-Verzeichnis-Funden verstehen
In diesem Schritt konzentrieren Sie sich auf Funde im Zusammenhang mit CGI-Verzeichnissen. CGI (Common Gateway Interface) ist ein Standardprotokoll, das es Webservern ermöglicht, externe Programme, wie z. B. Skripte, auszuführen. Diese Verzeichnisse sind ein häufiges Ziel für Angreifer, da sie oft ausführbare Dateien enthalten, die Schwachstellen aufweisen können.
Nikto prüft speziell auf gängige CGI-Verzeichnisse wie /cgi-bin/. Das Finden eines solchen Verzeichnisses und der darin enthaltenen Skripte ist ein bedeutendes Ereignis.
Verwenden wir grep, um alle Zeilen im Bericht zu finden, die /cgi-bin/ erwähnen.
grep "/cgi-bin/" ~/project/nikto_scan_results.txt
Die Ausgabe zeigt zwei Funde im Zusammenhang mit diesem Verzeichnis.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
Die erste Zeile bestätigt, dass für das /cgi-bin/-Verzeichnis selbst Directory Indexing aktiviert ist, was ein High-Risk-Fund ist, wie im vorherigen Schritt erläutert. Die zweite Zeile gibt an, dass Nikto ein test.cgi-Skript gefunden hat. Testskripte werden oft von Entwicklern zurückgelassen und können manchmal Schwachstellen aufweisen oder Informationen über die Serverumgebung preisgeben. Ein Analyst würde dies für eine manuelle Untersuchung markieren.
Überprüfung der Zusammenfassungsstatistiken am Ende des Scans
In diesem letzten Schritt untersuchen Sie den Zusammenfassungsabschnitt am Ende des Nikto-Berichts. Dieser Abschnitt bietet einen schnellen Überblick über die Ausführung und den Umfang des Scans.
Um die letzten Zeilen der Datei einfach anzuzeigen, können Sie den Befehl tail verwenden. Sehen wir uns die letzten 10 Zeilen des Berichts an.
tail -n 10 ~/project/nikto_scan_results.txt
Dies zeigt das Ende des Berichts an, einschließlich der Zusammenfassungsstatistiken.
+ /admin/: Directory indexing found.
+ OSVDB-3233: /cgi-bin/: directory indexing found.
+ OSVDB-3268: /cgi-bin/test.cgi: This might be interesting...
+ 8123 requests: 0 error(s) and 11 item(s) reported on remote host
+ End Time: 2023-10-27 10:38:20 (GMT0) (500 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
Hier ist eine Aufschlüsselung der wichtigsten Zusammenfassungszeilen:
8123 requests: 0 error(s) and 11 item(s) reported...: Dies besagt, dass Nikto 8.123 HTTP-Anfragen an den Server gesendet, keine Fehler festgestellt und 11 interessante Elemente gefunden hat.End Time: Dies zeigt den Zeitstempel an, wann der Scan abgeschlossen wurde, und die Gesamtdauer.1 host(s) tested: Dies bestätigt, dass der Scan gegen ein einzelnes Ziel ausgeführt wurde.
Diese Zusammenfassung ist nützlich, um den Umfang des Scans zu verstehen und eine allgemeine Zählung der Funde zu erhalten.
Zusammenfassung
In diesem Lab haben Sie die wesentlichen Fähigkeiten zur Interpretation eines Standard-Nikto-Scanberichts erlernt. Sie haben einen systematischen Ansatz zur Analyse der Ausgabe geübt, beginnend mit den grundlegenden Zielinformationen und fortschreitend zu detaillierteren Funden.
Sie haben gelernt:
- Die IP-Adresse, den Port und das Software-Banner des Zielservers zu identifizieren.
- Informative Funde und die Bedeutung von OSVDB-Referenzen zu erkennen.
- Zwischen Funden mit geringem Risiko (wie fehlenden Headern) und Funden mit höherem Risiko (wie Directory Indexing) zu unterscheiden.
- Die Bedeutung von CGI-Verzeichnisentdeckungen zu verstehen.
- Die Zusammenfassung am Ende des Scans für einen Überblick zu überprüfen.
Dieser Prozess der strukturierten Analyse ist entscheidend, um rohe Scanner-Ausgaben in umsetzbare Informationen zur Sicherung von Webanwendungen umzuwandeln.


