
Laboratorio di formazione sulla sicurezza autonomo che riproduce CVE-2026-20253 (RCE non autenticata in Splunk Enterprise). Fornisce un ambiente basato su Docker per esercitarsi nello sfruttamento web, nell'escalation dei privilegi e nel furto di credenziali attraverso una catena di attacco documentata.
Splunk Enterprise 10.2.3 · sidecar di recovery PostgreSQL · CWE-306 (Autenticazione mancante per funzione critica) Una riproduzione autorizzata e autonoma che modella il reale advisory per scopi di formazione difensiva. Non include il codice proprietario di Splunk.
Questo repository è un laboratorio di formazione sulla sicurezza in stile Vulhub/DVWA. Avvia un
modello fedele di Splunk Enterprise 10.2.3 e riproduce il comportamento documentato alla base di
CVE-2026-20253: il sidecar di recovery PostgreSQL integrato espone funzioni privilegiate di
scrittura file ed esecuzione SQL con nessuna reale autenticazione (viene accettato un header Basic
vuoto/qualsiasi), e il tier web di Splunk inoltra __raw/v1/postgres/* a quel sidecar prima del
gate di login. Messe in catena, queste condizioni consentono esecuzione di codice remota non
autenticata come account di servizio non-root splunk.
Il laboratorio è completamente risolvibile dall'inizio alla fine: identifica il perimetro, segui un badge di health pre-autenticazione fino all'API di recovery interna, dimostra la scrittura arbitraria di file, ruba le credenziali interne di Postgres e trasforma una primitiva di scrittura file via ripristino SQL in esecuzione di codice su uno script di input modulare pianificato.
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)
Due bridge Docker: edge (proxy) e core (tutto il resto). Nella build vulnerabile il
pg-sidecar si trova su core ed è raggiungibile dal relay del tier web — ed è proprio
questa raggiungibilità il punto chiave. L'overlay con la patch lo isola.
cp .env.example .env
docker compose up --build -d
Poi apri il browser su http://localhost:8080.
L'exploit critico (il sidecar di recovery) è completamente non autenticato — non è necessario effettuare il login per raggiungerlo. Gli account di piattaforma preconfigurati qui sotto esistono solo come punti di osservazione grey-box per la scoperta (lettura dei log di audit di Splunk in Search & Reporting). Consegna ai partecipanti l'account analyst e lascia che scoprano il resto.
Queste credenziali sono intenzionalmente documentate — questo è un laboratorio di formazione autonomo, non un sistema di produzione. L'esercizio non richiede di violare o elevare nessuno di questi account; la critica API di recovery
pg-sidecarè non autenticata. Le note complete per gli operatori sono indocs/DEPLOYMENT.md.
Ci sono due flag da catturare. Entrambe sono stringhe SPLUNK{...}; i loro valori
si trovano nel laboratorio e vengono rivelati nei documenti — sono intenzionalmente non
stampati qui per permetterti di conquistarli.
__raw pre-sessione, supera la finta autenticazione Basic e sottrai la
credenziale interna di Postgres dal .pgpass del sidecar.splunk. Trasforma le primitive di scrittura file
e ripristino SQL del sidecar in esecuzione di codice sullo script di input modulare
pianificato, poi leggi il segreto protetto.Non saltare avanti: docs/DISCOVERY_WALKTHROUGH.md
è scritto per essere scoperto, non spoilerato. Una scala di suggerimenti graduata e la soluzione
completa per l'istruttore esistono per il personale di formazione, ma sono tenute fuori da questo pacchetto
affinché l'esercizio resti una risoluzione cieca.
L'albero patched/ rispecchia la vera correzione di Splunk (10.2.4) più il workaround dell'advisory,
con livelli di difesa in profondità: validazione reale delle credenziali sulle route di recovery,
sanificazione del path traversal in backupFile, eliminazione dell'iniezione della stringa di connessione
libpq, ruolo di restore non superuser, rimozione del relay __raw pre-autenticazione e isolamento di rete
del sidecar. Vedi patched/PATCH_NOTES.md.
Avvia la build indurita con l'overlay:
docker compose -f docker-compose.yml -f patched/deploy/compose.override.hardened.yml up --build -d
Rispecchiando la mitigazione dell'advisory, puoi disabilitare completamente il sidecar di recovery
senza applicare patch — l'equivalente di impostare [postgres] disabled = true
in server.conf. Imposta quanto segue nel tuo .env e ricrea lo stack:
PG_SIDECAR_DISABLED=true
Con il sidecar disabilitato, le funzioni recovery/* spariscono e la catena è spezzata
alla fonte.
Materiale di formazione. Questo laboratorio è una riproduzione autorizzata e autonoma che modella Splunk Enterprise CVE-2026-20253 per la formazione difensiva. Non contiene sorgenti o binari proprietari di Splunk; i servizi qui presenti sono una re-implementazione indipendente del comportamento vulnerabile documentato. Usalo solo contro questo laboratorio. Eseguire queste tecniche contro sistemi che non possiedi è illegale.
| Advisory del fornitore | SVD-2026-0603 |
| CVE | CVE-2026-20253 |
| Weakness | CWE-306 — Autenticazione mancante per funzione critica |
| Prodotti interessati | Splunk Enterprise 10.2.3 |
| Corretto in | Splunk Enterprise 10.2.4 |
| CVSS 3.1 | 9.8 (Critico) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Servizio | Immagine | In ascolto su | Pubblicata | Ruolo |
|---|
proxy | splunk/proxy:10.2.3 | 8080 | 8080:8080 | edge nginx; Splunk Web + punto di ingresso del relay __raw |
web | splunk/web:10.2.3 | 8001 | — | Applicazione single-page di Splunk Web (statica) |
splunkd | splunk/splunkd:10.2.3 | 8089 | — | Demone / tier web di Splunk: API di login + relay pre-sessione /{locale}/splunkd/__raw/v1/postgres/* |
ingest | splunk/ingest:10.2.3 | 8088 | 8088:8088 | HTTP Event Collector (autenticazione via token) |
pg-sidecar | splunk/pg-sidecar:10.2.3 | 5435 | — | LA VULNERABILITÀ — sidecar di recovery PostgreSQL (/v1/postgres/*) |
scheduler | splunk/scheduler:10.2.3 | — | — | esegue lo script di input modulare pianificato come splunk → sink RCE |
db | postgres:16-alpine | 5432 | — | Postgres interno di cui il sidecar fa backup / restore |
redis | redis:7-alpine | 6379 | — | coda job / cache |
| Username | Password | Ruolo | Note |
|---|
admin | Str@ta-Admin-2026! | admin | Amministratore completo della piattaforma (Settings, Users, Data Inputs) |
j.okafor | Analyst!Winter24 | analyst | Inizia da qui — console Search & Reporting in sola lettura |
m.reyes | Operator#2311 | operator | Gestisce sorgenti / viste cluster |
svc_forwarder | fwd-3f9a1c77b204 | operator | Account di servizio (forwarder HEC) |
| Documento | Pubblico / scopo |
|---|
docs/DISCOVERY_WALKTHROUGH.md | Percorso guidato dalla scoperta, dal fingerprinting alla RCE |
docs/ROOT_CAUSE.md | Perché è vulnerabile (CWE-306) e come la patch lo risolve |
docs/ARCHITECTURE.md | Servizi, reti, relay __raw e flusso dei dati |
docs/DETECTION.md | Opportunità e firme di rilevamento per il blue team |
docs/PLAYER_GUIDE.md | Briefing e ambito per i partecipanti |
docs/HINTS.md | Scala di suggerimenti graduata — tenuta interna, non inclusa in questo pacchetto |
docs/INSTRUCTOR_GUIDE.md | Solo personale di formazione — soluzione completa + flag, tenuta interna, non inclusa |
docs/DEPLOYMENT.md | Avvio, gestione e smantellamento dell'ambiente |