【漏洞通告】 Jenkins CLI 任意文件读取漏洞

漏洞概况

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

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

值得一提的是,通过该漏洞读取到完整文件内容的前提是需要攻击者使用的鉴权用户拥有 Overall/Read 权限,而Jenkins默认安装的匿名用户并没有 Overall/Read 权限,所以通过匿名用户只能读取到文件的部分内容。

漏洞编号

QVD-2024-3674,CVE-2024-23897

影响版本

Jenkins <= 2.441

Jenkins LTS <= 2.426.2

2024-01-25

影响量级

十万级

奇安信评级

高危

CVSS 3.1分数

9.8

威胁类型

信息泄露,代码执行

利用可能性

POC状态

已公开

在野利用状态

未发现

EXP状态

未公开

技术细节状态

已公开

 利用条件:经过身份验证或Jenkins配置了“Allow anonymous read access”或”Anyone can do anything”。

漏洞复现

可下载本地环境测试,或者从网上找,但是不要进行破坏活动。 

前往X情报社区资产测绘查看影响资产详情:​​​​​​https://x.threatbook.com/v5/survey?q=app%3D"Jenkins"

找了几个地址,发现有个是已匿名用户登录的,权限较小,可从这里下载Jenkins-CLI.jar包

 

执行poc

java -jar jenkins-cli.jar -s http://XXX:8080/ help @/etc/passwd 

 

由于读取的文件内容最后是通过异常返回的,因此不同的命令返回的结果长度不同,如果没有权限,则只能使用help或者who-am-i命令,返回的长度有限。但是当攻击者具备Overall/Read权限时,就可以使用更多jenkins命令,从而读取更多文件内容。这里仅仅分析漏洞原理,不在深究。

想高权限读取可以自己搭建测试环境。 

05 处置建议

安全更新

目前官方已有可更新版本,建议受影响用户升级至:

Jenkins >= 2.442

Jenkins LTS >= 2.426.3

下载链接:https://www.jenkins.io/download/

缓解措施

禁用CLI或限制访问:如果不需要使用Jenkins CLI,可以在Jenkins配置中禁用CLI功能。如果需要使用CLI,请限制对CLI的访问权限,并仅授权给受信任的用户。

通用建议

  • 最小权限原则:按照最小权限原则,为用户和插件分配适当的权限级别,仅提供其所需的操作和功能。

  • 安全配置:仔细配置Jenkins的安全设置,包括启用CSRF保护、禁用不必要的功能和插件、限制对重要文件和密钥的访问等。

  • 密钥管理:妥善管理和保护Jenkins中使用的密钥,包括限制对密钥文件的访问权限、定期更换密钥、使用安全的密钥存储等。

  • 审查日志:定期审查Jenkins的日志文件,以及监控和检测任何可疑活动或异常行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值