
자체 포함된 보안 훈련 랩으로, CVE-2026-20253 (Splunk Enterprise 인증되지 않은 원격 코드 실행)을 재현합니다. 문서화된 공격 체인을 통해 웹 익스플로잇, 권한 상승, 자격 증명 도용을 연습할 수 있는 Docker 기반 환경을 제공합니다.
Splunk Enterprise 10.2.3 · PostgreSQL 복구 사이드카 · CWE-306 (Missing Authentication for Critical Function) 방어 교육을 위해 실제 권고를 모델링한 공인된 자체 포함 재현입니다. Splunk의 독점 코드는 포함되지 않습니다.
이 저장소는 Vulhub/DVWA 스타일의 보안 훈련 랩입니다. Splunk Enterprise 10.2.3의 충실한 모델을 구축하고 CVE-2026-20253 뒤에 문서화된 동작을 재현합니다: 번들된 PostgreSQL 복구 사이드카는 실제 인증 없이 (빈/임의의 Basic 헤더가 허용됨) 권한 있는 파일 쓰기 및 SQL 실행 기능을 노출하며, Splunk 웹 계층은 로그인 게이트 이전에 __raw/v1/postgres/*를 해당 사이드카로 릴레이합니다. 연결되면, 이는 루트가 아닌 splunk 서비스 계정으로 인증되지 않은 원격 코드 실행을 초래합니다.
랩은 처음부터 끝까지 완전히 해결 가능합니다: 에지를 핑거프린팅하고, 사전 인증 헬스 배지를 따라 내부 복구 API에 접근하고, 임의 파일 쓰기를 증명하고, 내부 Postgres 자격 증명을 탈취하고, SQL 복원 파일 쓰기 프리미티브를 예약된 모듈형 입력 스크립트에서 코드 실행으로 전환합니다.
| 공급업체 권고 | SVD-2026-0603 |
| CVE | CVE-2026-20253 |
| 취약점 유형 | CWE-306 — Missing Authentication for Critical Function |
| 영향받는 버전 | Splunk Enterprise 10.2.3 |
| 수정 버전 | Splunk Enterprise 10.2.4 |
| CVSS 3.1 | 9.8 (Critical) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
edge network core network
┌───────────────────┐ ┌───────────────────────────────┐
browser ─▶ proxy :8080 ──▶ web :8001 (SPA)
(nginx edge) └▶ splunkd :8089 ─┬─▶ db :5432 (postgres)
login API + ├─▶ redis :6379 (jobs/cache)
__raw relay ───┼─▶ pg-sidecar :5435 ◀── THE VULN
│ (recovery API, blank Basic)
forwarders ─▶ ingest :8088 (HEC) ─────────┘
scheduler ──▶ runs modular-input script
as `splunk` (uid 1000) — RCE sink
shared volume app_data mounted into
pg-sidecar (write) + scheduler (exec)
두 개의 Docker 브리지: edge (프록시)와 core (나머지 모든 것). 취약한 빌드에서 pg-sidecar는 core에 있으며 웹 계층의 릴레이에서 접근 가능합니다 — 그 접근성이 핵심입니다. 패치된 오버레이는 이를 격리합니다.
cp .env.example .env
docker compose up --build -d
그런 다음 http://localhost:8080으로 이동합니다.
중요한 익스플로잇(복구 사이드카)은 완전히 인증되지 않음 — 로그인하지 않고도 접근할 수 있습니다. 아래 시드된 플랫폼 계정은 탐색을 위한 그레이박스 관점으로만 존재합니다 (Search & Reporting에서 Splunk 자체 감사 로그 읽기). 참가자에게 분석가 계정을 제공하고 나머지를 스스로 발견하도록 하세요.
이러한 자격 증명은 의도적으로 문서화되었습니다 — 이는 독립적인 훈련 랩이지 프로덕션 시스템이 아닙니다. 이 연습은 이들 중 어떤 것도 크래킹하거나 권한 상승이 필요하지 않습니다; 중요한
pg-sidecar복구 API는 인증되지 않았습니다. 전체 운영자 노트는docs/DEPLOYMENT.md에 있습니다.
획득해야 할 두 개의 플래그가 있습니다. 둘 다 SPLUNK{...} 문자열입니다; 그 값은 랩에 있으며 문서에서 공개됩니다 — 여기에 의도적으로 인쇄되지 않았으므로 직접 획득할 수 있습니다.
__raw 릴레이를 통해 복구 API에 도달하고, 가짜 Basic 인증을 통과하며, 사이드카의 .pgpass에서 내부 Postgres 자격 증명을 유출합니다.splunk로 인증되지 않은 RCE. 사이드카의 파일 쓰기 및 SQL 복원 프리미티브를 예약된 모듈형 입력 스크립트에서 코드 실행으로 전환한 다음 보호된 비밀을 읽습니다.건너뛰지 마십시오: docs/DISCOVERY_WALKTHROUGH.md는 스포일러가 아닌 발견되도록 작성되었습니다. 단계별 힌트 사다리와 전체 강사용 솔루션은 훈련 직원을 위해 존재하지만 이 패키지에는 포함되지 않아 연습이 블라인드 솔브 상태로 유지됩니다.
patched/ 트리는 Splunk의 실제 수정 (10.2.4)과 권고의 해결 방법을 심층 방어로 계층화하여 미러링합니다: 복구 경로에 실제 자격 증명 검증, backupFile 경로 탐색 삭제, libpq 연결 문자열 주입 제거, 비슈퍼유저 복원 역할, 사전 인증 __raw 릴레이 제거, 사이드카 네트워크 격리. patched/PATCH_NOTES.md를 참조하십시오.
오버레이를 사용하여 강화된 빌드를 시작하십시오:
docker compose -f docker-compose.yml -f patched/deploy/compose.override.hardened.yml up --build -d
권고의 완화 조치를 미러링하여 패치 없이 복구 사이드카를 완전히 비활성화할 수 있습니다 — server.conf에서 [postgres] disabled = true 설정과 유사합니다. .env에 다음을 설정하고 스택을 재생성하십시오:
PG_SIDECAR_DISABLED=true
사이드카가 비활성화되면 recovery/* 함수가 사라지고 체인이 소스에서 끊어집니다.
훈련 자료. 이 랩은 방어 교육을 위해 Splunk Enterprise CVE-2026-20253을 모델링한 공인된 자체 포함 재현입니다. Splunk의 독점 소스나 바이너리는 포함되어 있지 않습니다; 여기의 서비스는 문서화된 취약한 동작의 독립적인 재구현입니다. 이 랩에 대해서만 사용하십시오. 귀하가 소유하지 않은 시스템에 대해 이러한 기술을 실행하는 것은 불법입니다.
| 서비스 | 이미지 | 수신 대기 | 게시됨 | 역할 |
|---|
proxy | splunk/proxy:10.2.3 | 8080 | 8080:8080 | nginx 에지; Splunk Web + __raw 릴레이 진입점 |
web | splunk/web:10.2.3 | 8001 | — | Splunk Web 단일 페이지 앱 (정적) |
splunkd | splunk/splunkd:10.2.3 | 8089 | — | Splunk 데몬 / 웹 계층: 로그인 API + 사전 세션 /{locale}/splunkd/__raw/v1/postgres/* 릴레이 |
ingest | splunk/ingest:10.2.3 | 8088 | 8088:8088 | HTTP 이벤트 수집기 (토큰 인증) |
pg-sidecar | splunk/pg-sidecar:10.2.3 | 5435 | — | 취약점 — PostgreSQL 복구 사이드카 (/v1/postgres/*) |
scheduler | splunk/scheduler:10.2.3 | — | — | 예약된 모듈형 입력 스크립트를 splunk 사용자로 실행 → RCE 싱크 |
db | postgres:16-alpine | 5432 | — | 사이드카가 백업/복원하는 내부 Postgres |
redis | redis:7-alpine | 6379 | — | 작업 큐 / 캐시 |
| 사용자 이름 | 비밀번호 | 역할 | 참고 |
|---|
admin | Str@ta-Admin-2026! | admin | 전체 플랫폼 관리자 (설정, 사용자, 데이터 입력) |
j.okafor | Analyst!Winter24 | analyst | 여기서 시작 — 읽기 전용 Search & Reporting 콘솔 |
m.reyes | Operator#2311 | operator | 소스 / 클러스터 뷰 관리 |
svc_forwarder | fwd-3f9a1c77b204 | operator | 서비스 계정 (HEC 포워더) |
| 문서 | 대상 / 목적 |
|---|
docs/DISCOVERY_WALKTHROUGH.md | 핑거프린팅에서 RCE까지 발견 중심 경로 |
docs/ROOT_CAUSE.md | 취약한 이유 (CWE-306)와 패치가 수정하는 방법 |
docs/ARCHITECTURE.md | 서비스, 네트워크, __raw 릴레이 및 데이터 흐름 |
docs/DETECTION.md | 블루팀 탐지 기회 및 시그니처 |
docs/PLAYER_GUIDE.md | 참가자 브리핑 및 범위 |
docs/HINTS.md | 단계별 힌트 사다리 — 내부 유지, 이 패키지에 포함되지 않음 |
docs/INSTRUCTOR_GUIDE.md | 훈련 직원 전용 — 전체 솔루션 + 플래그, 내부 유지, 포함되지 않음 |
docs/DEPLOYMENT.md | 환경 구축, 운영 및 해체 |