
CICD-Goat-Vapt-Writeup — Mis à jour !
Writeup VAPT complet d'OWASP CICD-Goat — 9 flags CTFd capturés, 4 constats critiques + 5 à sévérité élevée (dont CVE-2024-23897) mappés à l'OWASP Top 10 CI/CD Security Risks, avec des PoC, des mesures de remédiation et des résumés prêts pour les entretiens.
CICD-Goat VAPT Writeup
Une évaluation complète des vulnérabilités et un test d'intrusion contre OWASP CICD-Goat — un environnement CI/CD délibérément vulnérable (Jenkins, Gitea, GitLab, CTFd) — cartographié de bout en bout par rapport aux OWASP Top 10 CI/CD Security Risks.
🧭 Comment cela s'articule avec mes autres dépôts
| Dépôt | Contenu |
|---|---|
| CICD-Goat-Vapt-Writeup (ce dépôt) | Writeup VAPT complet contre OWASP CICD-Goat — 16 constats dont CVE-2024-23897, cartographiés aux OWASP Top 10 CI/CD Security Risks, avec PoC et résumés prêts pour l'entretien |
| From-Dev-To-Attacker | Mon journal de terrain phare — 67 writeups originaux sur les schémas de vulnérabilités, écrits du point de vue d'un développeur, avec un cadrage de l'impact métier en entreprise dans les domaines de l'impôt sur le revenu, de la banque, du commerce de détail, du e-commerce, de la logistique de fret et de l'éducation |
| From-Pentester-To-Red-Teamer | Ma feuille de route structurée sur 24 mois pour passer du pentest Web/API au Red Teaming — phases, labs, certifications et progression suivie ouvertement au fur et à mesure |
| AppSec-From-The-Trenches | Référence d'outils et de méthodologie de pentest — comment j'utilise réellement Burp Suite, Nmap, Metasploit, Hydra, Hashcat, et plus encore, ainsi que ma méthodologie WAPT |
| API-From-The-Trenches | Série approfondie sur la sécurité des API — couverture de l'OWASP API Top 10, BOLA, attaques JWT, tests GraphQL, méthodologie complète |
| Bug-Bounty-Hunting-Companion | Rapports de bug bounty réels et divulgués publiquement, découpés en checklists reproductibles |
| DarkWeb-From-The-Trenches | Méthodologie de renseignement sur les menaces et d'OSINT sur le dark web — surveillance des fuites d'identifiants, suivi des ransomwares, TI de pré-engagement |
| .pcap-Arsenal | Captures de paquets organisées par protocole, pour l'analyse et l'apprentissage aux niveaux Web/API/Réseau |
Pourquoi ce dépôt existe
La plupart des writeups sur la sécurité CI/CD restent soit purement théoriques (une slide expliquant la « poisoned pipeline execution »), soit purement dans la course au flag CTF (une ligne « voici le flag, suivant »). Ce dépôt tente de faire ni l'un ni l'autre : chaque constat ci-dessous est une vulnérabilité entièrement validée et étayée par un PoC, cartographiée à une catégorie de risque OWASP CI/CD-SEC spécifique, rédigée de la manière dont vous voudriez réellement l'expliquer lors d'un entretien ou dans un rapport client réel — y compris les impasses, les mauvaises hypothèses et la façon dont elles ont été corrigées.
Si vous préparez un entretien en AppSec/DevSecOps/sécurité CI-CD, si vous préparez une mission de pentest impliquant une chaîne d'outils CI/CD, ou si vous voulez simplement une visite concrète et pratique de ce à quoi ressemblent réellement la « Poisoned Pipeline Execution » ou une « Insufficient Credential Hygiene » sur le réseau — ceci est écrit pour vous.
Environnement cible
| Champ | Valeur |
|---|---|
| Cible | OWASP CICD-Goat — déploiement Docker Compose local |
| Type de mission | Lab d'apprentissage auto-dirigé autorisé (grey-box) |
| Stack technique | Jenkins 2.332.1, Gitea 1.16.5, GitLab 15.11.13-ee, CTFd, Docker Compose |
| Périmètre | localhost:3000 (Gitea), :8080/:50000 (Jenkins), :4000 (GitLab), :8000 (CTFd), :8008 (prod-sim) |
| Méthodologie | Phase 0–3 (Périmètre → Empreinte → Identification des vulnérabilités → Exploitation) |
Règles d'engagement complètes : docs/00-engagement-overview.md.
⚠️ Tous les tests de ce dépôt ont été réalisés contre le lab Docker Compose local, jetable et intentionnellement vulnérable du testeur. Aucun système de production, infrastructure partagée ou donnée tierce n'a été impliqué. Déployez votre propre copie de CICD-Goat depuis le dépôt officiel avant d'essayer quoi que ce soit de tout cela vous-même.
Résultats en un coup d'œil
| ID | Titre | Sévérité | Cartographie OWASP CI/CD | Flag CTFd |
|---|---|---|---|---|
| F-010 | Exposition de secrets dans les logs de console de build Jenkins → vol d'identifiants → écriture non autorisée dans le dépôt | CRITICAL | CICD-SEC-6, -4, -2 | flag1, flag2 |
| F-013 | La logique d'auto-merge non sécurisée contourne la revue de code (heuristique de diff mot à mot sur l'ensemble de la PR) | CRITICAL | CICD-SEC-1, -5 | flag10 |
| F-016 | CVE-2024-23897 — lecture arbitraire de fichiers via Jenkins CLI sur le contrôleur | CRITICAL | CICD-SEC-7 | flag8 |
| F-017 | Token d'enregistrement de runner partagé GitLab → vol de secrets CI/CD à l'échelle de l'instance | CRITICAL | CICD-SEC-2, -6 | flag11 |
| F-019 | Exécution de code sur le nœud contrôleur Jenkins via le contournement du label d'agent | CRITICAL | CICD-SEC-5, -4 | flag5 |
| F-018 | Dépôt de pipeline découplé + contournement du filtre d'exclusion de branche | HIGH | CICD-SEC-4, -6 | flag3 |
| F-020 | Le système de fichiers d'agent partagé expose les identifiants d'un job FreeStyle | HIGH | CICD-SEC-6, -5 | flag6 |
| F-021 | Le contournement de la configuration Checkov SAST permet une mauvaise configuration IaC non détectée | HIGH | CICD-SEC-1, -8 | flag7 |
| F-014 | Clé secrète de session Flask dérivée d'une variable de pipeline CI/CD | HIGH | CICD-SEC-6 | flag11 (via F-017) |
Plus 6 constats informatifs / de support (contrôles positifs, confirmations de frontières RBAC, divulgation d'informations mineure) dans findings/informational/.
Comment les constats s'enchaînent
Plusieurs constats ne sont pas indépendants — l'un permet ou complète directement un autre. C'est la partie qui a tendance à impressionner en entretien plus que n'importe quel constat isolé :
9 des 11 défis CTFd résolus et flags vérifiés — voir la référence croisée complète des défis, y compris un cas documenté honnêtement (Dormouse/flag9) où la frontière de contrôle d'accès a tenu sous attaque soutenue.
Table des matières complète
Chaque fichier ci-dessous est directement lié — l'arborescence des dossiers montre simplement comment ils sont organisés.
📋 Documents de mission
| Fichier | Contenu |
|---|---|
docs/00-engagement-overview.md | Règles d'engagement, périmètre, stack technique |
docs/01-methodology.md | Méthodologie de test phase par phase utilisée tout au long |
docs/02-owasp-top10-cicd-mapping.md | Taxonomie de référence complète CICD-SEC-1 à -10 |
docs/03-remediation-roadmap.md | Checklist de remédiation priorisée et actionnable |
docs/04-interview-prep.md | Résumés oraux de chaque constat + questions de suivi probables |
docs/05-lessons-learned.md | Rétrospective — ce qui a fonctionné, ce qui n'a pas fonctionné, ce qu'il faut faire différemment la prochaine fois |
🔍 Reconnaissance
| Fichier | Contenu |
|---|---|
recon/01-fingerprinting.md | Phase 1 — empreinte non authentifiée de chaque service du périmètre |
recon/02-authenticated-enumeration.md | Phase 2 — énumération authentifiée une fois l'accès initial obtenu |
🚨 Constats critiques et élevés
ℹ️ Constats informatifs / de support
🎯 CTFd
| Fichier | Contenu |
|---|---|
ctfd/challenge-cross-reference.md | Référence croisée complète flag par flag, y compris l'investigation bloquée Dormouse/flag9 et la correction Duchess/flag4 |
Structure du dépôt
.
├── 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
Parcours de lecture
- Vous voulez juste les points saillants ? Commencez par le tableau des résultats ci-dessus, puis lisez F-010, F-013, F-016 et F-017 — les quatre kill chains de bout en bout les plus complètes.
- Vous préparez un entretien ? Allez directement à
docs/04-interview-prep.md— des résumés oraux d'un paragraphe pour chaque constat majeur, plus les questions de suivi courantes. - Vous construisez/durcissez un pipeline CI/CD ? Allez directement à
docs/03-remediation-roadmap.md— une checklist priorisée et actionnable. - Nouveau dans les concepts de sécurité CI/CD ? Commencez par
docs/02-owasp-top10-cicd-mapping.mdpour la taxonomie de référence autour de laquelle tout ce dépôt est organisé.
À propos des OWASP Top 10 CI/CD Security Risks
Chaque constat ici est cartographié par rapport aux OWASP Top 10 CI/CD Security Risks (2023) — un tableau de référence complet (CICD-SEC-1 à CICD-SEC-10) se trouve dans docs/02-owasp-top10-cicd-mapping.md, car il est constamment référencé tout au long des constats individuels.
Avertissement
Ce dépôt documente des tests réalisés exclusivement contre un lab d'entraînement local, auto-hébergé et intentionnellement vulnérable (OWASP CICD-Goat), à des fins éducatives et de portfolio. Rien ici ne cible, ne référence ou n'a été testé contre un système de production, un service tiers ou un identifiant réel. N'utilisez aucune technique de ce dépôt contre des systèmes que vous ne possédez pas ou pour lesquels vous ne disposez pas d'une autorisation écrite explicite de test.
🧠 Philosophie de test
« Les meilleurs testeurs d'intrusion pensent d'abord comme des développeurs et ensuite comme des attaquants. Si vous comprenez pourquoi le code a été écrit d'une certaine manière, vous trouverez toujours plus qu'un scanner ne le fera jamais. »
J'aborde chaque mission en trois phases :
1. Comprendre avant d'attaquer — Lisez l'application. Utilisez-la comme un vrai utilisateur. Comprenez la logique métier avant de toucher au moindre outil.
2. Manuel d'abord, outils ensuite — Les scanners automatisés trouvent ce pour quoi ils sont configurés. Les bugs intéressants sont toujours trouvés en réfléchissant, pas en scannant.
3. Rapporter comme un développeur — Un constat que les développeurs ne peuvent pas comprendre ou reproduire est un constat qui ne sera pas corrigé.
👤 À propos de moi
- Nom — Dheeraj Kumar Jayaswal
- Rôle — Technology Lead – Offensive Security, Infosys Limited
- Focus — Tests d'intrusion d'applications Web et d'API
- Expérience — 15+ ans dans l'IT · 6+ ans en sécurité offensive
- Atout — Ancien développeur full-stack (ASP.NET / SQL Server) — je pense comme un développeur, j'attaque comme un hacker
- Domaines — Impôt sur le revenu · Banque · Commerce de détail · E-commerce · Logistique de fret · Éducation
🏅 Certifications
| Certification | Organisme | Statut |
|---|---|---|
| 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 (parcours OSCE3) | OffSec | 🔄 En cours |
Orientation future — Red Teaming : OSCP → CRTO → OSEP, CRTP, CRTL, CRTE
📄 Licence
Ce contenu est sous licence CC BY 4.0. Vous êtes libre de réutiliser ou d'adapter tout ou partie de ce writeup — attribuez simplement clairement à Dheeraj Kumar Jayaswal avec un lien vers ce dépôt. CICD-Goat lui-même est un projet distinct de Cider Security — allez mettre une étoile à l'original.
🤝 Contact
LinkedIn — ouvert au conseil, à la collaboration et aux discussions sur la sécurité.
Les retours, corrections et PR (par exemple pour flag9/Dormouse, ou le suivi Duchess/flag4 dans la référence croisée CTFd) sont les bienvenus — voir CONTRIBUTING.md.