Kali Schwachstellenscan mit Nikto

Kali LinuxKali LinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie die Grundlagen des Web-Schwachstellenscans mit Nikto, einem leistungsstarken Open-Source-Tool, in einer Kali Linux-Umgebung kennen. Ziel ist es, zu verstehen, wie man potenzielle Sicherheitsprobleme auf Webservern identifiziert, indem man Scans durchführt, Ergebnisse interpretiert und Berichte zur weiteren Analyse speichert. Durch schrittweise Übungen in der LabEx VM sammeln Sie praktische Erfahrungen mit der Nikto-Befehlszeilenschnittstelle (command-line interface). Dieses Lab ist für Anfänger konzipiert und führt Sie durch jeden Prozess in einer kontrollierten Container-Umgebung, um grundlegende Fähigkeiten in der Web-Sicherheitsbewertung (web security assessments) aufzubauen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kali(("Kali")) -.-> kali/KaliGroup(["Kali"]) kali/KaliGroup -.-> kali/term_ops("Kali Terminal") kali/KaliGroup -.-> kali/file_ctrl("File Management") kali/KaliGroup -.-> kali/pkg_ops("Package Management") kali/KaliGroup -.-> kali/web_ctrl("Web Services") kali/KaliGroup -.-> kali/vuln_scan("Vulnerability Scanning") kali/KaliGroup -.-> kali/nikto_ops("Nikto Scanner") subgraph Lab Skills kali/term_ops -.-> lab-552301{{"Kali Schwachstellenscan mit Nikto"}} kali/file_ctrl -.-> lab-552301{{"Kali Schwachstellenscan mit Nikto"}} kali/pkg_ops -.-> lab-552301{{"Kali Schwachstellenscan mit Nikto"}} kali/web_ctrl -.-> lab-552301{{"Kali Schwachstellenscan mit Nikto"}} kali/vuln_scan -.-> lab-552301{{"Kali Schwachstellenscan mit Nikto"}} kali/nikto_ops -.-> lab-552301{{"Kali Schwachstellenscan mit Nikto"}} end

Einrichten der Umgebung und Installieren von Nikto

In diesem ersten Schritt richten Sie Ihre Arbeitsumgebung im Kali Linux-Container ein und stellen sicher, dass Nikto, der Web-Schwachstellenscanner (web vulnerability scanner), installiert und einsatzbereit ist. Dieses Lab wird innerhalb der LabEx VM durchgeführt, und wenn Sie das Terminal öffnen, werden Sie automatisch mit der Shell des Kali Linux-Containers verbunden. Es ist nicht erforderlich, den Container manuell zu starten oder die Shell zu betreten; die Umgebung ist bereits für Sie konfiguriert.

Beginnen wir mit dem Verständnis des Setups. Die LabEx VM läuft auf einem unabhängigen Cloud-Host mit vorinstalliertem Docker, und ein Kali Linux-Container wurde so eingerichtet, dass er automatisch ausgeführt wird. Alle Ihre Operationen finden innerhalb des Terminals dieses Containers statt. Nikto ist ein Tool, mit dem Webserver auf Schwachstellen wie veraltete Software oder Fehlkonfigurationen gescannt werden. Wir müssen sicherstellen, dass es installiert ist, bevor wir fortfahren.

Aktualisieren Sie zunächst die Paketliste im Kali Linux-Container, um sicherzustellen, dass Sie die neuesten Informationen zu verfügbarer Software haben. Führen Sie den folgenden Befehl im Terminal aus:

apt update

Dieser Befehl ruft die neuesten Paketinformationen aus den konfigurierten Repositories ab. Es kann einen Moment dauern, bis der Vorgang abgeschlossen ist, und Sie sehen eine Ausgabe, die den Fortschritt anzeigt, z. B. das Herunterladen von Paketlisten. Eine Beispielausgabe könnte wie folgt aussehen:

Get:1 http://mirrors.cloud.aliyuncs.com/kali kali-rolling InRelease [30.9 kB]
Get:2 http://mirrors.cloud.aliyuncs.com/kali kali-rolling/main amd64 Packages [18.1 MB]
...
Fetched 18.5 MB in 5s (3,700 kB/s)
Reading package lists... Done

Sobald das Update abgeschlossen ist, installieren Sie Nikto, falls es noch nicht im Container vorhanden ist. Verwenden Sie den folgenden Befehl, um es zu installieren:

apt install -y nikto iputils-ping

Das Flag -y bestätigt die Installation automatisch, ohne zur Eingabe aufzufordern. Dieser Vorgang kann eine Weile dauern, und Sie sehen eine Ausgabe, die den Installationsfortschritt anzeigt, z. B. das Herunterladen und Einrichten des Pakets. Eine Beispielausgabe könnte sein:

Reading package lists... Done
Building dependency tree... Done
...
Setting up nikto (1:2.1.5-3.1) ...

Überprüfen Sie nach der Installation, ob Nikto korrekt installiert wurde, indem Sie seine Version überprüfen. Führen Sie diesen Befehl aus:

nikto -Version

Dieser Befehl zeigt die installierte Version von Nikto an und bestätigt, dass es einsatzbereit ist. Die erwartete Ausgabe sollte in etwa so aussehen:

Nikto 2.5.0 (LW 2.5)

Nachdem Nikto installiert ist, können Sie mit den nächsten Schritten fortfahren, in denen Sie es zum Scannen von Webservern verwenden. Dieser Schritt stellt sicher, dass Ihre Umgebung ordnungsgemäß konfiguriert ist und die notwendigen Tools für die bevorstehenden Aufgaben verfügbar sind.

Ausführen eines einfachen Nikto Web-Scans

Nachdem Nikto in Ihrem Kali Linux-Container installiert ist, lernen Sie, wie Sie einen einfachen Web-Schwachstellenscan (web vulnerability scan) durchführen. Dieser Schritt baut auf der Umgebungseinrichtung aus dem vorherigen Schritt auf und führt Sie in die Verwendung von Nikto ein, um potenzielle Sicherheitsprobleme auf einem Webserver zu identifizieren. Da Sie sich bereits in der Shell des Kali Linux-Containers befinden, wenn Sie das Terminal in der LabEx VM öffnen, ist es nicht erforderlich, den Container manuell zu starten oder zu betreten.

Lassen Sie uns verstehen, was ein einfacher Nikto-Scan bewirkt. Nikto scannt einen Ziel-Webserver auf häufige Schwachstellen, wie z. B. veraltete Softwareversionen oder Fehlkonfigurationen, die ausgenutzt werden könnten. Für dieses Lab verwenden wir einen öffentlich zugänglichen Testserver, testphp.vulnweb.com, der zum Erlernen und Üben des Schwachstellenscans entwickelt wurde. Dies stellt sicher, dass wir auf ethische und sichere Weise scannen.

Um zu beginnen, führen Sie einen einfachen Scan auf dem Testserver mit Nikto aus. Geben Sie den folgenden Befehl im Terminal ein:

nikto -h testphp.vulnweb.com

Die Option -h gibt den zu scannenden Host an, in diesem Fall testphp.vulnweb.com. Dieser Scan kann einige Minuten dauern, abhängig von den Netzwerkbedingungen und der Konfiguration des Ziels. Während des Scans sehen Sie im Terminal eine Ausgabe, die den Fortschritt anzeigt. Eine Beispielausgabe könnte wie folgt aussehen:

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          44.228.249.3
+ Target Hostname:    testphp.vulnweb.com
+ Target Port:        80
+ Start Time:         2025-04-21 07:29:12 (GMT0)
---------------------------------------------------------------------------
+ Server: nginx/1.19.0
+ /: Retrieved x-powered-by header: PHP/5.6.40-38+ubuntu20.04.1+deb.sury.org+1.
...
---------------------------------------------------------------------------
+ 1 host(s) tested

Diese Ausgabe liefert erste Informationen über das Ziel, wie z. B. seine IP-Adresse, seinen Hostnamen und seinen Port. Sie listet auch potenzielle Probleme auf, wie z. B. fehlende Sicherheitsheader oder veraltete Komponenten. Machen Sie sich keine Sorgen, wenn die Ausgabe detailliert erscheint; der Fokus liegt hier auf dem Ausführen des Scans und der Beobachtung des Prozesses. In den nächsten Schritten werden wir diese Ergebnisse genauer analysieren.

Wenn der Scan nicht startet oder keine Ausgabe erscheint, stellen Sie sicher, dass Ihre Internetverbindung innerhalb der LabEx VM aktiv ist. Sie können die Konnektivität zum Ziel testen, indem Sie Folgendes ausführen:

ping -c 4 testphp.vulnweb.com

Dieser Befehl sendet einige Pakete an das Ziel, um zu überprüfen, ob es erreichbar ist. Wenn Sie Antworten sehen, ist der Server erreichbar; wenn nicht, wiederholen Sie den Scan oder überprüfen Sie Ihre Netzwerkeinstellungen in der LabEx VM.

PING testphp.vulnweb.com (44.228.249.3) 56(84) bytes of data.
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=1 ttl=55 time=21.4 ms
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=2 ttl=55 time=21.7 ms
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=3 ttl=55 time=21.5 ms
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=4 ttl=55 time=21.5 ms

--- testphp.vulnweb.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 21.435/21.523/21.699/0.103 ms

Dieser Schritt hat Sie in die Ausführung eines einfachen Nikto-Scans eingeführt und die Grundlage für spezifischere Scans und Analysen in den folgenden Schritten gelegt. Sie haben den Scan-Befehl ausgeführt und die erste Ausgabe direkt im Terminal des Kali Linux-Containers beobachtet.

Verwenden der Nikto-Tuning-Optionen für gezieltes Scannen

Aufbauend auf dem einfachen Scan, den Sie im vorherigen Schritt durchgeführt haben, lernen Sie nun, wie Sie mit den Nikto-Tuning-Optionen gezieltere Scans durchführen. Mit Nikto können Sie Ihre Scans auf bestimmte Arten von Schwachstellen konzentrieren, was nützlich ist, wenn Sie nach bestimmten Problemen suchen oder die Scanzeit verkürzen möchten.

In diesem Schritt lernen Sie, wie Sie die Nikto-Tuning-Funktion verwenden, um Ihre Scans in der Kali Linux-Containerumgebung anzupassen.

Lassen Sie uns zunächst verstehen, welche Tuning-Optionen in Nikto verfügbar sind. Sie können die vollständige Liste der verfügbaren Tuning-Optionen mit dem folgenden Befehl anzeigen:

nikto -h testphp.vulnweb.com -Display V

Die Option -Display V zeigt eine ausführliche Ausgabe (verbose output) an, einschließlich Tuning-Informationen. In der Ausgabe sehen Sie verschiedene Testkategorien, die mit Zahlen und Buchstaben gekennzeichnet sind.

Führen wir nun einen gezielten Scan durch, der sich auf häufige dateibezogene Schwachstellen konzentriert. Führen Sie den folgenden Befehl aus:

nikto -h testphp.vulnweb.com -Tuning 2

Die Option -Tuning 2 testet speziell auf File-Disclosure-Schwachstellen (file disclosure vulnerabilities). Dieser Scan kann einige Minuten dauern, und Sie sehen im Terminal eine Ausgabe ähnlich der folgenden:

- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          44.228.249.3
+ Target Hostname:    testphp.vulnweb.com
+ Target Port:        80
---------------------------------------------------------------------------
+ Server: nginx/1.19.0
+ Scanning for File Upload vulnerabilities...
+ Multiple file upload fields found on login.php
...

Sie können auch mehrere Tuning-Optionen kombinieren. Um beispielsweise sowohl auf File-Disclosure- (2) als auch auf Fehlkonfigurations-Schwachstellen (9) zu scannen, verwenden Sie:

nikto -h testphp.vulnweb.com -Tuning 2,9

Dieser kombinierte Scan prüft auf beide Kategorien von Problemen und gibt Ihnen einen umfassenderen Überblick über bestimmte Arten von Schwachstellen, ohne einen vollständigen Scan durchzuführen.

Wenn der Scan keine Ausgabe erzeugt oder auf Fehler stößt, stellen Sie sicher, dass Ihre Internetverbindung aktiv ist, indem Sie die Konnektivität mit Folgendem testen:

ping -c 4 testphp.vulnweb.com

Dieser Schritt hat Ihnen geholfen zu verstehen, wie Sie die Nikto-Tuning-Optionen verwenden, um gezieltere Scans durchzuführen, sodass Sie sich auf bestimmte Sicherheitsbedenken konzentrieren können. In den nächsten Schritten werden wir weitere Nikto-Funktionen untersuchen, die Ihre Fähigkeiten zum Scannen von Schwachstellen verbessern.

Anpassen von Ausgabeformaten und Speichern von Scan-Ergebnissen

Nachdem Sie gelernt haben, wie Sie gezielte Scans mit Nikto durchführen, werden Sie nun untersuchen, wie Sie Ausgabeformate anpassen und Scan-Ergebnisse zur Dokumentation und Analyse speichern können. Die ordnungsgemäße Dokumentation Ihrer Ergebnisse ist ein entscheidender Aspekt von Sicherheitsbewertungen (security assessments), und Nikto bietet verschiedene Optionen zum Formatieren und Speichern Ihrer Scan-Ergebnisse.

In diesem Schritt lernen Sie, wie Sie Berichte in verschiedenen Formaten direkt im Terminal des Kali Linux-Containers erstellen.

Beginnen wir mit der Untersuchung der verschiedenen Ausgabeformatoptionen, die Nikto bietet. Die gebräuchlichsten Formate sind:

  1. Text (Standard): Einfache Textausgabe
  2. HTML: Formatierter HTML-Bericht
  3. CSV: Durch Kommas getrennte Werte (comma-separated values) zum Import in Tabellenkalkulationen
  4. XML: Strukturierte XML-Daten zur automatisierten Verarbeitung

Um die Scan-Ergebnisse im Standardtextformat zu speichern, führen Sie Folgendes aus:

nikto -h testphp.vulnweb.com -o /root/nikto_text_report.txt

Die Option -o gibt den Ausgabedateipfad an. Nachdem der Scan abgeschlossen ist, überprüfen Sie, ob die Datei erstellt wurde, indem Sie ihren Inhalt anzeigen:

cat /root/nikto_text_report.txt

Um einen HTML-Bericht zu erstellen, der ein lesbareres und strukturierteres Format bietet, verwenden Sie:

nikto -h testphp.vulnweb.com -Format htm -o /root/nikto_report.html

Die Option -Format htm weist Nikto an, die Ausgabe als HTML zu formatieren. Sie können die HTML-Datei zwar nicht direkt im Terminal anzeigen, aber Sie können überprüfen, ob sie erstellt wurde:

ls -l /root/nikto_report.html

Für Daten, die in andere Tools oder Tabellenkalkulationen importiert werden müssen, können Sie einen Bericht im CSV-Format erstellen:

nikto -h testphp.vulnweb.com -Format csv -o /root/nikto_report.csv

Nachdem der Scan abgeschlossen ist, überprüfen Sie die CSV-Datei:

head /root/nikto_report.csv

Dadurch werden die ersten Zeilen der CSV-Datei angezeigt, die zeigen, wie die Daten strukturiert sind.

Diese verschiedenen Ausgabeformate dienen unterschiedlichen Zwecken:

  • Textberichte sind im Terminal leicht zu lesen
  • HTML-Berichte sind visuell organisiert und eignen sich gut für die gemeinsame Nutzung mit Teams
  • CSV- und XML-Formate eignen sich hervorragend für den Import in andere Sicherheitstools oder Datenbanken

Indem Sie lernen, wie Sie Ausgabeformate anpassen, haben Sie Ihre Fähigkeit verbessert, Ihre Ergebnisse effektiv zu dokumentieren und zu kommunizieren.

Erweiterte Nikto-Optionen für tieferes Scannen

In diesem letzten Schritt werden Sie einige erweiterte Nikto-Optionen untersuchen, die ein tieferes und umfassenderes Scannen ermöglichen. Diese Funktionen helfen Ihnen, versteckte Schwachstellen aufzudecken und mehr Kontext zu potenziellen Sicherheitsproblemen bereitzustellen. Dies baut auf dem Wissen aus den vorherigen Schritten auf und konzentriert sich auf die erweiterten Funktionen von Nikto innerhalb der Kali Linux-Containerumgebung.

Lassen Sie uns einige der nützlichsten erweiterten Optionen in Nikto untersuchen:

Verwenden wir zunächst die -evasion-Technik, um einfache Intrusion Detection Systems (IDS) zu umgehen. Dies kann beim Testen von Sicherheitskontrollen nützlich sein:

nikto -h testphp.vulnweb.com -evasion 1

Die Option -evasion 1 codiert die URL mit zufälligen Groß- und Kleinbuchstaben. Möglicherweise sehen Sie eine ähnliche Ausgabe wie:

- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          44.228.249.3
+ Target Hostname:    testphp.vulnweb.com
+ Target Port:        80
+ Evasion technique:  Random URI encoding (non-UTF8)
---------------------------------------------------------------------------
+ Server: nginx/1.19.0
...

Scannen wir als Nächstes mit einem bestimmten Port und Protokoll. Während wir bisher den Standard-HTTP-Port 80 gescannt haben, können Sie verschiedene Ports angeben:

nikto -h testphp.vulnweb.com -port 443 -ssl

Die Option -port 443 zielt auf Port 443 ab, und -ssl weist Nikto an, das HTTPS-Protokoll zu verwenden. Für diesen Testserver liefert dies möglicherweise keine Ergebnisse, da HTTPS möglicherweise nicht aktiviert ist, aber es demonstriert, wie sichere Webdienste gescannt werden können.

Für Websites, die eine Authentifizierung erfordern, bietet Nikto Optionen zur Behandlung der einfachen HTTP-Authentifizierung:

nikto -h testphp.vulnweb.com -id admin:password

Mit der Option -id können Sie Anmeldeinformationen im Format username:password angeben. Für den Testserver funktionieren diese Anmeldeinformationen nicht, aber es zeigt, wie authentifizierte Scans konfiguriert werden.

Sie können auch die Ausführlichkeit (verbosity) des Scans erhöhen, um detailliertere Informationen zu erhalten:

nikto -h testphp.vulnweb.com -Display V -o /root/nikto_verbose_report.txt

Die Option -Display V bietet eine ausführliche Ausgabe (verbose output) und zeigt weitere Details zu jedem durchgeführten Test an. Das Speichern in einer Datei mit -o bietet Ihnen eine umfassende Dokumentation des Scans.

Kombinieren wir abschließend mehrere Optionen für einen umfassenden Scan:

nikto -h testphp.vulnweb.com -Tuning x -no404 -Format htm -o /root/final_report.html

In diesem Befehl:

  • -Tuning x testet alles außer DoS-Schwachstellen (Denial of Service vulnerabilities)
  • -no404 reduziert Fehlalarme (false positives), indem keine 404-Fehler gemeldet werden
  • -Format htm speichert den Bericht im HTML-Format
  • -o gibt die Ausgabedatei an

Dieser Schritt hat Ihnen verschiedene erweiterte Nikto-Optionen vorgestellt, die Ihre Fähigkeiten zum Scannen von Web-Schwachstellen erweitern. Durch die Kombination dieser verschiedenen Techniken können Sie gründliche Sicherheitsbewertungen (security assessments) durchführen und umfassende Berichte erstellen, die auf Ihre spezifischen Bedürfnisse zugeschnitten sind.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Nikto, einen leistungsstarken Web-Schwachstellen-Scanner (web vulnerability scanner), in einer Kali Linux-Umgebung verwenden. Sie begannen mit der Einrichtung der Umgebung und der Installation von Nikto und arbeiteten sich dann durch immer ausgefeiltere Scantechniken vor.

Sie begannen mit einfachen Scans, um häufige Schwachstellen auf einem Testserver zu identifizieren, und lernten dann, wie Sie gezielte Scans mit den Tuning-Optionen von Nikto durchführen, um sich auf bestimmte Arten von Schwachstellen zu konzentrieren. Sie haben verschiedene Ausgabeformate untersucht, darunter Text, HTML und CSV, um Ihre Ergebnisse effektiv zu dokumentieren und zu kommunizieren.

Schließlich haben Sie erweiterte Optionen für tieferes Scannen entdeckt, darunter Evasion-Techniken (evasion techniques), Port- und Protokollspezifikation, Authentifizierungsbehandlung (authentication handling) und ausführliche Ausgabe (verbose output). Diese Fähigkeiten bieten eine solide Grundlage für die Durchführung von Web-Sicherheitsbewertungen (web security assessments), sei es für Bildungszwecke oder für professionelle Sicherheitstests.

Die in diesem Lab gesammelten praktischen Erfahrungen vermitteln Ihnen praktisches Wissen über die Befehlszeilenschnittstelle von Nikto und die Fähigkeit, Scans an Ihre spezifischen Anforderungen anzupassen. Dies sind wesentliche Fähigkeiten für alle, die sich für Websicherheit und Schwachstellenbewertung (vulnerability assessment) interessieren.