【已复现】Jenkins 任意文件读取漏洞(CVE-2024-23897)附POC下载

Jenkins任意文件读取漏洞CVE-2024-23897详解及修复指南
本文详细介绍了Jenkins的任意文件读取漏洞(CVE-2024-23897),包括漏洞描述、成因、影响、利用条件和复现方法。提供远程检测工具和本地检测工具的链接,受影响版本以及临时缓解和升级修复方案。

Jenkins是一个开源CI/CD工具,用于自动化开发流程,包括构建、测试和部署软件。

2024年1月,互联网公开了一个Jenkins的任意文件读取漏洞。鉴于该漏洞易于利用,存在危害扩大的风险,且该系统数据较为敏感且影响范围广泛,建议所有使用Jenkins的企业尽快进行修复,以确保系统安全。

漏洞描述

 Description 

漏洞成因

  • 命令行接口文件读取: Jenkins内置的命令行接口(CLI)存在一个特性,允许在命令参数中用@字符后跟文件路径来替换为文件内容。这导致攻击者能够读取Jenkins控制器文件系统上的任意文件。

  • 权限绕过: 拥有Overall/Read权限的攻击者可以读取完整文件,而没有该权限的攻击者也可以读取部分文件内容。

漏洞影响

  • 任意文件读取:

拥有Overall/Read权限的攻击者可以读取整个文件。

(默认情况下)没有Overall/Read权限的攻击者可以读取文件的前几行。可读取的行数取决于可用的CLI命令。

  • 远程代码执行及其它影响

    攻击依赖攻击者能通过漏洞读取到二进制形式密钥以及其它前提条件,虽然攻击者可以读取包含二进制数据的文件,但是由于功能限制,某些字节无法成功读取并被占位符值替换,导致攻击者在读取部分密钥后仍然需要推算一定数量的字节(字节数根据Jenkins » System Information中file.encoding值的不同而存在差异)。虽然条件较多,但是仍存在一定利用可能性。

利用特征

使用POST请求/cli接口,且包体中含有help、who-am-i命令以及@文件名。

长亭安全研究员发现,除了官方给出的help、who-am-i两个命令外,还可以调用下面一批命令(默认匿名环境下)来进行任意文件读取:

keep-build
restart
shutdown
safe-shutdown
disable-job
enable-job
keep-buildrestartshutdownsafe-shutdowndisable-jobenable-job

上述命令是通过另一种方式加载的,相关的 main 方法位于 CLIRegisterer 类中。这个CLIRegisterer#main 方法与 CLICommand#main 方法的主要区别在于处理顺序:CLIRegisterer#main 会先对参数进行解析,然后进行权限校验,而 CLICommand#main 则是先进行权限校验,再对参数进行解析。因此,通过引发参数解析阶段的错误,可以在权限校验之前获取到文件读取的部分结果。这揭示了程序逻辑上的一个缺陷。

同时值得注意的是Jenkins CLI 支持三种访问模式,分别是 SSH、HTTP、Websocket,因此如果要依赖流量特征缓解此漏洞,可能会相对繁琐。

检测工具

 Detection 

xpoc远程检测工具

xpoc -r 419 -t http://xpoc.org

图片

工具获取方式

https://github.com/chaitin/xpoc

https://stack.chaitin.com/tool/detail/1036

牧云本地检测工具

访问百川云平台,通过「牧云·服务器漏洞管理」进行扫描:https://rivers.chaitin.cn/landing/sentinel

图片

影响版本

 Affected Version 

version <= Jenkins 2.441

version <= LTS 2.426.2

解决方案

 Solution 

临时缓解方案

  • 访问控制:加强服务器和应用的访问控制,仅允许可信IP进行访问。另外如非必要,不要将该系统开放在互联网上。

  • 临时禁用CLI访问:暂时禁用CLI访问,直到部署更新。

升级修复方案

Jenkins 2.442, LTS 2.426.3已禁用相关命令解析器特性。建议更新至这些版本以解决漏洞。

若升级后遇到问题,可以通过设置Java系统属性hudson.cli.CLICommand.allowAtSyntax为true来禁用此变更,但这种做法不建议在可由非管理员用户访问CLI的网络上使用(会重新引入漏洞)。

漏洞复现

 Reproduction 

图片

漏洞POC:

Jenkins CVE-2024-23897: Arbitrary File Read Vulnerability Leading to RCE

python CVE-2024-23897.py -l host.txt -f /etc/passwd

图片

下载地址:https://github.com/h4x0r-dz/CVE-2024-23897

关于CVE-2024系列漏洞的概念验证(PoC)代码,存在多个公开资源提供了不同漏洞的具体实现方式。 针对CVE-2024-38077这一特定编号下的Windows操作系统高危漏洞,有开源项目给出了Python脚本形式的攻击向量实例[^2]。该程序通过命令行参数指定目标主机地址来发起测试性质的操作请求: ```python import requests def cve_2024_38077_poc(target_ip): url = f"http://{target_ip}/vulnerable_endpoint" headers = {"User-Agent": "Mozilla/5.0"} try: response = requests.get(url, headers=headers) if response.status_code == 200 and 'specific_response' in response.text: print(f"[+] Target {target_ip} is vulnerable!") else: print("[!] Target does not appear to be vulnerable.") except Exception as e: print(f"[-] An error occurred: {e}") if __name__ == "__main__": import argparse parser = argparse.ArgumentParser(description='Test for CVE-2024-38077') parser.add_argument('--target_ip', required=True, help='The IP address of the target machine.') args = parser.parse_args() cve_2024_38077_poc(args.target_ip) ``` 值得注意的是,在实际环境中应用此类代码前应当获得合法授权并仅限于评估系统安全性之目的;严禁用于未经授权的渗透活动或恶意企图。 此外还有其他几个值得关注的安全公告也涉及到2024年的CVE编号,比如GeoServer中存在的CVE-2024-36401以及Jenkins平台上的CVE-2024-43044等问题均发布了相应的检测手段和技术细节说明[^3][^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值