Cookies für authentifizierte Verzeichnis-Scans in Gobuster verwenden

Beginner
Jetzt üben

Einleitung

Beim Penetration Testing oder der Sicherheitsprüfung von Webanwendungen stößt man häufig auf Bereiche einer Website, die nur nach der Authentifizierung eines Benutzers zugänglich sind. Standard-Verzeichnis-Scanning-Tools wie Gobuster könnten diese versteckten Pfade übersehen, da sie keine Sitzung aufrechterhalten. Dieses Lab führt Sie durch den Prozess der Verwendung der Cookie-Funktionalität von Gobuster, um authentifizierte Verzeichnisscans durchzuführen. Sie lernen, wie Sie ein Sitzungs-Cookie von einer Webanwendung erhalten und dieses Cookie dann mit Gobuster verwenden, um Verzeichnisse und Dateien in authentifizierten Bereichen zu entdecken, was eine umfassendere Sicht auf die Angriffsfläche der Anwendung ermöglicht.

Anmeldung bei einer Webanwendung und Erhalt eines Sitzungs-Cookies

In diesem Schritt simulieren Sie die Anmeldung bei einer Webanwendung und erfassen das Sitzungs-Cookie, das nach erfolgreicher Authentifizierung gesetzt wird. Dieses Cookie ist entscheidend dafür, dass Gobuster auf authentifizierte Bereiche zugreifen kann. Wir verwenden curl, um die Anmeldung durchzuführen und das Cookie zu extrahieren.

Zuerst versuchen wir, auf das Dashboard ohne Authentifizierung zuzugreifen, um zu sehen, dass wir weitergeleitet werden:

curl -v http://localhost:8080/dashboard

Sie sollten eine 302 Found-Weiterleitung zurück zu / sehen. Melden wir uns nun an. Die Webanwendung verfügt über ein einfaches Anmeldeformular unter http://localhost:8080/ mit dem Benutzernamen user und dem Passwort password. Wir senden eine POST-Anfrage an /login mit diesen Anmeldedaten.

curl -v -X POST -d "username=user&password=password" http://localhost:8080/login

Suchen Sie in der Ausgabe nach dem Set-Cookie-Header. Er sollte etwa so aussehen: Set-Cookie: session=authenticated_session_id_12345; Path=/. Der Wert authenticated_session_id_12345 ist Ihr Sitzungs-Cookie. Notieren Sie sich diesen Wert.

Versuchen wir nun, mit dem erhaltenen Cookie auf das Dashboard zuzugreifen. Ersetzen Sie YOUR_COOKIE_VALUE durch den tatsächlichen Cookie-Wert, den Sie gefunden haben.

curl -v --cookie "session=authenticated_session_id_12345" http://localhost:8080/dashboard

Sie sollten nun den Inhalt der Dashboard-Seite sehen, was auf einen erfolgreichen authentifizierten Zugriff hindeutet.

Erstellen eines gobuster dir Befehls für einen authentifizierten Bereich

In diesem Schritt bereiten Sie den grundlegenden gobuster dir-Befehl vor. Wir werden den authentifizierten Bereich der Webanwendung anvisieren. Die Basis-URL für unseren authentifizierten Scan wird http://localhost:8080/authenticated/ sein. Wir werden eine gängige Wortliste für das Brute-Forcing von Verzeichnissen verwenden.

Stellen Sie zunächst sicher, dass Gobuster installiert ist.

gobuster version

Sie sollten die Versionsinformationen sehen. Falls nicht, konsultieren Sie bitte den Einrichtungsabschnitt.

Nun erstellen wir den grundlegenden gobuster dir-Befehl. Wir verwenden das Flag -u für die URL und -w für die Wortliste. Für dieses Lab verwenden wir eine kleine, integrierte Wortliste zu Demonstrationszwecken, oder Sie können eine gängige wie common.txt angeben, falls diese auf Ihrem System verfügbar ist. Wenn common.txt nicht gefunden wird, können Sie eine kleine benutzerdefinierte Wortliste zum Testen erstellen.

Erstellen wir eine kleine Wortliste für dieses Lab:

echo -e "secret_dir\nadmin\nconfig\nbackup\nusers" > ~/project/wordlist.txt

Der grundlegende Befehl ohne das Cookie würde nun wie folgt aussehen:

gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt

Wenn Sie diesen Befehl jetzt ausführen, wird er wahrscheinlich secret_dir nicht finden, da dies eine Authentifizierung erfordert. Im nächsten Schritt fügen wir das Cookie zu diesem Befehl hinzu.

Verwenden des -c Flags zur Angabe des Sitzungs-Cookies

In diesem Schritt integrieren Sie das in Schritt 1 erhaltene Sitzungs-Cookie mit dem -c-Flag in Ihren Gobuster-Befehl. Dieses Flag ermöglicht es Gobuster, das angegebene Cookie in seine Anfragen einzuschließen und somit auf authentifizierte Bereiche zuzugreifen.

Erinnern Sie sich an den in Schritt 1 erhaltenen Cookie-Wert, der session=authenticated_session_id_12345 lautete.

Das -c-Flag erwartet das Cookie im Format key=value. Unsere Cookie-Zeichenkette wird also "session=authenticated_session_id_12345" lauten.

Kombinieren Sie dies nun mit dem Befehl aus Schritt 2:

gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt -c "session=authenticated_session_id_12345"

Dieser Befehl weist Gobuster an, einen Verzeichnis-Scan auf http://localhost:8080/authenticated/ durchzuführen, die bereitgestellte Wortliste zu verwenden und entscheidend ist, das Cookie session=authenticated_session_id_12345 bei jeder Anfrage einzuschließen. Dies ermöglicht es Gobuster, die Authentifizierungshürde zu umgehen und Ressourcen im geschützten Bereich zu entdecken.

Überprüfen Sie vor der Ausführung nochmals, ob Ihr Cookie-Wert korrekt ist.

Ausführen des Scans

Nachdem Sie den vollständigen Gobuster-Befehl erstellt haben, ist es an der Zeit, ihn auszuführen und die Ergebnisse zu beobachten. Dieser Scan versucht, Verzeichnisse und Dateien im authentifizierten Bereich der Webanwendung zu finden.

Führen Sie den Befehl aus, den Sie im vorherigen Schritt vorbereitet haben:

gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt -c "session=authenticated_session_id_12345"

Gobuster beginnt mit dem Scan und zeigt seinen Fortschritt an. Achten Sie genau auf die Ausgabe. Sie sollten Einträge sehen, die Verzeichnisse oder Dateien mit einem Status: 200 (OK), Status: 301 (Moved Permanently) oder Status: 302 (Found) anzeigen, was bedeutet, dass die Ressource erfolgreich abgerufen oder weitergeleitet wurde.

Beispielausgabe:

===============================================================
Gobuster vX.X.X
===============================================================
[+] Url:                     http://localhost:8080/authenticated/
[+] Wordlist:                /home/labex/project/wordlist.txt
[+] Threads:                 10
[+] Timeout:                 10s
[+] User Agent:              gobuster/X.X.X
[+] Cookies:                 session=authenticated_session_id_12345
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/secret_dir           (Status: 200) [Size: 100]
===============================================================
2024/01/01 12:00:05 Finished
===============================================================

Beachten Sie, wie /secret_dir mit einem Status: 200 gefunden wird. Dies zeigt an, dass Gobuster dieses Verzeichnis erfolgreich abgerufen hat, da es das Authentifizierungs-Cookie gesendet hat. Ohne das Cookie wäre dieses Verzeichnis wahrscheinlich nicht gefunden worden oder hätte einen Weiterleitungs-/nicht autorisierten Status zurückgegeben.

Analyse der Ergebnisse zur Ermittlung von Seiten, die nur nach Authentifizierung zugänglich sind

In diesem letzten Schritt analysieren Sie die Ausgabe Ihres Gobuster-Scans, um Ressourcen zu identifizieren, die im authentifizierten Bereich erfolgreich entdeckt wurden. Der Schlüssel liegt darin, nach Einträgen zu suchen, die einen Status: 200 (OK) oder andere Erfolgscodes zurückgegeben haben, die normalerweise ohne das Sitzungs-Cookie nicht zugänglich wären.

Aus der Ausgabe des vorherigen Schritts sollten Sie etwas Ähnliches gesehen haben wie:

/secret_dir           (Status: 200) [Size: 100]

Diese Zeile zeigt an, dass Gobuster den Pfad /secret_dir innerhalb der URL http://localhost:8080/authenticated/ erfolgreich gefunden hat und einen HTTP 200 OK-Status zurückgegeben hat. Dies ist ein starker Hinweis darauf, dass dieses Verzeichnis bei Authentifizierung zugänglich ist.

Zur Bestätigung können Sie versuchen, diesen Pfad direkt mit curl ohne das Cookie aufzurufen:

curl http://localhost:8080/authenticated/secret_dir

Sie sollten zur Anmeldeseite weitergeleitet werden oder eine Meldung über nicht autorisierten Zugriff erhalten.

Versuchen Sie nun, darauf mit dem Cookie zuzugreifen:

curl --cookie "session=authenticated_session_id_12345" http://localhost:8080/authenticated/secret_dir/hidden_file.html

Sie sollten den Inhalt von hidden_file.html sehen, was bestätigt, dass dieser Pfad tatsächlich nur mit dem korrekten Authentifizierungs-Cookie zugänglich ist.

Dieser Prozess zeigt, wie die Verwendung von Cookies mit Gobuster versteckte Teile einer Webanwendung aufdecken kann, die nur für authentifizierte Benutzer sichtbar sind, und den Umfang Ihrer Sicherheitsbewertung erheblich erweitert.

Zusammenfassung

In diesem Lab haben Sie erfolgreich gelernt, wie man authentifizierte Verzeichnis-Scans mit Gobuster durchführt. Sie haben damit begonnen, sich in eine simulierte Webanwendung einzuloggen und einen Session-Cookie zu extrahieren. Anschließend haben Sie einen Gobuster-Befehl erstellt, der diesen Cookie mithilfe des -c-Flags enthielt. Durch die Ausführung dieses Befehls konnten Sie ein verstecktes Verzeichnis (/secret_dir) entdecken, das nur für authentifizierte Benutzer zugänglich war. Diese Technik ist für Sicherheitsexperten und Entwickler, die Webanwendungen gründlich prüfen müssen, von unschätzbarem Wert, um sicherzustellen, dass alle zugänglichen Pfade, auch die hinter der Authentifizierung, ordnungsgemäß identifiziert und gesichert werden.