Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
GoCD_PoC_Supply_Chain_Attack — CVE-2021-43287 CVE-2021-43288 CVE-2021-43289 CVE-2021-43290 | Kitploit
工具/GitHubGitHub/higorgabrieldcf/gocd_poc_supply_chain_attack
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用后渗透利用安全虚拟化渗透测试供应链安全学习与教育

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
红队
GitHubhigorgabrieldcf/gocd_poc_supply_chain_attack

GoCD_PoC_Supply_Chain_Attack

CVE-2021-43287 CVE-2021-43288 CVE-2021-43289 CVE-2021-43290

查看仓库
2271个月前尚未审核

GoCD 20.10.0 — PoC:CVE-2021-43287 · CVE-2021-43288 · CVE-2021-43289 · CVE-2021-43290

作者 / Author: Higor Farias — PRIDE Security

⚠️ 法律声明 / LEGAL DISCLAIMER

[PT] 本材料仅供教育及攻击性安全研究之用。仅在获得明确授权的受控环境中使用。不当使用由使用者自行承担全部责任。

[EN] 本材料仅供教育及经授权的攻击性安全研究之用。仅在获得明确书面许可的受控环境中使用。不当使用由使用者自行承担全部责任。


目录 / Table of Contents

  1. 概述 / Overview
  2. 软件供应链影响 / Software Supply Chain Impact
  3. 漏洞 / Vulnerabilities
  4. 攻击链 / Attack Chain
  5. 前置条件 / Prerequisites
  6. Docker PoC 环境 / PoC Docker Environment
  7. 脚本使用 / Script Usage
    • gocd_rce_noauth.py — 未授权 RCE / Unauthenticated RCE
    • gocd_urldns.py — URLDNS / 反序列化检测
  8. 参考资料 / References
  9. 时间线 / Timeline
  10. 缓解措施 / Mitigation

1. 概述 / Overview

[PT] GoCD 是由 ThoughtWorks 维护的 CI/CD 平台。在 21.3.0 之前的版本中,SonarSource 的研究人员发现了一条无需任何身份验证即可利用的漏洞链。本仓库中的两个脚本演示了:

  • gocd_rce_noauth.py — 完整利用漏洞链直至 RCE(远程代码执行),无需凭据。
  • gocd_urldns.py — 通过 URLDNS gadget chain 和 DNS 回调对 Java 反序列化进行带外检测(需要有效凭据以列出已注册的 agent)。

[EN] GoCD 是由 ThoughtWorks 维护的 CI/CD 平台。在 21.3.0 之前的版本中,SonarSource 的研究人员发现了一条无需任何身份验证即可利用的漏洞链。本仓库中的两个脚本演示了:

  • gocd_rce_noauth.py — 完整利用漏洞链直至 RCE(远程代码执行),无需凭据。
  • gocd_urldns.py — 通过 URLDNS gadget chain 和 DNS 回调对 Java 反序列化进行带外检测(需要有效凭据以列出已注册的 agent)。

2. 软件供应链影响 / Software Supply Chain Impact

[PT] GoCD 在组织的软件交付链中占据核心位置:它编排构建、测试、制品生成以及生产环境部署。通过 RCE 攻陷 GoCD 服务器(如 gocd_rce_noauth.py 所演示),攻击者即可控制该流程的每一个阶段——能够在任何产品到达最终用户之前,向二进制文件中植入后门、篡改制品,或窃取源代码和凭据。该场景与 SolarWinds 攻击(2020 年)类似,当时对构建流水线的访问导致恶意软件被分发至数千名客户。

[EN] GoCD 在组织的软件交付链中占据核心位置:它编排构建、测试、制品生成以及生产环境部署。通过 RCE 攻陷 GoCD 服务器(如 gocd_rce_noauth.py 所演示),攻击者即可控制该流程的每一个阶段——能够在任何产品到达最终用户之前,向二进制文件中植入后门、篡改制品,或窃取源代码和凭据。该场景与 SolarWinds 攻击(2020 年)类似,当时对构建流水线的访问导致恶意软件被分发至数千名客户。

flowchart TD
    ATK(["🕵️ Atacante / Attacker\n(não autenticado / unauthenticated)"])

    subgraph EXPLOIT ["Exploração / Exploitation"]
        E1["CVE-2021-43287\nLeitura do cruise_config\n(tokenGenerationKey + agentAutoRegisterKey)"]
        E2["Path Traversal\nLeitura de /etc/go/jetty.xml\ne /proc/self/environ"]
        E3["Registro de agente falso\nFake agent registration"]
        E4["Desserialização Java\n(AspectJWeaver gadget chains)\nSobrescreve jetty.xml + restart"]
        E5["💥 RCE no servidor GoCD\nRCE on GoCD server"]
        E1 --> E2 --> E3 --> E4 --> E5
    end

    subgraph PIPELINE ["Pipeline CI/CD comprometido / Compromised CI/CD Pipeline"]
        P1["📦 Build de artefatos\nBinary/artifact build"]
        P2["🧪 Execução de testes\nTest execution"]
        P3["📤 Publicação de pacotes\nPackage publication\n(npm, PyPI, Docker Hub...)"]
        P4["🚀 Deploy em produção\nProduction deployment"]
        P1 --> P2 --> P3 --> P4
    end

    subgraph IMPACT ["Impacto / Impact"]
        I1["🔑 Vazamento de credenciais\nCredential leak\n(tokens, SSH keys, API keys)"]
        I2["🦠 Backdoor em artefatos\nBackdoor in build artifacts"]
        I3["📂 Exfiltração de código-fonte\nSource code exfiltration"]
        I4["☠️ Ataque à cadeia de suprimentos\nSupply chain attack\n(usuários finais afetados / end users impacted)"]
        I1 & I2 & I3 --> I4
    end

    ATK --> EXPLOIT
    E5 -->|"Controle total do runner\nFull runner control"| PIPELINE
    P1 -->|"Artefatos envenenados\nPoisoned artifacts"| I2
    P3 -->|"Pacotes maliciosos\nMalicious packages"| I4
    P4 -->|"Produção comprometida\nCompromised production"| I4
    E5 -->|"Leitura de secrets\nSecrets read"| I1
    E5 -->|"Acesso ao repositório\nRepository access"| I3

3. 漏洞 / Vulnerabilities

CVE类型 / TypeCVSS 3.1CWE认证
CVE-2021-43287信息泄露7.5 HIGHCWE-200❌ 无 / None
CVE-2021-43288存储型 XSS6.1 MEDIUMCWE-79Agent
CVE-2021-43289路径遍历 — PUT8.1 HIGHCWE-22Agent
CVE-2021-43290路径遍历 — GET8.1 HIGHCWE-22Agent

CVE-2021-43287 — 业务连续性:未认证泄露 / Business Continuity: unauthenticated leak

[PT] 端点 /go/add-on/business-continuity/api/cruise_config 在无需认证的情况下返回完整的服务器配置 XML。该 XML 包含 <server> 元素的属性,包括 agentAutoRegisterKey 和 tokenGenerationKey —— 注册 agent 和签名认证请求所需的两个密钥。此外,插件端点的 pluginName 参数接受路径遍历序列(../../../../../../),允许读取系统任意文件 —— 例如 /proc/self/environ 和 /etc/go/jetty.xml。

[EN] /go/add-on/business-continuity/api/cruise_config 端点在无需认证的情况下返回完整的服务器配置 XML。该 XML 包含 <server> 元素的属性,包括 agentAutoRegisterKey 和 tokenGenerationKey —— 注册 agent 和签名认证请求所需的两个密钥。此外,插件端点的 pluginName 参数接受路径遍历序列(../../../../../../),允许读取系统任意文件 —— 例如 /proc/self/environ 和 /etc/go/jetty.xml。

脚本利用的端点 / Endpoints used by the scripts:

GET /go/add-on/business-continuity/api/cruise_config
GET /go/add-on/business-continuity/api/plugin?folderName=&pluginName=../../../../../../proc/self/environ
GET /go/add-on/business-continuity/api/plugin?folderName=&pluginName=../../../../../../etc/go/jetty.xml

CVE-2021-43289 / CVE-2021-43290 — 通过 remoteBuildRepository 的 Java 反序列化

[PT] 端点 /go/remoting/remoteBuildRepository 接受 Java 序列化对象(Content-Type: application/x-java-serialized-object),仅使用请求头 Authorization: base64(HMAC-SHA256(tokenGenerationKey, agent_uuid)) 进行身份验证。由于 tokenGenerationKey 可通过 CVE-2021-43287 获取,未认证的攻击者可以发送恶意 gadget 链。这些脚本使用了两个基于 AspectJWeaver 的自定义 ysoserial gadget:

  • AspectJWeaverFileUpload1 — 在服务器文件系统上写入任意文件(用于用恶意版本覆盖 /etc/go/jetty.xml)。
  • AspectJWeaverFileRead1 — 读取 /dev/random,迫使 Jetty 重启并加载被修改的 jetty.xml,从而触发通过 java.lang.Runtime.exec() 注入的命令。

[EN] 端点 /go/remoting/remoteBuildRepository 接受 Java 序列化对象(Content-Type: application/x-java-serialized-object),仅使用请求头 Authorization: base64(HMAC-SHA256(tokenGenerationKey, agent_uuid)) 进行身份验证。由于 tokenGenerationKey 可通过 CVE-2021-43287 获取,未认证的攻击者可以发送恶意 gadget 链。这些脚本使用了两个基于 AspectJWeaver 的自定义 ysoserial gadget:

  • AspectJWeaverFileUpload1 — 在服务器文件系统上写入任意文件(用于用恶意版本覆盖 /etc/go/jetty.xml)。
  • AspectJWeaverFileRead1 — 读取 /dev/random,迫使 Jetty 重启并加载被修改的 jetty.xml,从而触发通过 java.lang.Runtime.exec() 注入的命令。

4. 攻击链 / Attack Chain

gocd_rce_noauth.py — 完整的未认证攻击链 / Full unauthenticated chain

下载工具