返回更新列表
已更新Sep 2, 2026

CICD-Goat-Vapt-Writeup — 已更新!

OWASP CICD-Goat 的完整 VAPT 报告 — 捕获 9 个 CTFd flag,4 个严重 + 5 个高危发现(含 CVE-2024-23897),映射至 OWASP Top 10 CI/CD 安全风险,附 PoC、修复建议及面试速览摘要。

分享

CICD-Goat VAPT 渗透测试报告

针对 OWASP CICD-Goat 的完整漏洞评估与渗透测试——一个故意设计为存在漏洞的 CI/CD 环境(Jenkins、Gitea、GitLab、CTFd)——端到端映射至 OWASP Top 10 CI/CD 安全风险。

Made for OWASP CICD-Goat Findings Flags Captured License

LinkedIn Location


🧭 本仓库与我其他仓库的关系

仓库内容简介
CICD-Goat-Vapt-Writeup (本仓库)针对 OWASP CICD-Goat 的完整 VAPT 报告——包含 16 项发现(含 CVE-2024-23897),映射至 OWASP Top 10 CI/CD 安全风险,附 PoC 与面试级摘要
From-Dev-To-Attacker我的旗舰实战日志——67 篇原创漏洞模式分析,以开发者视角撰写,涵盖所得税、银行、零售、电商、货运物流与教育等行业领域影响框架
From-Pentester-To-Red-Teamer我从 Web/API 渗透测试转型红队的分阶段 24 个月路线图——阶段、实验环境、认证,以及公开记录的进展
AppSec-From-The-Trenches渗透测试工具与方法论参考——我实际如何使用 Burp Suite、Nmap、Metasploit、Hydra、Hashcat 等,以及我的 WAPT 方法论
API-From-The-TrenchesAPI 安全深度系列——OWASP API Top 10 覆盖、BOLA、JWT 攻击、GraphQL 测试、完整方法论
Bug-Bounty-Hunting-Companion真实公开披露的漏洞赏金报告,拆解为可复现的检查清单
DarkWeb-From-The-Trenches威胁情报与暗网 OSINT 方法论——凭据泄露监控、勒索软件追踪、前期威胁情报
.pcap-Arsenal按协议整理的抓包文件,用于 Web/API/网络层分析与学习
Pentest-Engagement-Playbook顾问级范围界定、ROE、严重性判定依据与高管报告模板——项目背后的客户交付操作手册

为什么写这个

大多数 CI/CD 安全报告要么纯理论(一张幻灯片解释"管道投毒执行"),要么纯追 CTF flag(一句"这是 flag,下一个")。本仓库两者皆非:以下每一项发现都是经过完整验证、有 PoC 支撑的漏洞,映射至具体的 OWASP CI/CD-SEC 风险类别,以你在面试或真实客户报告中实际想要表达的方式撰写——包括死胡同、错误假设,以及它们是如何被纠正的。

如果你正在准备 AppSec/DevSecOps/CI-CD 安全面试,正在为涉及 CI/CD 工具链的渗透测试项目做准备,或者只是想亲手、具体地了解“Poisoned Pipeline Execution”或“Insufficient Credential Hygiene”在实际流量中究竟是什么样子——这份材料就是为你写的。

目标环境

字段值
目标OWASP CICD-Goat — 本地 Docker Compose 部署
项目类型经授权的自主学习实验环境(灰盒)
技术栈Jenkins 2.332.1、Gitea 1.16.5、GitLab 15.11.13-ee、CTFd、Docker Compose
范围localhost:3000(Gitea)、:8080/:50000(Jenkins)、:4000(GitLab)、:8000(CTFd)、:8008(prod-sim)
方法论阶段 0–3(范围界定 → 指纹识别 → 漏洞识别 → 利用)

完整交战规则:docs/00-engagement-overview.md。

⚠️ 本仓库中的所有测试均针对测试者自己的本地、一次性、故意存在漏洞的 Docker Compose 实验环境执行。 未涉及任何生产系统、共享基础设施或第三方数据。在自行尝试任何内容之前,请先从官方仓库启动你自己的 CICD-Goat 副本。

结果一览

ID标题严重性OWASP CI/CD 映射CTFd Flag
F-010Jenkins 构建控制台日志中的机密泄露 → 凭据窃取 → 未授权仓库写入CRITICALCICD-SEC-6, -4, -2flag1, flag2
F-013不安全的自动合并逻辑绕过代码审查(PR 范围的词差异启发式)CRITICALCICD-SEC-1, -5flag10
F-016CVE-2024-23897 — Jenkins CLI 在控制器上的任意文件读取CRITICALCICD-SEC-7flag8
F-017GitLab 共享运行器注册令牌 → 实例范围的 CI/CD 机密窃取CRITICALCICD-SEC-2, -6flag11
F-019通过代理标签覆盖实现 Jenkins 控制器节点代码执行CRITICALCICD-SEC-5, -4flag5
F-018解耦流水线仓库 + 分支排除过滤器绕过HIGHCICD-SEC-4, -6flag3
F-020共享代理文件系统暴露 FreeStyle 作业凭据HIGHCICD-SEC-6, -5flag6
F-021Checkov SAST 配置覆盖导致未被检测到的 IaC 错误配置HIGHCICD-SEC-1, -8flag7
F-014从 CI/CD 流水线变量派生的 Flask 会话密钥HIGHCICD-SEC-6flag11(经由 F-017)

另有 6 项信息性 / 辅助性发现(阳性对照、RBAC 边界确认、轻微信息泄露)位于 findings/informational/。

各项发现如何串联

若干发现并非彼此独立——一项发现会直接促成或补全另一项。这部分在面试中往往比任何单项发现本身更能给人留下印象:

CICD-Goat 跨发现杀伤链图,显示 F-010 导致未授权推送、F-013 的自动合并绕过、F-016 的 CVE-2024-23897 任意文件读取为 flag 捕获和 F-018 提供输入,以及 F-017 的恶意 GitLab 运行器补全 F-014

11 个 CTFd 挑战中已解决并验证 flag 的有 9 个——请参阅完整的挑战交叉引用,其中包括一个如实记录的案例(Dormouse/flag9),在该案例中访问控制边界在持续攻击下依然守住。

完整目录

以下每个文件都直接链接——文件夹树只是展示它们的组织方式。

📋 交战文档

文件内容
docs/00-engagement-overview.md交战规则、范围、技术栈
docs/01-methodology.md贯穿始终的分阶段测试方法论
docs/02-owasp-top10-cicd-mapping.md完整的 CICD-SEC-1 至 -10 参考分类体系
docs/03-remediation-roadmap.md按优先级排列的可操作修复清单
docs/04-interview-prep.md每项发现的口语化摘要 + 可能的后续问题
docs/05-lessons-learned.md回顾——哪些有效、哪些无效、下次应如何改进

🔍 侦察

文件内容
recon/01-fingerprinting.md阶段 1——对范围内每项服务进行未认证指纹识别
recon/02-authenticated-enumeration.md阶段 2——获得初始访问后进行认证枚举

🚨 严重与高危发现

分类