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

CVE-2025-11421:code-projects Voting System 1.0 跨站脚本漏洞

披露日期: 2025-10-08

漏洞信息

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

相关标签

XSS跨站脚本code-projectsVoting SystemCVE-2025-11421存储型XSSWeb漏洞PHP管理后台

漏洞概述

CVE-2025-11421是code-projects Voting System 1.0中存在的一个反射型/存储型跨站脚本(XSS)漏洞。该漏洞位于管理后台的候选人编辑页面(/admin/candidates_edit.php)中,具体涉及Firstname(名字)、Lastname(姓氏)和Platform(政纲)三个参数的处理逻辑存在缺陷,未对这些用户可控输入进行充分的过滤或编码处理,导致攻击者可以注入恶意的JavaScript代码或HTML标签。

该漏洞的CVSS 3.1评分为3.5,属于低危级别。漏洞利用需要攻击者拥有低权限账户(如普通管理员或受限用户),并且需要目标用户进行交互(如点击恶意链接或访问被注入的页面)。尽管严重程度较低,但由于该漏洞已被公开披露且存在可用的利用代码,仍然对使用该投票系统的组织构成一定的安全风险。攻击者可以利用此漏洞窃取管理员会话Cookie、篡改页面内容、进行钓鱼攻击或在受害者浏览器中执行任意JavaScript代码。

值得注意的是,该漏洞的利用需要满足两个前提条件:一是攻击者需要拥有系统的合法账户(低权限),二是需要受害者进行交互操作。这在一定程度上限制了漏洞的传播范围和危害程度。然而,对于部署了该系统的组织而言,及时修复仍然是必要的,因为XSS漏洞常常被用作更复杂攻击链的第一步。

技术细节

该XSS漏洞的根本原因在于code-projects Voting System 1.0的/admin/candidates_edit.php文件在处理候选人编辑请求时,未对Firstname、Lastname和Platform三个参数进行适当的输入验证和输出编码。当管理员或具有相应权限的用户提交候选人编辑表单时,这些参数的值会直接被存储到数据库中,并在后续页面渲染时未经HTML实体编码直接输出到HTML页面中。

从技术层面分析,漏洞的利用过程如下:攻击者首先需要通过合法途径获取系统的低权限账户(PR:L),然后登录系统并导航到候选人编辑页面。在编辑候选人信息时,攻击者在Firstname、Lastname或Platform字段中注入恶意JavaScript代码,例如:<script>alert(document.cookie)</script>或<img src=x onerror=alert(1)>。这些恶意输入被保存到数据库后,当其他用户(尤其是管理员)查看候选人列表或详情页面时,恶意脚本将在受害者浏览器中执行。

由于漏洞利用需要用户交互(UI:R),攻击者通常需要构造特定的钓鱼场景,例如通过电子邮件或即时消息发送包含恶意链接的页面,诱导受害者点击。由于该漏洞已被公开披露(参考链接中包含GitHub上的issue),存在公开的PoC代码可供利用,进一步降低了攻击门槛。建议管理员及时更新系统或应用相应的安全补丁以修复此漏洞。

攻击链分析

STEP 1
步骤1:获取账户
攻击者通过社会工程学、凭证填充或其他方式获取Voting System的低权限管理员账户。
STEP 2
步骤2:登录系统
使用获取的凭证登录系统管理后台,建立有效的会话。
STEP 3
步骤3:注入恶意载荷
导航到/admin/candidates_edit.php页面,在Firstname、Lastname或Platform参数中注入恶意JavaScript代码。
STEP 4
步骤4:等待受害者交互
恶意载荷被存储到数据库中,当其他管理员或用户查看候选人列表时触发执行。
STEP 5
步骤5:执行恶意操作
在受害者浏览器中执行任意JavaScript,可窃取会话Cookie、进行钓鱼或执行进一步攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-11421 PoC - Stored XSS in Voting System 1.0 --> <!-- Vulnerable file: /admin/candidates_edit.php --> <!-- Vulnerable parameters: Firstname, Lastname, Platform --> <!-- Step 1: Login as a low-privileged user --> POST /admin/login.php HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded username=attacker&password=password123 <!-- Step 2: Submit malicious payload via candidates_edit.php --> POST /admin/candidates_edit.php HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded Cookie: PHPSESSID=<valid_session> id=1&Firstname=<script>alert(document.cookie)</script>&Lastname=<img src=x onerror=alert(1)>&Platform=<svg/onload=alert('XSS')> <!-- Step 3: When admin views the candidates list, the XSS payload executes --> GET /admin/candidates.php HTTP/1.1 Host: target.com Cookie: PHPSESSID=<admin_session>

影响范围

code-projects Voting System 1.0

防御指南

临时缓解措施
在等待官方补丁发布之前,建议采取以下临时缓解措施:1)对/admin/candidates_edit.php文件进行代码审查,手动添加输入过滤函数(如htmlspecialchars()或strip_tags())对Firstname、Lastname和Platform参数进行处理;2)在Web服务器层面部署WAF规则,阻止包含<script>、onerror、onload等XSS特征字符的请求;3)限制/admin目录的访问,仅允许可信IP地址访问管理后台;4)启用Content Security Policy头部,限制页面可执行的脚本来源;5)重置所有管理员账户的密码,并启用多因素认证;6)监控候选人编辑相关的日志,及时发现可疑的注入行为。

参考链接

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