
Полный VAPT-разбор OWASP CICD-Goat — захвачено 9 флагов CTFd, 4 критических и 5 находок высокого уровня серьёзности (включая CVE-2024-23897), соотнесённых с OWASP Top 10 CI/CD Security Risks, с PoC-эксплойтами, рекомендациями по устранению и готовыми к собеседованию сводками.
<div align="center"> # Отчёт VAPT по CICD-Goat </div> > Полная оценка уязвимостей и тестирование на проникновение в [OWASP CICD-Goat](https://github.com/cider-security-research/cicd-goat) — намеренно уязвимую среду CI/CD (Jenkins, Gitea, GitLab, CTFd) — сквозным образом сопоставленная с **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> --- ## 🧭 Как это соотносится с моими другими репозиториями | Репозиторий | Что в нём | |---|---| | **[CICD-Goat-Vapt-Writeup](https://github.com/dheeraj-jayaswal/CICD-Goat-Vapt-Writeup)** *(этот репозиторий)* | Полный отчёт VAPT по OWASP CICD-Goat — 16 находок, включая CVE-2024-23897, сопоставленных с OWASP Top 10 CI/CD Security Risks, с PoC и резюме, готовыми к собеседованиям | | [From-Dev-To-Attacker](https://github.com/dheeraj-jayaswal/From-Dev-To-Attacker) | Мой флагманский полевой журнал — 67 оригинальных разборов паттернов уязвимостей, написанных с точки зрения разработчика, с описанием влияния на бизнес-домены в сферах налогов, банковского дела, розничной торговли, электронной коммерции, грузовой логистики и образования | | [From-Pentester-To-Red-Teamer](https://github.com/dheeraj-jayaswal/From-Pentester-To-Red-Teamer) | Мой структурированный 24-месячный план перехода от тестирования на проникновение веб-приложений и API к Red Teaming — этапы, лаборатории, сертификации и открыто отслеживаемый прогресс по мере прохождения | | [AppSec-From-The-Trenches](https://github.com/dheeraj-jayaswal/AppSec-From-The-Trenches) | Справочник по инструментам и методологии пентеста — как я на самом деле использую Burp Suite, Nmap, Metasploit, Hydra, Hashcat и другие, плюс моя методология WAPT | | [API-From-The-Trenches](https://github.com/dheeraj-jayaswal/API-From-The-Trenches) | Углублённая серия по безопасности API — покрытие OWASP API Top 10, BOLA, атаки на JWT, тестирование GraphQL, полная методология | | [Bug-Bounty-Hunting-Companion](https://github.com/dheeraj-jayaswal/Bug-Bounty-Hunting-Companion) | Реальные публично раскрытые отчёты bug bounty, разбитые на воспроизводимые чек-листы | | [DarkWeb-From-The-Trenches](https://github.com/dheeraj-jayaswal/DarkWeb-From-The-Trenches) | Методология threat intelligence и OSINT в даркнете — мониторинг утечек учётных данных, отслеживание программ-вымогателей, TI на этапе подготовки к проекту | | [.pcap-Arsenal](https://github.com/dheeraj-jayaswal/.pcap-Arsenal) | Захваты пакетов, организованные по протоколам, для анализа и обучения на уровне веб-, API- и сетевого уровней | | [Pentest-Engagement-Playbook](https://github.com/dheeraj-jayaswal/Pentest-Engagement-Playbook) | Шаблоны уровня консультанта для определения объёма работ, ROE, обоснования серьёзности и отчётности для руководства — операционный плейбук для клиентов, лежащий в основе проекта | --- ## Зачем это существует Большинство отчётов по безопасности CI/CD либо остаются чисто теоретическими (слайд, объясняющий «отравленное выполнение конвейера»), либо чисто гоняются за флагами CTF (одна строка «вот флаг, дальше»). Этот репозиторий пытается не делать ни того, ни другого: каждая находка ниже — это **полностью подтверждённая уязвимость с PoC**, сопоставленная с конкретной категорией риска [OWASP CI/CD-SEC](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/02-owasp-top10-cicd-mapping.md), написанная так, как вы на самом деле хотели бы объяснить её на собеседовании или в реальном отчёте для клиента — включая тупики, ошибочные предположения и то, как они были исправлены. Если вы готовитесь к собеседованию по AppSec/DevSecOps/безопасности CI/CD, готовитесь к пентесту, связанному с цепочкой инструментов CI/CD, или просто хотите получить конкретный практический обзор того, как «Poisoned Pipeline Execution» или «Insufficient Credential Hygiene» выглядят на практике в трафике — это написано для вас. ## Целевая среда | Поле | Значение | |---|---| | Цель | [OWASP CICD-Goat](https://github.com/cider-security-research/cicd-goat) — локальное развёртывание через Docker Compose | | Тип работ | Авторизованная учебная лаборатория для самостоятельного обучения (grey-box) | | Технологический стек | 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 (Scope → Fingerprinting → Vulnerability ID → Exploitation) | Полные правила проведения работ: [`docs/00-engagement-overview.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/00-engagement-overview.md). > ⚠️ **Все тестирование в этом репозитории проводилось на локальной, одноразовой, намеренно уязвимой лаборатории Docker Compose самого тестировщика.** Никакие производственные системы, общая инфраструктура или данные третьих лиц не затрагивались. Перед тем как пробовать что-либо из этого самостоятельно, разверните собственную копию CICD-Goat из [официального репозитория](https://github.com/cider-security-research/cicd-goat). ## Результаты кратко | ID | Название | Критичность | Сопоставление с OWASP CI/CD | Флаг CTFd | |---|---|---|---|---| | [F-010](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-010-jenkins-secrets-exposure-console-logs.md) | Раскрытие секретов в консольных логах сборки Jenkins → кража учётных данных → несанкционированная запись в репозиторий | **CRITICAL** | 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) | Небезопасная логика автослияния обходит проверку кода (эвристика пословного диффа по всему PR) | **CRITICAL** | 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 — произвольное чтение файлов через Jenkins CLI на контроллере | **CRITICAL** | 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) | Токен регистрации общего раннера GitLab → кража секретов CI/CD на уровне всего инстанса | **CRITICAL** | 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) | Выполнение кода на узле-контроллере Jenkins через переопределение метки агента | **CRITICAL** | 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) | Развязанный репозиторий пайплайна + обход фильтра исключения ветвей | HIGH | 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) | Общая файловая система агента раскрывает учётные данные задачи FreeStyle | HIGH | 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) | Переопределение конфигурации Checkov SAST позволяет незамеченную ошибку конфигурации IaC | HIGH | 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) | Секретный ключ сессии Flask, производный от переменной пайплайна CI/CD | HIGH | CICD-SEC-6 | flag11 (через F-017) | Плюс **6 информационных / вспомогательных находок** (положительные контроли, подтверждения границ RBAC, незначительное раскрытие информации) в [`findings/informational/`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational). ### Как находки связываются в цепочку Некоторые находки не являются независимыми — одна напрямую обеспечивает или завершает другую. Именно эта часть обычно производит большее впечатление на собеседовании, чем любая отдельная находка сама по себе:  **Решено и подтверждено флагами 9 из 11 задач CTFd** — см. полную [таблицу соответствия задач](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/ctfd/challenge-cross-reference.md), включая честно задокументированный случай (Dormouse/flag9), где граница контроля доступа выдержала продолжительную атаку. ## Полное оглавление Каждый файл ниже связан напрямую — дерево папок лишь показывает, как они организованы. ### 📋 Документы по проекту | Файл | Что внутри | |---|---| | [`docs/00-engagement-overview.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/00-engagement-overview.md) | Правила взаимодействия, область охвата, технологический стек | | [`docs/01-methodology.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/01-methodology.md) | Поэтапная методология тестирования, используемая на протяжении всей работы | | [`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) | Полная справочная таксономия CICD-SEC-1 – CICD-SEC-10 | | [`docs/03-remediation-roadmap.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/03-remediation-roadmap.md) | Приоритизированный практический чек-лист по устранению уязвимостей | | [`docs/04-interview-prep.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/04-interview-prep.md) | Устные резюме каждой находки + вероятные уточняющие вопросы | | [`docs/05-lessons-learned.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/05-lessons-learned.md) | Ретроспектива — что сработало, что нет, что делать иначе в следующий раз | ### 🔍 Разведка | Файл | Что внутри | |---|---| | [`recon/01-fingerprinting.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/recon/01-fingerprinting.md) | Этап 1 — неаутентифицированное фингерпринтинг всех сервисов в области охвата | | [`recon/02-authenticated-enumeration.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/recon/02-authenticated-enumeration.md) | Этап 2 — аутентифицированное перечисление после получения первоначального доступа | ### 🚨 Критические и высокие находки | Файл | |---| | [F-010 — Утечка секретов Jenkins через журналы консоли](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-010-jenkins-secrets-exposure-console-logs.md) | | [F-013 — Небезопасный обход автослияния](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-013-insecure-automerge-bypass.md) | | [F-014 — Секретный ключ Flask из переменной 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 произвольное чтение файлов через 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 — Кража секретного токена GitLab runner](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-017-gitlab-runner-token-secret-theft.md) | | [F-018 — Обход исключения ветвей в развязанном пайплайне](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-018-decoupled-pipeline-branch-exclusion-bypass.md) | | [F-019 — RCE контроллера Jenkins через переопределение метки агента](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-019-jenkins-controller-rce-agent-label-override.md) | | [F-020 — Утечка учётных данных из общей файловой системы агента](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-020-shared-agent-filesystem-credential-leak.md) | | [F-021 — Обход переопределения конфигурации Checkov SAST](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/F-021-checkov-sast-config-override-bypass.md) | ### ℹ️ Информационные / вспомогательные находки | Файл | |---| | [F-006 — Пробел в перечислении приватных репозиториев](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational/F-006-private-repo-enumeration-gap.md) | | [F-007 — Дополнительный пользователь Jenkins](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational/F-007-additional-jenkins-user.md) | | [F-009 — Job Read против ExtendedRead](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational/F-009-job-read-vs-extendedread.md) | | [F-011 — Корректное использование withCredentials (положительный контроль)](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational/F-011-correct-withcredentials-usage.md) | | [F-012 — Разрыв соединения с API учётных данных](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational/F-012-credentials-api-connection-drop.md) | | [F-015 — Анонимное перечисление реестра](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/findings/informational/F-015-anonymous-registry-enumeration.md) | ### 🎯 CTFd | Файл | Что внутри | |---|---| | [`ctfd/challenge-cross-reference.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/ctfd/challenge-cross-reference.md) | Полная перекрёстная сверка по каждому флагу, включая заблокированное расследование Dormouse/flag9 и исправление 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 ``` ## Пути чтения - **Хотите только главное?** Начните с [таблицы результатов выше](#results-at-a-glance), затем прочитайте F-010, F-013, F-016 и F-017 — четыре наиболее полные сквозные цепочки атак. - **Готовитесь к собеседованию?** Переходите сразу к [`docs/04-interview-prep.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/04-interview-prep.md) — краткие устные резюме по каждому ключевому выводу в один абзац, плюс типичные дополнительные вопросы. - **Строите/укрепляете CI/CD-конвейер?** Переходите сразу к [`docs/03-remediation-roadmap.md`](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/docs/03-remediation-roadmap.md) — приоритизированный практический чек-лист. - **Впервые знакомитесь с концепциями безопасности CI/CD?** Начните с [`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), чтобы ознакомиться с эталонной таксономией, вокруг которой организован весь этот репозиторий. ## О OWASP Top 10 CI/CD Security Risks Каждая находка здесь сопоставлена с [OWASP Top 10 CI/CD Security Risks (2023)](https://owasp.org/www-project-top-10-ci-cd-security-risks/) — полная справочная таблица (CICD-SEC-1 по CICD-SEC-10) находится в [`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), поскольку на неё постоянно ссылаются в отдельных находках. ## Отказ от ответственности Этот репозиторий документирует тестирование, выполненное **исключительно в отношении локальной, самостоятельно размещённой, намеренно уязвимой учебной лаборатории** ([OWASP CICD-Goat](https://github.com/cider-security-research/cicd-goat)), в образовательных целях и для портфолио. Ничто здесь не нацелено на какие-либо производственные системы, сторонние сервисы или реальные учётные данные, не ссылается на них и не тестировалось против них. Не используйте какие-либо методы из этого репозитория против систем, которыми вы не владеете или на тестирование которых у вас нет явного письменного разрешения. --- ## 🧠 Философия тестирования > *"Лучшие пентестеры сначала думают как разработчики и только потом как атакующие. Если вы понимаете, почему код был написан определённым образом, вы всегда найдёте больше, чем когда-либо найдёт сканер."* К каждому проекту я подхожу в три этапа: **1. Понять, прежде чем атаковать** — Прочитайте приложение. Используйте его как реальный пользователь. Поймите бизнес-логику, прежде чем браться за какой-либо инструмент. **2. Сначала вручную, инструменты потом** — Автоматические сканеры находят то, на что они настроены. Интересные уязвимости всегда находятся благодаря мышлению, а не сканированию. **3. Отчитывайтесь как разработчик** — Находка, которую разработчики не могут понять или воспроизвести, — это находка, которую не исправят. --- ## 👤 Обо мне - 👤 **Имя** — Dheeraj Kumar Jayaswal - 🌍 **Местоположение** — Дублин, графство Дублин, Ирландия - 💼 **Должность** — Principal Penetration Testing Consultant | VikingCloud (ранее Technology Lead – Offensive Security, Infosys Limited) - 🎯 **Основной фокус** — Безопасность веб-приложений и API — консалтинг по наступательной безопасности - 🏆 **Опыт** — 16+ лет в IT | 9+ лет в наступательной безопасности - 🔎 **Преимущество** — Начинал как full-stack разработчик (ASP.NET / SQL Server) — думаю как разработчик, атакую как хакер - 🎓 **В процессе получения** — OSWE — OffSec Web Expert (трек OSCE3) - 🏢 **Отрасли** — Налогообложение · Банковское дело · Розничная торговля · Электронная коммерция · Грузовая логистика · Образование - 📝 **Делюсь** — Полевые заметки о корпоративных пентестах, методология и практические разборы из реальных проектов --- ## 🏅 Сертификации | Сертификация | Выдающая организация | Статус | |---|---|---| | 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 (трек OSCE3) | OffSec | 🔄 В процессе | **Будущее направление — Red Teaming:** OSCP → CRTO → OSEP, CRTP, CRTL, CRTE --- ## 📄 Лицензия Этот материал распространяется по лицензии **[CC BY 4.0](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/LICENSE.md)**. Вы можете свободно использовать или адаптировать любой фрагмент этого разбора — просто укажите явную атрибуцию **Dheeraj Kumar Jayaswal** со ссылкой на этот репозиторий. Сам CICD-Goat — отдельный проект от [Cider Security](https://github.com/cider-security-research/cicd-goat) — поставьте звезду оригиналу. --- ## 🤝 Связаться [LinkedIn](https://linkedin.com/in/dheerajkumarjayaswal) — открыт для консультаций, сотрудничества и обсуждений по безопасности. Отзывы, исправления и PR (например, по flag9/Dormouse или по продолжению Duchess/flag4 в [сопоставлении с CTFd](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/ctfd/challenge-cross-reference.md)) приветствуются — см. [CONTRIBUTING.md](https://github.com/dheeraj-jayaswal/cicd-goat-vapt-writeup/blob/main/CONTRIBUTING.md).