
Informe completo de VAPT de OWASP CICD-Goat — 9 flags CTFd capturadas, 4 hallazgos críticos + 5 altos (incl. CVE-2024-23897) mapeados al OWASP Top 10 de Riesgos de Seguridad CI/CD, con PoCs, remediación y resúmenes listos para entrevistas.
<div align="center"> # CICD-Goat VAPT Writeup </div> > Una evaluación de vulnerabilidades y prueba de penetración completa contra [OWASP CICD-Goat](https://github.com/cider-security-research/cicd-goat) — un entorno CI/CD deliberadamente vulnerable (Jenkins, Gitea, GitLab, CTFd) — mapeado de extremo a extremo contra los **OWASP Top 10 CI/CD Security Risks**. <div align="center"> [](https://github.com/cider-security-research/cicd-goat) [](./findings) [](./ctfd/challenge-cross-reference.md) [](./LICENSE.md) [](https://linkedin.com/in/dheerajkumarjayaswal) [](https://github.com/dheeraj-jayaswal) </div> --- ## 🧭 Cómo encaja esto con mis otros repositorios | Repositorio | Qué contiene | |---|---| | **[CICD-Goat-Vapt-Writeup](https://github.com/dheeraj-jayaswal/CICD-Goat-Vapt-Writeup)** *(este repositorio)* | Writeup completo de VAPT contra OWASP CICD-Goat — 16 hallazgos incluyendo CVE-2024-23897, mapeados a los OWASP Top 10 CI/CD Security Risks, con PoCs y resúmenes listos para entrevistas | | [From-Dev-To-Attacker](https://github.com/dheeraj-jayaswal/From-Dev-To-Attacker) | Mi diario de campo insignia — 67 writeups originales sobre patrones de vulnerabilidad, escritos desde la perspectiva de un desarrollador, con un enfoque de impacto en dominios empresariales que abarca Impuestos sobre la Renta, Banca, Retail, Comercio Electrónico, Logística de Carga y Educación | | [From-Pentester-To-Red-Teamer](https://github.com/dheeraj-jayaswal/From-Pentester-To-Red-Teamer) | Mi hoja de ruta estructurada de 24 meses para la transición del pentesting Web/API al Red Teaming — fases, laboratorios, certificaciones y progreso seguido abiertamente mientras avanzo | | [AppSec-From-The-Trenches](https://github.com/dheeraj-jayaswal/AppSec-From-The-Trenches) | Referencia de herramientas y metodología de pentesting — cómo uso realmente Burp Suite, Nmap, Metasploit, Hydra, Hashcat y más, además de mi metodología WAPT | | [API-From-The-Trenches](https://github.com/dheeraj-jayaswal/API-From-The-Trenches) | Serie de seguridad de API en profundidad — cobertura del OWASP API Top 10, BOLA, ataques JWT, pruebas de GraphQL, metodología completa | | [Bug-Bounty-Hunting-Companion](https://github.com/dheeraj-jayaswal/Bug-Bounty-Hunting-Companion) | Reportes reales de bug bounty divulgados públicamente, desglosados en checklists reproducibles | | [DarkWeb-From-The-Trenches](https://github.com/dheeraj-jayaswal/DarkWeb-From-The-Trenches) | Metodología de inteligencia de amenazas y OSINT en la dark web — monitoreo de filtraciones de credenciales, seguimiento de ransomware, TI previa al engagement | | [.pcap-Arsenal](https://github.com/dheeraj-jayaswal/.pcap-Arsenal) | Capturas de paquetes organizadas por protocolo, para análisis y aprendizaje en las capas Web/API/Red | | [Pentest-Engagement-Playbook](https://github.com/dheeraj-jayaswal/Pentest-Engagement-Playbook) | Plantillas de alcance, ROE, justificación de severidad y reportes ejecutivos con nivel de consultoría — el playbook operativo de cara al cliente detrás de un engagement | --- ## Por qué existe esto La mayoría de los writeups de seguridad CI/CD o se quedan puramente en lo teórico (una diapositiva que explica la "ejecución de pipeline envenenada") o puramente en la caza de flags de CTF (una línea de "aquí está la flag, siguiente"). Este repositorio intenta no hacer ninguna de las dos cosas: cada hallazgo a continuación es una **vulnerabilidad completamente validada y respaldada por PoC**, mapeada a una categoría de riesgo específica de [OWASP CI/CD-SEC](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/02-owasp-top10-cicd-mapping.md), escrita de la forma en que realmente querrías explicarla en una entrevista o en un reporte real para un cliente — incluyendo los callejones sin salida, las suposiciones erróneas y cómo se corrigieron. Si estás preparando una entrevista de AppSec/DevSecOps/seguridad en CI-CD, preparándote para un pentest que involucra una cadena de herramientas CI/CD, o simplemente quieres un recorrido concreto y práctico de cómo se ve realmente "Poisoned Pipeline Execution" o "Insufficient Credential Hygiene" en el tráfico de red — esto está escrito para ti. ## Entorno objetivo | Campo | Valor | |---|---| | Objetivo | [OWASP CICD-Goat](https://github.com/cider-security-research/cicd-goat) — despliegue local con Docker Compose | | Tipo de encargo | Laboratorio de aprendizaje autodirigido autorizado (grey-box) | | Stack tecnológico | Jenkins 2.332.1, Gitea 1.16.5, GitLab 15.11.13-ee, CTFd, Docker Compose | | Alcance | `localhost:3000` (Gitea), `:8080`/`:50000` (Jenkins), `:4000` (GitLab), `:8000` (CTFd), `:8008` (prod-sim) | | Metodología | Fases 0–3 (Alcance → Fingerprinting → Identificación de vulnerabilidades → Explotación) | Reglas de enfrentamiento completas: [`docs/00-engagement-overview.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/00-engagement-overview.md). > ⚠️ **Todas las pruebas en este repositorio se realizaron contra el laboratorio local, desechable e intencionalmente vulnerable con Docker Compose del propio tester.** No se involucraron sistemas de producción, infraestructura compartida ni datos de terceros. Levanta tu propia copia de CICD-Goat desde el [repositorio oficial](https://github.com/cider-security-research/cicd-goat) antes de intentar cualquiera de estas técnicas por tu cuenta. ## Resultados de un vistazo | ID | Título | Severidad | Mapeo OWASP CI/CD | Flag de CTFd | |---|---|---|---|---| | [F-010](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-010-jenkins-secrets-exposure-console-logs.md) | Exposición de secretos en los logs de consola de compilación de Jenkins → robo de credenciales → escritura no autorizada en el repositorio | **CRÍTICA** | CICD-SEC-6, -4, -2 | flag1, flag2 | | [F-013](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-013-insecure-automerge-bypass.md) | La lógica insegura de auto-merge elude la revisión de código (heurística de diff por palabras a nivel de PR) | **CRÍTICA** | CICD-SEC-1, -5 | flag10 | | [F-016](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-016-CVE-2024-23897-jenkins-cli-arbitrary-file-read.md) | CVE-2024-23897 — lectura arbitraria de archivos mediante Jenkins CLI en el controlador | **CRÍTICA** | CICD-SEC-7 | flag8 | | [F-017](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-017-gitlab-runner-token-secret-theft.md) | Token de registro de runner compartido de GitLab → robo de secretos CI/CD en toda la instancia | **CRÍTICA** | CICD-SEC-2, -6 | flag11 | | [F-019](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-019-jenkins-controller-rce-agent-label-override.md) | Ejecución de código en el nodo controlador de Jenkins mediante la sobrescritura de etiquetas de agente | **CRÍTICA** | CICD-SEC-5, -4 | flag5 | | [F-018](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-018-decoupled-pipeline-branch-exclusion-bypass.md) | Repositorio de pipeline desacoplado + elusión del filtro de exclusión de ramas | ALTA | CICD-SEC-4, -6 | flag3 | | [F-020](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-020-shared-agent-filesystem-credential-leak.md) | El sistema de archivos compartido del agente expone credenciales de trabajos FreeStyle | ALTA | CICD-SEC-6, -5 | flag6 | | [F-021](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-021-checkov-sast-config-override-bypass.md) | La sobrescritura de configuración de Checkov SAST permite configuraciones erróneas de IaC no detectadas | ALTA | CICD-SEC-1, -8 | flag7 | | [F-014](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-014-flask-secret-key-cicd-variable.md) | Clave secreta de sesión de Flask derivada de una variable de pipeline CI/CD | ALTA | CICD-SEC-6 | flag11 (vía F-017) | Además, **6 hallazgos informativos / de soporte** (controles positivos, confirmaciones de límites de RBAC, divulgación menor de información) en [`findings/informational/`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational). ### Cómo se encadenan los hallazgos Varios hallazgos no son independientes — uno habilita o completa directamente a otro. Esta es la parte que suele impresionar en una entrevista más que cualquier hallazgo individual por sí solo:  **9 de 11 desafíos de CTFd resueltos y verificados con flag** — consulta la [referencia cruzada completa de desafíos](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/ctfd/challenge-cross-reference.md), incluido un caso documentado con honestidad (Dormouse/flag9) donde el límite de control de acceso se mantuvo bajo un ataque sostenido. ## Tabla de contenidos completa Cada archivo a continuación está enlazado directamente — el árbol de carpetas solo muestra cómo están organizados. ### 📋 Documentos del engagement | Archivo | Qué contiene | |---|---| | [`docs/00-engagement-overview.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/00-engagement-overview.md) | Reglas del engagement, alcance, stack tecnológico | | [`docs/01-methodology.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/01-methodology.md) | Metodología de pruebas fase por fase utilizada a lo largo del proceso | | [`docs/02-owasp-top10-cicd-mapping.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/02-owasp-top10-cicd-mapping.md) | Taxonomía de referencia completa CICD-SEC-1 a -10 | | [`docs/03-remediation-roadmap.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/03-remediation-roadmap.md) | Lista de verificación de remediación priorizada y accionable | | [`docs/04-interview-prep.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/04-interview-prep.md) | Resúmenes en estilo oral de cada hallazgo + posibles preguntas de seguimiento | | [`docs/05-lessons-learned.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/05-lessons-learned.md) | Retrospectiva — qué funcionó, qué no, y qué hacer de forma diferente la próxima vez | ### 🔍 Reconocimiento | Archivo | Qué contiene | |---|---| | [`recon/01-fingerprinting.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/recon/01-fingerprinting.md) | Fase 1 — fingerprinting no autenticado de cada servicio en el alcance | | [`recon/02-authenticated-enumeration.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/recon/02-authenticated-enumeration.md) | Fase 2 — enumeración autenticada una vez obtenido el acceso inicial | ### 🚨 Hallazgos críticos y altos | Archivo | |---| | [F-010 — Exposición de secretos de Jenkins mediante registros de consola](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-010-jenkins-secrets-exposure-console-logs.md) | | [F-013 — Bypass de auto-merge inseguro](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-013-insecure-automerge-bypass.md) | | [F-014 — Clave secreta de Flask desde variable de CI/CD](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-014-flask-secret-key-cicd-variable.md) | | [F-016 — CVE-2024-23897 Lectura arbitraria de archivos en Jenkins CLI](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-016-CVE-2024-23897-jenkins-cli-arbitrary-file-read.md) | | [F-017 — Robo de secreto de token de runner de GitLab](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-017-gitlab-runner-token-secret-theft.md) | | [F-018 — Bypass de exclusión de ramas en pipeline desacoplado](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-018-decoupled-pipeline-branch-exclusion-bypass.md) | | [F-019 — RCE en el controlador de Jenkins mediante override de etiqueta de agente](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-019-jenkins-controller-rce-agent-label-override.md) | | [F-020 — Fuga de credenciales en el sistema de archivos compartido de agentes](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-020-shared-agent-filesystem-credential-leak.md) | | [F-021 — Bypass de override de configuración de Checkov SAST](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-021-checkov-sast-config-override-bypass.md) | ### ℹ️ Hallazgos informativos / de apoyo | Archivo | |---| | [F-006 — Brecha en la enumeración de repositorios privados](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational/F-006-private-repo-enumeration-gap.md) | | [F-007 — Usuario adicional de Jenkins](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational/F-007-additional-jenkins-user.md) | | [F-009 — Job Read vs ExtendedRead](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational/F-009-job-read-vs-extendedread.md) | | [F-011 — Uso correcto de withCredentials (control positivo)](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational/F-011-correct-withcredentials-usage.md) | | [F-012 — Caída de conexión en la API de credenciales](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational/F-012-credentials-api-connection-drop.md) | | [F-015 — Enumeración anónima de registro](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational/F-015-anonymous-registry-enumeration.md) | ### 🎯 CTFd | Archivo | Qué contiene | |---|---| | [`ctfd/challenge-cross-reference.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/ctfd/challenge-cross-reference.md) | Referencia cruzada completa flag por flag, incluida la investigación bloqueada de Dormouse/flag9 y la corrección de Duchess/flag4 | ## Estructura del repositorio ``` . ├── docs/ # Engagement context, methodology, mappings, remediation, interview prep │ ├── 00-engagement-overview.md │ ├── 01-methodology.md │ ├── 02-owasp-top10-cicd-mapping.md │ ├── 03-remediation-roadmap.md │ ├── 04-interview-prep.md │ └── 05-lessons-learned.md ├── recon/ # Phase 1 & 2 — fingerprinting and authenticated enumeration │ ├── 01-fingerprinting.md │ └── 02-authenticated-enumeration.md ├── findings/ # One file per confirmed finding, full PoC + remediation │ ├── F-010-...md ... F-021-...md │ └── informational/ # INFO/LOW severity supporting observations ├── ctfd/ │ └── challenge-cross-reference.md └── LICENSE.md ``` ## Rutas de lectura - **¿Solo quieres lo más destacado?** Empieza por la [tabla de resultados de arriba](#results-at-a-glance) y luego lee F-010, F-013, F-016 y F-017 — las cuatro cadenas de ataque de extremo a extremo más completas. - **¿Estudiando para una entrevista?** Ve directamente a [`docs/04-interview-prep.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/04-interview-prep.md) — resúmenes de un párrafo, en estilo hablado, de cada hallazgo importante, además de preguntas de seguimiento habituales. - **¿Construyendo/fortaleciendo un pipeline de CI/CD?** Ve directamente a [`docs/03-remediation-roadmap.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/03-remediation-roadmap.md) — una lista de verificación priorizada y accionable. - **¿Nuevo en los conceptos de seguridad de CI/CD?** Empieza por [`docs/02-owasp-top10-cicd-mapping.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/02-owasp-top10-cicd-mapping.md) para conocer la taxonomía de referencia en torno a la cual está organizado todo este repositorio. ## Acerca de los Riesgos de Seguridad de CI/CD del OWASP Top 10 Cada hallazgo aquí está mapeado contra los [OWASP Top 10 CI/CD Security Risks (2023)](https://owasp.org/www-project-top-10-ci-cd-security-risks/) — una tabla de referencia completa (CICD-SEC-1 a CICD-SEC-10) se encuentra en [`docs/02-owasp-top10-cicd-mapping.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/02-owasp-top10-cicd-mapping.md), ya que se referencia constantemente a lo largo de los hallazgos individuales. ## Aviso legal Este repositorio documenta pruebas realizadas **exclusivamente contra un laboratorio de entrenamiento local, autoalojado e intencionalmente vulnerable** ([OWASP CICD-Goat](https://github.com/cider-security-research/cicd-goat)), con fines educativos y de portafolio. Nada aquí se dirige, hace referencia ni fue probado contra ningún sistema de producción, servicio de terceros o credencial real. No utilices ninguna técnica de este repositorio contra sistemas que no poseas o para los que no tengas autorización escrita explícita para probar. --- ## 🧠 Filosofía de pruebas > *"Los mejores pentesters piensan primero como desarrolladores y después como atacantes. Si entiendes por qué se escribió el código de cierta manera, siempre encontrarás más de lo que un escáner jamás encontrará."* Abordo cada encargo en tres fases: **1. Entender antes de atacar** — Lee la aplicación. Úsala como un usuario real. Comprende la lógica de negocio antes de tocar una sola herramienta. **2. Primero manual, después herramientas** — Los escáneres automatizados encuentran lo que están configurados para encontrar. Los bugs interesantes siempre se encuentran pensando, no escaneando. **3. Reportar como un desarrollador** — Un hallazgo que los desarrolladores no pueden entender o reproducir es un hallazgo que no se corrige. --- ## 👤 Sobre mí - 👤 **Nombre** — Dheeraj Kumar Jayaswal - 🌍 **Ubicación** — Dublín, Condado de Dublín, Irlanda - 💼 **Rol** — Consultor Principal de Pruebas de Penetración | VikingCloud (anteriormente Technology Lead – Offensive Security, Infosys Limited) - 🎯 **Enfoque principal** — Seguridad de Aplicaciones Web y API — Consultoría de Seguridad Ofensiva - 🏆 **Experiencia** — Más de 16 años en TI | Más de 9 años en Seguridad Ofensiva - 🔎 **Ventaja** — Comencé como desarrollador full-stack (ASP.NET / SQL Server) — pienso como desarrollador y ataco como hacker - 🎓 **En curso** — OSWE — OffSec Web Expert (ruta OSCE3) - 🏢 **Sectores** — Impuestos · Banca · Retail · Comercio electrónico · Logística de carga · Educación - 📝 **Compartiendo** — Notas de campo de pentesting empresarial, metodología y write-ups prácticos de encargos del mundo real --- ## 🏅 Certificaciones | Certificación | Emisor | Estado | |---|---|---| | Certified Ethical Hacker (CEH) | EC-Council | ✅ 2021 | | AWS Certified Solutions Architect – Associate | Amazon Web Services | ✅ 2022 | | AWS Certified Cloud Practitioner | Amazon Web Services | ✅ 2022 | | Executive Certificate in Cyber Security | IIT Kanpur | ✅ 2026 | | OSWE — OffSec Web Expert (ruta OSCE3) | OffSec | 🔄 En curso | **Dirección futura — Red Teaming:** OSCP → CRTO → OSEP, CRTP, CRTL, CRTE --- ## 📄 Licencia Este contenido está licenciado bajo **[CC BY 4.0](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/LICENSE.md)**. Eres libre de reutilizar o adaptar cualquiera de este análisis — solo da una atribución clara a **Dheeraj Kumar Jayaswal** con un enlace de vuelta a este repositorio. CICD-Goat en sí es un proyecto separado de [Cider Security](https://github.com/cider-security-research/cicd-goat) — ve a darle una estrella al original. --- ## 🤝 Conectar [LinkedIn](https://linkedin.com/in/dheerajkumarjayaswal) — abierto a consultoría, colaboración y debates sobre seguridad. Los comentarios, correcciones y PRs (por ejemplo, para flag9/Dormouse, o el seguimiento de Duchess/flag4 en la [referencia cruzada de CTFd](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/ctfd/challenge-cross-reference.md)) son bienvenidos — consulta [CONTRIBUTING.md](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/CONTRIBUTING.md).