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”。
禁用CLI或限制访问:如果不需要使用Jenkins CLI,可以在Jenkins配置中禁用CLI功能。如果需要使用CLI,请限制对CLI的访问权限,并仅授权给受信任的用户。
下载Jenkins
打开Jenkins官网 www.jenkins.io/download/ 下载最新LTS版本,例如:
wget https://get.jenkins.io/war-stable/2.440.1/jenkins.war
下载jdk17
打开jdk官网 www.oracle.com/cn/java/technologies/downloads/#java17
下载最新的压缩版本jdk17 LTS 版本,例如:
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
下载后解压到目录/opt/jdk17
解释:为啥下载jdk17?
因为有些人业务是用的jdk1.8版本,然后编译啥的依赖jdk1.8,而新版本的Jenkins需要最低jdk17,为了减少业务动作,这里下载zip版本的jdk专门给Jenkins使用。
备份Jenkins工作目录
主要是备份Jenkins哪些任务啥的谨防升级失败数据丢失。
cp -R .jenkins jenkins.bak
Jenkins启动
/opt/jdk17/bin/java -jar jenkins --你的其他参数
登录上去记得更新插件在使用哟
至此操作完成。
https://www.leftso.com/article/Jenkins-CVE-2024-23897-bugfix.html