
In sich geschlossenes Sicherheitsschulungslabor, das CVE-2026-20253 (Splunk Enterprise unauthenticated RCE) nachbildet. Bietet eine Docker-basierte Umgebung, um Web-Exploitation, Privilege Escalation und Credential Theft durch eine dokumentierte Angriffskette zu üben.
Splunk Enterprise 10.2.3 · PostgreSQL-Recovery-Sidecar · CWE-306 (Fehlende Authentifizierung für kritische Funktion) Eine autorisierte, eigenständige Reproduktion, die das reale Advisory modelliert für defensive Ausbildung. Es enthält keinen proprietären Code von Splunk.
Dieses Repository ist ein Sicherheitstrainingslabor im Vulhub/DVWA-Stil. Es stellt ein originalgetreues Modell von Splunk Enterprise 10.2.3 bereit und reproduziert das dokumentierte Verhalten hinter CVE-2026-20253: Der gebündelte PostgreSQL-Recovery-Sidecar stellt privilegierte Dateischreib- und SQL-Ausführungsfunktionen ohne echte Authentifizierung zur Verfügung (ein leerer/beliebiger Basic-Header wird akzeptiert), und die Splunk-Webschicht leitet __raw/v1/postgres/* vor dem Login-Gate an diesen Sidecar weiter. In der Kette ergibt dies eine nicht authentifizierte Remote-Code-Ausführung als der nicht-root splunk-Dienstaccount.
Das Labor ist vollständig von Anfang bis Ende lösbar: Fingerabdruck des Edge, einem Pre-Auth-Health-Badge zur internen Recovery-API folgen, willkürliches Dateischreiben nachweisen, die internen PostgreSQL-Anmeldeinformationen stehlen und eine SQL-Restore-Dateischreib-Primitive in Codeausführung auf einem geplanten Modular-Input-Script umwandeln.
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)
Zwei Docker-Brücken: edge (Proxy) und core (alles andere). Im anfälligen Build sitzt der pg-sidecar auf core und ist vom Relay der Webschicht erreichbar – diese Erreichbarkeit ist der Punkt. Der gepatchte Overlay isoliert ihn.
cp .env.example .env
docker compose up --build -d
Dann rufen Sie http://localhost:8080 auf.
Der kritische Exploit (der Recovery-Sidecar) ist vollständig nicht authentifiziert – Sie müssen sich nicht anmelden, um ihn zu erreichen. Die unten aufgeführten vorinstallierten Plattformkonten existieren nur als Grey-Box-Ausgangspunkte für die Entdeckung (Lesen von Splunks eigenen Audit-Logs in Search & Reporting). Geben Sie den Teilnehmern das Analyst-Konto und lassen Sie sie den Rest entdecken.
Diese Anmeldeinformationen sind bewusst dokumentiert – dies ist ein eigenständiges Trainingslabor, kein Produktionssystem. Die Übung erfordert kein Knacken oder Eskalieren dieser Konten; die kritische
pg-sidecar-Recovery-API ist nicht authentifiziert. Vollständige Operator-Notizen befinden sich indocs/DEPLOYMENT.md.
Es gibt zwei zu erobernde Flaggen. Beide sind SPLUNK{...}-Strings; ihre Werte leben im Labor und werden in den Dokumentationen enthüllt – sie sind absichtlich nicht hier abgedruckt, damit Sie sie sich verdienen können.
__raw-Relay, kommen Sie an der Schein-Basic-Auth vorbei und lassen Sie die internen PostgreSQL-Anmeldeinformationen aus .pgpass des Sidecars durchsickern.splunk. Wandeln Sie die Dateischreib- und SQL-Restore-Primitives des Sidecars in Codeausführung auf dem geplanten Modular-Input-Script um und lesen Sie dann das geschützte Geheimnis.Gehen Sie nicht vor: docs/DISCOVERY_WALKTHROUGH.md ist so geschrieben, dass es entdeckt wird, nicht gespoilt wird. Eine abgestufte Hinweisleiter und die vollständige Instruktorenlösung existieren für Trainingspersonal, sind aber aus diesem Paket herausgehalten, damit die Übung eine Blindlösung bleibt.
Der patched/-Baum spiegelt den echten Fix von Splunk (10.2.4) plus den Workaround des Advisories wider, geschichtet als Defense-in-Depth: echte Anmeldeinformationsvalidierung auf den Recovery-Routen, backupFile-Path-Traversal-Sanitisierung, Eliminierung der libpq-Verbindungsstring-Injektion, eine Non-Superuser-Wiederherstellungsrolle, Wegfall des Pre-Auth-__raw-Relays und Netzwerkisolation des Sidecars. Siehe patched/PATCH_NOTES.md.
Starten Sie den gehärteten Build mit dem Overlay:
docker compose -f docker-compose.yml -f patched/deploy/compose.override.hardened.yml up --build -d
Spiegelnd der Minderung des Advisories können Sie den Recovery-Sidecar vollständig deaktivieren, ohne zu patchen – das Analogon zum Setzen von [postgres] disabled = true in server.conf. Setzen Sie Folgendes in Ihrer .env und erstellen Sie den Stack neu:
PG_SIDECAR_DISABLED=true
Mit deaktiviertem Sidecar sind die recovery/*-Funktionen verschwunden und die Kette ist an der Quelle unterbrochen.
Trainingsmaterial. Dieses Labor ist eine autorisierte, eigenständige Reproduktion, die Splunk Enterprise CVE-2026-20253 für defensive Ausbildung modelliert. Es enthält keinen proprietären Quellcode oder Binärdateien von Splunk; die Dienste hier sind eine unabhängige Neuimplementierung des dokumentierten anfälligen Verhaltens. Verwenden Sie es nur gegen dieses Labor. Das Ausführen dieser Techniken gegen Systeme, die Ihnen nicht gehören, ist illegal.
| Hersteller-Advisory | SVD-2026-0603 |
| CVE | CVE-2026-20253 |
| Schwachstelle | CWE-306 — Fehlende Authentifizierung für kritische Funktion |
| Betroffen | Splunk Enterprise 10.2.3 |
| Behoben in | Splunk Enterprise 10.2.4 |
| CVSS 3.1 | 9.8 (Kritisch) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Dienst | Image | Lauscht auf | Veröffentlicht | Rolle |
|---|
proxy | splunk/proxy:10.2.3 | 8080 | 8080:8080 | nginx-Edge; Splunk Web + __raw-Relay-Einstiegspunkt |
web | splunk/web:10.2.3 | 8001 | — | Splunk Web Single-Page-App (statisch) |
splunkd | splunk/splunkd:10.2.3 | 8089 | — | Splunk-Daemon / Webschicht: Login-API + das Pre-Session-/{locale}/splunkd/__raw/v1/postgres/*-Relay |
ingest | splunk/ingest:10.2.3 | 8088 | 8088:8088 | HTTP Event Collector (Token-Authentifizierung) |
pg-sidecar | splunk/pg-sidecar:10.2.3 | 5435 | — | DIE SCHWACHSTELLE — PostgreSQL-Recovery-Sidecar (/v1/postgres/*) |
scheduler | splunk/scheduler:10.2.3 | — | — | führt das geplante Modular-Input-Script als splunk aus → RCE-Senke |
db | postgres:16-alpine | 5432 | — | internes PostgreSQL, das der Sidecar sichert/wiederherstellt |
redis | redis:7-alpine | 6379 | — | Job-Warteschlange / Cache |
| Benutzername | Passwort | Rolle | Anmerkungen |
|---|
admin | Str@ta-Admin-2026! | Administrator | Vollständige Plattformadministration (Einstellungen, Benutzer, Dateneingaben) |
j.okafor | Analyst!Winter24 | Analyst | Hier starten – schreibgeschützte Search & Reporting-Konsole |
m.reyes | Operator#2311 | Operator | Verwaltet Quellen / Cluster-Ansichten |
svc_forwarder | fwd-3f9a1c77b204 | Operator | Dienstkonto (HEC-Weiterleitung) |
| Dokument | Zielgruppe / Zweck |
|---|
docs/DISCOVERY_WALKTHROUGH.md | Entdeckungsgetriebener Pfad vom Fingerabdruck zur RCE |
docs/ROOT_CAUSE.md | Warum es anfällig ist (CWE-306) und wie der Patch es behebt |
docs/ARCHITECTURE.md | Dienste, Netzwerke, das __raw-Relay und Datenfluss |
docs/DETECTION.md | Erkennungsmöglichkeiten und Signaturen für das Blue Team |
docs/PLAYER_GUIDE.md | Teilnehmerbriefing und Umfang |
docs/HINTS.md | Abgestufte Hinweisleiter – intern, nicht in diesem Paket enthalten |
docs/INSTRUCTOR_GUIDE.md | Nur für Trainingspersonal – vollständige Lösung + Flaggen, intern, nicht enthalten |
docs/DEPLOYMENT.md | Umgebung aufbauen, betreiben und abbauen |