通过补丁分析Jenkins任意文件读取漏洞(CVE-2024-23897)

通过补丁分析Jenkins任意文件读取漏洞(CVE-2024-23897)

作者:Le1a@threatbook
校验:jweny@threatboook

漏洞描述

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。Jenkins 有一个内置的命令行界面(CLI),可从脚本或 shell 环境访问 Jenkins。处理 CLI 命令时, Jenkins 使用args4j库解析 Jenkins 控制器上的命令参数和选项。

Jenkins处理CLI命令的命令解析器中的expandAtFile功能存在任意文件读取漏洞,未经身份认证的远程攻击者利用该漏洞可以读取部分文件的有限行内容,攻击者经过身份验证或目标Jenkins更改了默认”Security”配置可以通过该漏洞读取任意文件,攻击者进一步利用该漏洞并结合其他功能可能导致任意代码执行。

漏洞分析

该漏洞成因比较简单。
通过补丁可以发现,主要是对CLICommand.java文件做了修改。

image-20240125222325356

跟进该文件,可以发现在main函数中,把CLI的参数传入了parseArgument()函数进行解析

image-20240125222441002

继续跟进

image-20240125222705846

继续跟进到expandAtFiles()函数后,可以发现,如果参数以@开头,那么将会把@后面的内容当作路径,建立一个File对象,并且会读取该文件的内容,并添加至result中返回。

image-20240125222834555

而CLI参数可控,所以通过以下命令即可读取Jenkins中的master.key文件

java -jar jenkins-cli.jar -s http://localhost:9095/ who-am-i @/var/jenkins_home/secrets/master.key

漏洞复现

通过CLI工具读取目标服务器上的master.key文件

java -jar jenkins-cli.jar -s http://localhost:9095/ who-am-i @/var/jenkins_home/secrets/master.key

9864903895a5f8fb7cd171b3a0e41987

处置建议

  • 发表于 2024-01-26 17:15:31
  • 阅读 ( 36560 )
  • 分类:漏洞分析

0 条评论

请先 登录 后评论
jweny
jweny

16 篇文章

站长统计