
Relazione completa di VAPT su OWASP CICD-Goat — 9 flag CTFd catturate, 4 finding critici + 5 ad alta gravità (incl. CVE-2024-23897) mappati sull'OWASP Top 10 CI/CD Security Risks, con PoC, remediation e riepiloghi pronti per i colloqui.
Una valutazione completa delle vulnerabilità e test di penetrazione contro OWASP CICD-Goat — un ambiente CI/CD deliberatamente vulnerabile (Jenkins, Gitea, GitLab, CTFd) — mappato end-to-end rispetto ai OWASP Top 10 CI/CD Security Risks.
La maggior parte dei writeup sulla sicurezza CI/CD o resta puramente teorica (una slide che spiega il "poisoned pipeline execution") o è pura caccia alla flag CTF (una riga "ecco la flag, avanti"). Questo repo cerca di non fare né l'una né l'altra cosa: ogni finding qui sotto è una vulnerabilità completamente validata e supportata da PoC, mappata a una specifica categoria di rischio OWASP CI/CD-SEC, scritta nel modo in cui vorresti davvero spiegarla in un colloquio o in un report reale per un cliente — inclusi i vicoli ciechi, le ipotesi sbagliate e come sono state corrette.
Se stai studiando per un colloquio in ambito AppSec/DevSecOps/CI-CD-security, ti stai preparando per un engagement di pentest che coinvolge una toolchain CI/CD, o semplicemente vuoi un tour concreto e pratico di come appaiono davvero il "Poisoned Pipeline Execution" o l'"Insufficient Credential Hygiene" sul filo — questo è scritto per te.
Regole di ingaggio complete: docs/00-engagement-overview.md.
⚠️ Tutti i test in questo repo sono stati eseguiti contro il lab Docker Compose locale, usa-e-getta e intenzionalmente vulnerabile del tester. Nessun sistema di produzione, infrastruttura condivisa o dato di terze parti è stato coinvolto. Avvia la tua copia di CICD-Goat dal repo ufficiale prima di provare qualcosa di tutto questo.
Più 6 finding informativi / di supporto (controlli positivi, conferme dei confini RBAC, divulgazione minore di informazioni) in findings/informational/.
Diversi finding non sono indipendenti — uno abilita o completa direttamente un altro. Questa è la parte che tende a impressionare in un colloquio più di qualsiasi singolo finding preso da solo:
9 delle 11 sfide CTFd risolte e flag verificate — vedi il cross-reference completo delle sfide, incluso un caso documentato onestamente (Dormouse/flag9) in cui il confine di controllo degli accessi ha tenuto sotto attacco prolungato.
Ogni file qui sotto è linkato direttamente — l'albero delle cartelle mostra solo come sono organizzati.
| File | Cosa contiene |
|---|---|
recon/01-fingerprinting.md | Fase 1 — fingerprinting non autenticato di ogni servizio nello scope |
recon/02-authenticated-enumeration.md | Fase 2 — enumerazione autenticata una volta ottenuto l'accesso iniziale |
| File | Cosa contiene |
|---|---|
ctfd/challenge-cross-reference.md | Cross-reference completo flag per flag, inclusa l'indagine bloccata su Dormouse/flag9 e la correzione su Duchess/flag4 |
.
├── 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
docs/04-interview-prep.md — riassunti in stile parlato, di un paragrafo ciascuno, di ogni finding principale, più le domande di follow-up comuni.docs/03-remediation-roadmap.md — una checklist prioritizzata e attuabile.docs/02-owasp-top10-cicd-mapping.md per la tassonomia di riferimento attorno a cui è organizzato l'intero repo.Ogni finding qui è mappato rispetto agli OWASP Top 10 CI/CD Security Risks (2023) — una tabella di riferimento completa (da CICD-SEC-1 a CICD-SEC-10) si trova in docs/02-owasp-top10-cicd-mapping.md, poiché è citata costantemente in tutti i singoli finding.
Questo repository documenta test eseguiti esclusivamente contro un lab di addestramento locale, self-hosted e intenzionalmente vulnerabile (OWASP CICD-Goat), per scopi educativi e di portfolio. Nulla qui prende di mira, fa riferimento o è stato testato contro alcun sistema di produzione, servizio di terze parti o credenziale reale. Non usare alcuna tecnica di questo repo contro sistemi che non possiedi o per cui non hai esplicita autorizzazione scritta al test.
"I migliori penetration tester pensano prima come sviluppatori e poi come attaccanti. Se capisci perché il codice è stato scritto in un certo modo, troverai sempre più di quanto troverà mai uno scanner."
Affronto ogni engagement in tre fasi:
1. Capire prima di attaccare — Leggi l'applicazione. Usala come un utente reale. Comprendi la logica di business prima di toccare un singolo strumento.
2. Prima manuale, poi gli strumenti — Gli scanner automatizzati trovano ciò per cui sono configurati. I bug interessanti si trovano sempre pensando, non scansionando.
3. Riporta come uno sviluppatore — Un finding che gli sviluppatori non riescono a capire o riprodurre è un finding che non viene corretto.
Direzione futura — Red Teaming: OSCP → CRTO → OSEP, CRTP, CRTL, CRTE
Questo contenuto è rilasciato sotto CC BY 4.0. Sei libero di riutilizzare o adattare qualsiasi parte di questo write-up — basta attribuire chiaramente a Dheeraj Kumar Jayaswal con un link a questo repository. CICD-Goat stesso è un progetto separato di Cider Security — vai a mettere una stella all'originale.
LinkedIn — aperto a consulenza, collaborazione e discussioni sulla sicurezza.
Feedback, correzioni e PR (ad esempio per flag9/Dormouse, o per il follow-up su Duchess/flag4 nel cross-reference CTFd) sono benvenuti — vedi CONTRIBUTING.md.
| Repository | Cosa contiene |
|---|
| CICD-Goat-Vapt-Writeup (questo repo) | Writeup VAPT completo contro OWASP CICD-Goat — 16 findings tra cui CVE-2024-23897, mappati agli OWASP Top 10 CI/CD Security Risks, con PoC e riassunti pronti per i colloqui |
| From-Dev-To-Attacker | Il mio diario di campo principale — 67 write-up originali su pattern di vulnerabilità, scritti dalla prospettiva di uno sviluppatore, con inquadramento dell'impatto sui domini enterprise tra Fisco, Banche, Retail, E-commerce, Logistica Merci e Istruzione |
| From-Pentester-To-Red-Teamer | La mia roadmap strutturata di 24 mesi per la transizione dal pentesting Web/API al Red Teaming — fasi, lab, certificazioni e progressi tracciati apertamente mentre procedo |
| AppSec-From-The-Trenches | Riferimento su strumenti e metodologia di pentest — come uso realmente Burp Suite, Nmap, Metasploit, Hydra, Hashcat e altri, più la mia metodologia WAPT |
| API-From-The-Trenches | Serie approfondita sulla sicurezza delle API — copertura OWASP API Top 10, BOLA, attacchi JWT, testing GraphQL, metodologia completa |
| Bug-Bounty-Hunting-Companion | Report di bug bounty reali e divulgati pubblicamente, suddivisi in checklist riproducibili |
| DarkWeb-From-The-Trenches | Metodologia di threat intelligence e OSINT sul dark web — monitoraggio delle fughe di credenziali, tracciamento ransomware, TI pre-engagement |
| .pcap-Arsenal | Catture di pacchetti organizzate per protocollo, per l'analisi e l'apprendimento a livello Web/API/Rete |
| Campo | Valore |
|---|
| Target | OWASP CICD-Goat — deployment locale con Docker Compose |
| Tipo di engagement | Lab di apprendimento autonomo autorizzato (grey-box) |
| Stack tecnologico | Jenkins 2.332.1, Gitea 1.16.5, GitLab 15.11.13-ee, CTFd, Docker Compose |
| Scope | localhost:3000 (Gitea), :8080/:50000 (Jenkins), :4000 (GitLab), :8000 (CTFd), :8008 (prod-sim) |
| Metodologia | Fase 0–3 (Scope → Fingerprinting → Identificazione Vulnerabilità → Sfruttamento) |
| ID | Titolo | Severità | Mappatura OWASP CI/CD | Flag CTFd |
|---|
| F-010 | Esposizione di segreti nei log della console di build di Jenkins → furto di credenziali → scrittura non autorizzata sul repo | CRITICAL | CICD-SEC-6, -4, -2 | flag1, flag2 |
| F-013 | Logica di auto-merge insicura aggira la code review (euristica word-diff sull'intera PR) | CRITICAL | CICD-SEC-1, -5 | flag10 |
| F-016 | CVE-2024-23897 — lettura arbitraria di file tramite Jenkins CLI sul controller | CRITICAL | CICD-SEC-7 | flag8 |
| F-017 | Token di registrazione del shared-runner GitLab → furto di segreti CI/CD a livello di istanza | CRITICAL | CICD-SEC-2, -6 | flag11 |
| F-019 | Esecuzione di codice sul nodo controller Jenkins tramite override dell'etichetta dell'agente | CRITICAL | CICD-SEC-5, -4 | flag5 |
| F-018 | Repo di pipeline disaccoppiato + bypass del filtro di esclusione dei branch | HIGH | CICD-SEC-4, -6 | flag3 |
| F-020 | Il filesystem dell'agente condiviso espone le credenziali di un job FreeStyle | HIGH | CICD-SEC-6, -5 | flag6 |
| F-021 | L'override della configurazione Checkov SAST consente misconfigurazioni IaC non rilevate | HIGH | CICD-SEC-1, -8 | flag7 |
| F-014 | Chiave segreta di sessione Flask derivata da una variabile di pipeline CI/CD | HIGH | CICD-SEC-6 | flag11 (tramite F-017) |
| File | Cosa contiene |
|---|
docs/00-engagement-overview.md | Regole di ingaggio, scope, stack tecnologico |
docs/01-methodology.md | Metodologia di testing fase per fase usata in tutto il lavoro |
docs/02-owasp-top10-cicd-mapping.md | Tassonomia di riferimento completa da CICD-SEC-1 a -10 |
docs/03-remediation-roadmap.md | Checklist di remediation prioritizzata e attuabile |
docs/04-interview-prep.md | Riassunti in stile parlato di ogni finding + probabili domande di follow-up |
docs/05-lessons-learned.md | Retrospettiva — cosa ha funzionato, cosa no, cosa fare diversamente la prossima volta |
| File |
|---|
| File |
|---|
| Certificazione | Ente | Stato |
|---|
| 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 (percorso OSCE3) | OffSec | 🔄 In corso |