업데이트로 돌아가기
UpdatedSep 2, 2026

CICD-Goat-Vapt-Writeup — Updated!

OWASP CICD-Goat 전체 VAPT 분석 보고서 — 9개의 CTFd 플래그 캡처, OWASP Top 10 CI/CD 보안 위험에 매핑된 치명적(critical) 4건 및 높음(high) 5건의 발견 사항(CVE-2024-23897 포함), 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 라이트업 — CVE-2024-23897을 포함한 16개의 발견 사항, OWASP Top 10 CI/CD 보안 위험에 매핑, PoC 및 면접에 바로 활용 가능한 요약 포함
From-Dev-To-Attacker나의 대표 현장 일지 — 개발자의 시각에서 작성한 취약점 패턴에 관한 67개의 독창적 라이트업으로, 소득세, 은행, 소매, 전자상거래, 화물 물류, 교육 등 기업 도메인 전반의 영향 프레이밍 포함
From-Pentester-To-Red-Teamer웹/API 침투 테스트에서 레드 팀으로 전환하기 위한 나의 체계적인 24개월 로드맵 — 단계, 실습, 자격증, 그리고 진행 상황을 공개적으로 추적
AppSec-From-The-Trenches침투 테스트 도구 및 방법론 참고 자료 — Burp Suite, Nmap, Metasploit, Hydra, Hashcat 등을 실제로 사용하는 방법과 나의 WAPT 방법론
API-From-The-Trenches심층 API 보안 시리즈 — OWASP API Top 10 커버리지, BOLA, JWT 공격, GraphQL 테스트, 전체 방법론
Bug-Bounty-Hunting-Companion실제로 공개된 버그 바운티 보고서를 재현 가능한 체크리스트로 정리
DarkWeb-From-The-Trenches위협 인텔리전스 및 다크 웹 OSINT 방법론 — 자격 증명 유출 모니터링, 랜섬웨어 추적, 사전 계약 TI
.pcap-Arsenal웹/API/네트워크 계층 분석 및 학습을 위해 프로토콜별로 정리된 패킷 캡처
Pentest-Engagement-Playbook컨설턴트 수준의 범위 설정, ROE, 심각도 근거, 경영진 보고 템플릿 — 계약을 뒷받침하는 고객 대면 운영 플레이북

이 저장소가 존재하는 이유

대부분의 CI/CD 보안 라이트업은 순수하게 이론에 머물거나("파이프라인 오염 실행"을 설명하는 슬라이드) 순수하게 CTF 플래그만 쫓거나("여기 플래그가 있고, 다음으로"라는 한 줄) 하는 식입니다. 이 저장소는 둘 다 지향하지 않습니다. 아래의 모든 발견 사항은 완전히 검증되고 PoC로 뒷받침된 취약점이며, 특정 OWASP CI/CD-SEC 위험 범주에 매핑되어 있고, 면접이나 실제 고객 보고서에서 실제로 설명하고 싶은 방식으로 작성되었습니다 — 막다른 길, 잘못된 가정, 그리고 그것들이 어떻게 바로잡혔는지까지 포함하여.

AppSec/DevSecOps/CI-CD 보안 면접을 준비 중이거나, CI/CD 툴체인과 관련된 모의해킹(pentest) 프로젝트를 준비 중이거나, 아니면 "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)
방법론Phase 0–3 (범위 설정 → 핑거프린팅 → 취약점 식별 → 익스플로잇)

전체 교전 규칙: docs/00-engagement-overview.md.

⚠️ 이 저장소의 모든 테스트는 테스터 본인의 로컬·일회용·의도적으로 취약한 Docker Compose 랩을 대상으로 수행되었습니다. 프로덕션 시스템, 공유 인프라, 제3자 데이터는 일절 관련되지 않았습니다. 직접 시도하기 전에 공식 저장소에서 본인의 CICD-Goat 사본을 먼저 구동하십시오.

결과 요약

ID제목심각도OWASP CI/CD 매핑CTFd 플래그
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-014CI/CD 파이프라인 변수에서 파생된 Flask 세션 시크릿 키HIGHCICD-SEC-6flag11 (F-017 경유)

추가로 findings/informational/에 6개의 정보성/보조 발견 사항(긍정 통제, RBAC 경계 확인, 경미한 정보 노출)이 있습니다.

발견 사항들이 어떻게 연결되는가

여러 발견 사항은 독립적이지 않습니다 — 하나가 다른 하나를 직접 가능하게 하거나 완성합니다. 면접에서 단일 발견 사항보다 더 인상적인 부분이 바로 이 부분입니다:

F-010이 무단 푸시로 이어지고, F-013의 자동 병합 우회, F-016의 CVE-2024-23897 임의 파일 읽기가 플래그 확보와 F-018로 이어지며, F-017의 악성 GitLab 러너가 F-014를 완성하는 것을 보여주는 CICD-Goat 교차 발견 사항 킬 체인 다이어그램

11개 CTFd 챌린지 중 9개 해결 및 플래그 검증 완료 — 전체 챌린지 교차 참조를 참조하십시오. 지속적인 공격에도 접근 제어 경계가 유지된 사례(Dormouse/flag9)도 솔직하게 문서화되어 있습니다.

전체 목차

아래의 모든 파일은 직접 링크되어 있습니다 — 폴더 트리는 파일들이 어떻게 구성되어 있는지 보여줄 뿐입니다.

📋 참여 문서

카테고리