
自己完結型のセキュリティトレーニングラボで、CVE-2026-20253(Splunk Enterpriseの認証なしRCE)を再現します。文書化された攻撃チェーンを通じて、Webエクスプロイト、権限昇格、認証情報の窃取を練習するためのDockerベースの環境を提供します。
Splunk Enterprise 10.2.3 · PostgreSQL リカバリーサイドカー · CWE-306 (重要な機能に対する認証の欠如) 認可された自己完結型の再現であり、防御教育のために実際のアドバイザリをモデル化しています。Splunkのプロプライエタリコードは含まれていません。
このリポジトリは、Vulhub/DVWAスタイルのセキュリティトレーニングラボです。Splunk Enterprise 10.2.3の忠実なモデルを立ち上げ、CVE-2026-20253の背後にあるドキュメント化された動作を再現します。バンドルされているPostgreSQLリカバリーサイドカーは、実際の認証なしで特権的なファイル書き込みおよびSQL実行機能を公開します(空/任意のBasicヘッダーが受け入れられます)。また、Splunk Web層は、ログインゲートの前に__raw/v1/postgres/*をそのサイドカーに中継します。連鎖すると、これにより非rootのsplunkサービスアカウントとしての認証なしのリモートコード実行が実現します。
ラボは完全にエンドツーエンドで解決可能です:エッジをフィンガープリントし、事前認証のヘルスバッジから内部リカバリーAPIにアクセスし、任意のファイル書き込みを証明し、内部Postgres資格情報を盗み、SQLリストアのファイル書き込みプリミティブをスケジュールされたモジュラー入力スクリプトでのコード実行にピボットします。
| ベンダーアドバイザリ | SVD-2026-0603 |
| CVE | CVE-2026-20253 |
| 脆弱性 | CWE-306 — 重要な機能に対する認証の欠如 |
| 影響を受けるバージョン | 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)
| サービス | イメージ | リッスンポート | 公開ポート | 役割 |
|---|---|---|---|---|
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デーモン/Web層: ログイン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 | — | ジョブキュー/キャッシュ |
2つのDockerブリッジ: edge (プロキシ) と core (その他すべて)。脆弱なビルドでは、pg-sidecarはcoreに配置され、Web層のリレーから到達可能です — その到達可能性がポイントです。パッチ適用済みのオーバーレイはそれを分離します。
cp .env.example .env
docker compose up --build -d
その後、http://localhost:8080にアクセスしてください。
重要なエクスプロイト (リカバリーサイドカー) は完全に認証不要です — それにアクセスするためにログインする必要はありません。以下のシードされたプラットフォームアカウントは、発見のためのグレーボックスの観測点としてのみ存在します (Search & ReportingでSplunk自身の監査ログを読む)。参加者にはアナリストアカウントを渡し、残りを自分で発見させます。
| ユーザー名 | パスワード | 役割 | 備考 |
|---|---|---|---|
admin | Str@ta-Admin-2026! | admin | プラットフォーム全体の管理者 (設定、ユーザー、データ入力) |
j.okafor | Analyst!Winter24 | analyst | ここから開始 — 読み取り専用のSearch & Reportingコンソール |
m.reyes | Operator#2311 | operator | ソース/クラスタービューの管理 |
svc_forwarder | fwd-3f9a1c77b204 | operator | サービスアカウント (HECフォワーダー) |
これらの資格情報は意図的にドキュメント化されています — これは自己完結型のトレーニングラボであり、本番システムではありません。演習では、これらのいずれかをクラックしたりエスカレーションしたりする必要はありません。重要な
pg-sidecarリカバリーAPIは認証不要です。完全なオペレーターノートはdocs/DEPLOYMENT.mdにあります。
キャプチャすべき2つのフラグがあります。どちらもSPLUNK{...}文字列です。それらの値はラボ内にあり、ドキュメントで明らかにされます — ここでは意図的に印刷していないので、自分で獲得できます。
__rawリレーを介してリカバリーAPIにアクセスし、偽のBasic認証を突破し、サイドカーの.pgpassから内部Postgres資格情報を漏洩させます。splunkとしての認証なしRCE。 サイドカーのファイル書き込みとSQLリストアプリミティブを、スケジュールされたモジュラー入力スクリプトでのコード実行に転換し、保護された秘密を読み取ります。先に進まないでください: docs/DISCOVERY_WALKTHROUGH.md は発見されるために書かれており、ネタバレされるためのものではありません。段階的なヒントのはしごと完全なインストラクターソリューションはトレーニングスタッフ用に存在しますが、このパッケージには含まれていないため、演習はブラインド解決のままです。
| ドキュメント | 対象者/目的 |
|---|---|
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 | 環境の立ち上げ、運用、および破棄 |
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のプロプライエタリソースやバイナリは含まれていません。ここでのサービスは、ドキュメント化された脆弱な動作の独立した再実装です。このラボに対してのみ使用してください。所有していないシステムに対してこれらの手法を実行することは違法です。