Exchange ProxyLogon 、Exchange ProxyShell
Exchange ProxyLogon
Exchange ProxyLogon 由以下几个漏洞组成
CVE-2021-26855 服务端请求伪造 (SSRF) 破局点:绕过前端认证,伪造高权限请求转发至 Exchange 后端
CVE-2021-26857 不安全反序列化 利用 Unified Messaging (UM) 服务的反序列化直接获取 SYSTEM 权限代码执行
CVE-2021-26858 任意文件写入 配合 SSRF,以 SYSTEM 权限在服务器任意路径写文件(常用于落 Webshell)
CVE-2021-27065 任意文件写入 配合 SSRF,利用 ECP 的导出/配置机制写入恶意 ASPX Webshell
最经典、也是野外利用最广泛的利用链是 CVE-2021-26855 + CVE-2021-27065
Exchange Server 的架构分为前端和后端:前端负责处理外部 TLS 卸载与代理转发,并过滤未授权请求;后端负责处理核心业务逻辑,且默认信任前端转发的请求(采用 Kerberos/NTLM 认证)。前端的 ProxyRequestHandler 负责将请求代理至后端,在解析 Cookie 处存在缺陷。攻击者向无需认证的静态资源路径(如 /owa/auth/x.js)发送请求,携带特定的 X-BEResource Cookie,前端对其解析并拼接出后端转发的目标 URL,从而造成 SSRF。前端使用特权的机器账户凭据(Local SYSTEM / Exchange Server 机器账号)向后端 444 端口转发请求,使攻击者可作为跳板向后端接口注入任意 HTTP 请求。攻击者借此 SSRF 访问后端的 Autodiscover/EWS 获取管理员 SID 等信息,构造带有特权请求头 ms-Exch-EPI-Token-Serialization 的请求,将自身身份伪造为目标管理员的 Session 并接管 ECP 权限;随后调用后端接口(如修改 OAB 虚拟目录配置)注入恶意脚本,并利用配置重置/导出功能将文件保存至 Web 可访问路径,最终获得 SYSTEM 权限的 Webshell。
具体的攻击流程图如下
[攻击者]
│
├─ 1. 发送 GET /owa/auth/test.js + Cookie: X-BEResource=...
│ └─► [前端 CAS 443]
│ │
│ └─ (绕过认证,以机器凭据转发) ──► [后端 Backend 444]
│ │
├─ 2. SSRF 访问 EWS/Autodiscover │
│ └─► 获取管理员 SID / LegacyDN ◄─────────────────┘
│
├─ 3. 携带 ms-Exch-EPI-Token-Serialization 头
│ └─► 伪造管理员身份向 ECP 申请 Session & Canary Token
│
├─ 4. 调用 Set-OabVirtualDirectory 注入 Payload 至 ExternalUrl
│
├─ 5. 调用 ResetVirtualDirectory 指定输出路径为 .aspx 落地 Webshell
│
└─ 6. 直接访问目标 aspx 文件,以 SYSTEM / 高权限执行系统命令Exchange ProxyShell
Exchange Server 的架构分为前端和后端:前端负责处理外部 TLS 卸载与代理转发,并过滤未授权请求;后端负责处理核心业务逻辑,且默认信任前端转发的请求(采用 Kerberos/NTLM 认证)。前端的 Autodiscover 代理模块负责将请求路由至后端,在 URL 规范化与路径解析处存在缺陷。攻击者向无需认证的自动发现接口发送带有特殊符号的畸形路径请求(如 /autodiscover/autodiscover.json?@evil.com/powershell/),前端认证过滤器误判其为合法免认证请求并予以放行,但在拼接后端目标 URL 时错误解析为任意指定的后端路径,从而造成未授权 SSRF。攻击者借此将请求强行穿透至后端的 Exchange PowerShell 接口,并通过构造带有特权 SID 的 X-CommonAccessToken 请求头,将自身会话提升并伪造为高权限管理员上下文;随后利用后端权限向目标邮箱投递包含恶意脚本的邮件草稿,并调用 PowerShell 的邮箱导出功能(New-MailboxExportRequest),将导出文件伪装为 PST 并指定保存至 Web 可访问路径且重命名为 .aspx,最终获得 SYSTEM 权限的 Webshell。
流程图如下
[攻击者]
│
├─ 1. 发送 GET /autodiscover/autodiscover.json?@evil.com/powershell/
│ └─► [前端 CAS 443]
│ │
│ └─ (路径混淆绕过认证,解析为后端路径) ──► [后端 Backend 444]
│ │
├─ 2. SSRF 访问 Autodiscover 接口 │
│ └─► 枚举合法用户并获取管理员 SID / LegacyDN ◄────────────┘
│
├─ 3. 携带 X-CommonAccessToken 请求头 (嵌入管理员特权 SID)
│ └─► 伪造特权上下文,获取后端 PowerShell Remoting 接口权限
│
├─ 4. 通过 EWS / 邮件接口投递包含 Webshell Payload 的邮件草稿
│
├─ 5. 调用 New-MailboxExportRequest 将邮件内容导出为 .aspx
│ └─► 指定落地路径至 Web 目录 (如 /aspnet_client/shell.aspx)
│
└─ 6. 直接访问目标 aspx 文件,以 SYSTEM / 高权限执行系统命令