Scan mit Basic Authentication in Nikto durchführen

Kali LinuxBeginner
Jetzt üben

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.

Viele Webanwendungen verfügen über eingeschränkte Bereiche, die nur nach Eingabe gültiger Anmeldeinformationen durch einen Benutzer zugänglich sind. Die HTTP Basic Authentication ist eine der einfachsten Methoden zum Schutz dieser Bereiche. Für eine gründliche Sicherheitsbewertung ist es unerlässlich, diese authentifizierten Abschnitte zu scannen.

In diesem Lab lernen Sie, wie Sie Nikto verwenden, um einen authentifizierten Scan eines durch Basic Authentication geschützten Webverzeichnisses durchzuführen. Sie verwenden die Option -id, um die erforderlichen Anmeldeinformationen bereitzustellen, sodass Nikto auf die geschützten Ressourcen zugreifen und diese auf Schwachstellen testen kann.

Identifizieren einer durch Basic Authentication geschützten Webressource

In diesem Schritt überprüfen Sie zunächst, ob die Ziel-Webressource tatsächlich durch Basic Authentication geschützt ist. Eine gängige Methode zur Überprüfung ist die Verwendung des curl-Befehls, um die vom Server zurückgegebenen HTTP-Header zu inspizieren, wenn Sie versuchen, auf die Ressource zuzugreifen.

Eine ungeschützte Ressource gibt den Status 200 OK zurück, während eine geschützte Ressource den Status 401 Unauthorized zusammen mit einem WWW-Authenticate-Header zurückgibt, der die erforderliche Authentifizierungsart angibt.

Versuchen wir, auf das geschützte Verzeichnis http://localhost/protected/ mit curl und der Option -I zuzugreifen, die nur die HTTP-Header abruft.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

curl -I http://localhost/protected/

Sie sollten eine Ausgabe ähnlich der folgenden sehen. Beachten Sie den Status HTTP/1.1 401 Unauthorized und den Header WWW-Authenticate: Basic realm="...". Dies bestätigt, dass das Verzeichnis geschützt ist.

HTTP/1.1 401 Unauthorized
Date: [current_date]
Server: Apache/2.4.52 (Ubuntu)
WWW-Authenticate: Basic realm="Restricted Content"
Content-Type: text/html; charset=iso-8859-1

Erforderlichen Benutzernamen und Passwort ermitteln

In diesem Schritt werden wir die Anmeldeinformationen zur Kenntnis nehmen, die für den Zugriff auf den geschützten Bereich erforderlich sind. Bei einem realen Penetrationstest könnten Sie diese auf verschiedene Weise erhalten, z. B. durch Raten von Passwörtern, Finden in öffentlichen Code-Repositories oder durch Social Engineering.

Für dieses Lab wurde die Umgebung mit einem bestimmten Benutzernamen und Passwort vorkonfiguriert. Sie benötigen diese Anmeldeinformationen für die nachfolgenden Schritte, um einen authentifizierten Scan durchzuführen.

Die Anmeldeinformationen sind:

  • Benutzername: labex
  • Passwort: P@ssw0rd123

In diesem Schritt sind keine Befehle auszuführen. Nehmen Sie einfach die obigen Anmeldeinformationen zur Kenntnis und fahren Sie mit dem nächsten Schritt fort, in dem Sie diese zur Authentifizierung verwenden.

Die Option -id im Format 'user:password' verwenden

In diesem Schritt lernen Sie die Option -id von Nikto kennen, die zur Angabe von Anmeldeinformationen für die HTTP-Authentifizierung verwendet wird. Das Format ist ein einzelner String, der den Benutzernamen und das Passwort enthält, getrennt durch einen Doppelpunkt (:).

Die Syntax lautet: -id <username>:<password>

Bevor Sie dies mit Nikto verwenden, ist es eine gute Praxis zu überprüfen, ob die Anmeldeinformationen funktionieren. Sie können dies erneut mit curl tun, diesmal mit der Option --user, um die Anmeldeinformationen bereitzustellen.

Führen Sie den folgenden Befehl aus, um mit den korrekten Anmeldeinformationen auf die geschützte Seite zuzugreifen:

curl --user labex:P@ssw0rd123 http://localhost/protected/

Wenn die Anmeldeinformationen korrekt sind, gewährt der Server den Zugriff und gibt den Inhalt der Seite zurück, wie unten gezeigt. Dies bestätigt, dass Sie sich erfolgreich authentifizieren können.

This is a protected page accessible only with credentials.

Nachdem Sie die Anmeldeinformationen bestätigt und das Format verstanden haben, sind Sie bereit, sie in einem Nikto-Scan zu verwenden.

Den authentifizierten Scan gegen den geschützten Bereich ausführen

In diesem Schritt kombinieren Sie Ihr Wissen aus den vorherigen Schritten, um einen vollständigen authentifizierten Scan mit Nikto durchzuführen. Sie müssen den Zielhost und die Authentifizierungsanmeldeinformationen angeben.

Die Befehlsstruktur wird wie folgt aussehen:

  • nikto: Das auszuführende Programm.
  • -h http://localhost/protected/: Die Option -h (host), die direkt auf das zu scannende Verzeichnis zeigt.
  • -id labex:P@ssw0rd123: Die Option -id mit dem Benutzernamen und Passwort.

Führen Sie nun den vollständigen Befehl in Ihrem Terminal aus. Der Scan kann einige Minuten dauern.

nikto -h http://localhost/protected/ -id labex:P@ssw0rd123

Nikto startet den Scan. Da Sie gültige Anmeldeinformationen angegeben haben, kann es auf http://localhost/protected/ zugreifen und auf Schwachstellen in diesem Verzeichnis testen. Die Ausgabe wird ungefähr so aussehen:

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         [scan_start_time]
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
+ /: Der Anti-Clickjacking-Header X-Frame-Options fehlt.
+ /: 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.
+ /: Der Server gibt möglicherweise Inodes über ETags preis, Header gefunden mit Datei /, Felder: 0x1ed 0x5f7e21e8a2e80
+ OPTIONS: Erlaubte HTTP-Methoden: GET, POST, OPTIONS, HEAD.
+ /: Apache/2.4.52 scheint veraltet zu sein (aktuell ist mindestens Apache/2.4.54).
+ 8142 Anfragen: 0 Fehler und 5 Elemente auf dem Remote-Host gemeldet
+ End Time:           [scan_end_time] (30 Sekunden)
---------------------------------------------------------------------------
+ 1 Host(s) getestet

Überprüfen, ob Nikto erfolgreich auf geschützte Ressourcen zugegriffen hat

In diesem Schritt analysieren Sie die Scan-Ausgabe, um zu bestätigen, dass Nikto erfolgreich authentifiziert und den geschützten Bereich gescannt hat. Ein wichtiger Indikator für einen erfolgreichen authentifizierten Scan ist das Fehlen weit verbreiteter Authentifizierungsfehler.

Eine gute Praxis zur Analyse von Scan-Ergebnissen ist das Speichern der Ausgabe in einer Datei. Dies können Sie mit der Option -o (output) tun. Führen wir den Scan erneut aus und speichern den Bericht in einer Textdatei namens nikto_report.txt.

nikto -h http://localhost/protected/ -id labex:P@ssw0rd123 -o nikto_report.txt -Format txt

Nach Abschluss des Scans wird eine Datei namens nikto_report.txt in Ihrem aktuellen Verzeichnis (~/project) erstellt. Sie können diese Datei untersuchen, um die Ergebnisse zu überprüfen. Eine schnelle Möglichkeit, den Erfolg zu überprüfen, ist die Betrachtung der Zusammenfassungszeile für die Anzahl der Fehler.

Verwenden Sie den Befehl grep, um in Ihrer Berichtsdatei nach der Zeile mit "error(s)" zu suchen:

grep "error(s)" nikto_report.txt

Die Ausgabe sollte 0 error(s) anzeigen, was bestätigt, dass Nikto keine Probleme wie 401 Unauthorized bei Anfragen hatte. Dies, kombiniert mit der Liste der gefundenen Elemente, beweist, dass der authentifizierte Scan erfolgreich war.

+ 8142 requests: 0 error(s) and 5 item(s) reported on remote host

Zusammenfassung

Herzlichen Glückwunsch zum Abschluss dieses Labs! Sie haben erfolgreich einen authentifizierten Web-Schwachstellenscan mit Nikto durchgeführt.

In diesem Lab haben Sie gelernt, wie Sie:

  • Eine durch HTTP Basic Authentication geschützte Web-Ressource mit curl identifizieren.
  • Das Format der für einen authentifizierten Scan erforderlichen Anmeldeinformationen verstehen.
  • Die Option -id von Nikto verwenden, um einen Benutzernamen und ein Passwort anzugeben.
  • Einen Scan gegen ein geschütztes Verzeichnis durchführen und dessen Erfolg durch Analyse der Ausgabe verifizieren.

Die Beherrschung des authentifizierten Scannings ist eine entscheidende Fähigkeit für jeden Sicherheitsexperten, da sie eine viel tiefere und umfassendere Bewertung der Sicherheitslage einer Webanwendung ermöglicht, indem sie Schwachstellen aufdeckt, die sich hinter einer Login-Mauer verbergen.