本仓库包含一个针对 CVE-2025-4396 的实践研究与验证工具包,该漏洞是一个未认证的基于时间延迟的盲SQL注入,影响 WordPress Relevanssi 插件中的 cats 参数。
该项目专为授权的紫队演习而构建,旨在:
本仓库包含:
免责声明
本项目仅供教育、防御性验证和授权安全测试使用。
请勿在未经明确书面许可的情况下针对非您拥有的系统使用。
CVE-2025-4396 是一个影响WordPress中Relevanssi搜索功能的SQL注入漏洞。
在测试场景中,该问题可通过搜索工作流访问,更具体地说是通过 cats 参数。存在漏洞的代码路径允许攻击者控制输入影响插件生成的SQL查询。
由于存在漏洞的端点无需事先认证即可访问,远程攻击者可以利用该缺陷执行未认证的SQL注入。
实际影响包括:
漏洞存在的原因是:来自搜索相关参数的用户控制输入在被纳入SQL查询之前未经安全处理。
实际上,这意味着攻击者可以将SQL表达式注入后端查询逻辑,并强制数据库评估额外条件。
该漏洞以盲注方式利用,这意味着应用程序不会直接显示SQL错误或原始数据库结果。
攻击者无法从页面读取查询输出,而是向数据库提出一系列真/假问题并观察一个副作用:
利用依赖于SQL函数(如 SLEEP() )在服务器响应时间上制造可测量的差异。
这使得攻击者可以在不直接看到数据的情况下推断信息。
例如,攻击者可以提出如下问题:
$?”通过重复此过程,攻击者可以逐个字符地重建整个哈希。
标准方法会遍历已知字符集并逐一测试每个候选字符。
对于目标哈希中的每个位置:
该方法简单可靠,但相对较慢,因为每个字符可能需要多次请求。
更快的方法使用对每个字符ASCII值的二分搜索。
它不再问:
a?”b?”c?”而是问:
这样每次请求都会将搜索空间减半,大幅减少HTTP请求次数。
该攻击允许操作者从 wp_users 表中提取 user_pass 值,通常针对选定的WordPress用户ID,例如:
1 代表默认管理员,在较新的WordPress版本中,该值可能使用新的WordPress 6.8+密码流水线,它结合了:
CVE_2025_4396.py这是标准提取脚本。
它执行经典的基于时间延迟的盲SQL注入,并使用线性搜索在固定字符集上逐个字符地提取目标哈希。
对于每个字符位置:
python3requestsurllib3pip3 install requests urllib3
python3 CVE_2025_4396.py -t "https://target.local/?s=test&cats=" -u 1 -s 3 -v
参数:
-t, --target : 包含可注入参数的易受攻击目标URL
-u, --userid : 目标WordPress用户ID
-s, --sleep : 睡眠阈值(秒)
-v, --verbose : 启用调试日志
CVE_2025_4396_Stealth.py这是二分搜索版本。
它执行与标准脚本相同的提取目标,但将线性逐字符搜索替换为对ASCII值的二分搜索。
对于每个位置:
python3requestsurllib3pip3 install requests urllib3
python3 CVE_2025_4396_Stealth.py -t "https://target.local/?s=test&cats=" -u 1 -s 3 -v
一旦从WordPress中提取出密码哈希,下一步就是离线破解它。
WordPress 6.8+哈希说明。在测试的工作流中,提取的值可能看起来像:
$wp$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.
对于Hashcat,可用的bcrypt部分是:
$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.
但是,这个bcrypt不是直接应用于原始密码的。WordPress首先应用预处理阶段:
wp-sha384 进行HMAC-SHA384,这意味着,如果你想精确重现WordPress 6.8+的逻辑,不能直接将普通字典发送给Hashcat。
相反,每个候选密码必须首先转换为其WordPress兼容的预哈希表示。
本仓库还包含一个“辅助”脚本,它:
$wp$ 前缀,提取哈希:
$wp$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.准备破解环境:
python3hashcat 并在PATH中可用运行 Auto_Crack.py:
python3 Auto_Crack.py -H '\$wp\$2y\$10\$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.' -w /usr/share/wordlists/rockyou.txt
我们需要用 "\" 转义 "$" -> bash兼容
以下检测内容可供SOC团队用于识别利用尝试并衡量防御成熟度。
title: 潜在基于时间延迟的盲SQLi (CVE-2025-4396 Relevanssi)
id: 5a8a1c93-5c74-4b5b-a620-8e1c3e41ab5d
status: experimental
description: 检测包含常用于利用WordPress Relevanssi插件中CVE-2025-4396的典型基于时间延迟的盲SQL注入载荷的HTTP GET请求(绕过逗号过滤器)。
author: n3fhara
date: 2026-03-18
tags:
- attack.initial_access
- attack.t1190
- cve.2025-4396
logsource:
category: webserver
detection:
selection_endpoint:
cs-uri-query|contains:
- 's='
- 'cats='
- 'tags='
selection_payload:
cs-uri-query|contains:
- 'SLEEP('
- 'WAITFOR'
- 'SUBSTRING('
- 'ASCII('
- 'LENGTH('
selection_bypass_indicators:
cs-uri-query|contains:
- 'FROM'
- 'FOR 1'
- '*('
condition: selection_endpoint and selection_payload and selection_bypass_indicators
falsepositives:
- 极不可能。合法的搜索查询不应包含SQL函数。
level: high
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"ET EXPLOIT WordPress Relevanssi SQLi Attempt (CVE-2025-4396)"; flow:established,to_server; content:"GET"; http_method; content:"cats="; http_uri; pcre:"/(cats|tags)=.*(SLEEP|WAITFOR)%28.*(%2A|\*).*SUBSTRING/i"; classtype:web-application-attack; sid:1000001; rev:1; metadata:created_at 2026_03_18, cve CVE_2025_4396;)
index=web_logs sourcetype=access_combined
| regex uri_query="(?i)cats=|tags="
| stats count as request_count, avg(response_time) as avg_time, max(response_time) as max_time, dc(uri_query) as unique_payloads by clientip
| where request_count > 20 AND max_time > 2000
| sort - max_time
url.query : (*cats=* OR *tags=* OR *s=*) AND url.query : (*SLEEP* OR *WAITFOR* OR *SUBSTRING* OR *ASCII*) AND url.query : (*FROM* OR *FOR* OR *%2A*)
sequence by source.ip with maxspan=1m
[network where url.path == "/" and url.query : "*cats=*" and event.duration > 2000000000]
[network where url.path == "/" and url.query : "*cats=*" and event.duration > 2000000000]
[network where url.path == "/" and url.query : "*cats=*" and event.duration > 2000000000]
上述基线检测对于未混淆的利用是有效的,但当操作者引入更高级的战术时,其效果会变弱。
当攻击者开始使用以下技术时,SOC可见性会降低:
.
├── CVE_2025_4396.py
├── CVE_2025_4396_Stealth.py
├── Auto_Crack.py
├── README.md
└── relevanssi.4.24.4.zip
仅在您获得明确授权测试的环境中使用。 作者和贡献者不对滥用行为承担任何责任。
免责声明
本项目仅供教育、防御性验证和授权安全测试使用。
请勿在未经明确书面许可的情况下针对非您拥有的系统使用。