Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-4396 — 此仓库包含针对CVE-2025-4396的实用研究和验证工具包,这是影响WordPress Relevanssi插件`cats`参数的未认证基于时间的盲SQL注入。 | Kitploit
工具/GitHubGitHub/nefhara/cve-2025-4396
密码破解漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育
GitHubnefhara/cve-2025-4396

CVE-2025-4396

此仓库包含针对CVE-2025-4396的实用研究和验证工具包,这是影响WordPress Relevanssi插件`cats`参数的未认证基于时间的盲SQL注入。

查看仓库
206个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-4396 - WordPress Relevanssi 基于时间延迟的盲SQL注入工具包

概述

本仓库包含一个针对 CVE-2025-4396 的实践研究与验证工具包,该漏洞是一个未认证的基于时间延迟的盲SQL注入,影响 WordPress Relevanssi 插件中的 cats 参数。

该项目专为授权的紫队演习而构建,旨在:

  • 在受控环境中验证漏洞的可利用性,
  • 展示不同攻击者战术层级,
  • 衡量SOC检测覆盖率,
  • 以逼真的方式提取WordPress密码哈希,
  • 并在哈希恢复后自动化离线破解流程。

本仓库包含:

  • 一个标准提取脚本,
  • 一个更快的二分搜索提取脚本,
  • 以及一个辅助脚本,用于准备并破解提取的WordPress 6.8+哈希(配合Hashcat使用)。

免责声明
本项目仅供教育、防御性验证和授权安全测试使用。
请勿在未经明确书面许可的情况下针对非您拥有的系统使用。

测试环境

  • 服务器:Debian 11
  • WordPress 6.9.1,
  • Relevanssi插件 4.24.4(从 https://wordpress.org/plugins/relevanssi/advanced/ 下载),
  • 在Kali Linux操作系统上使用PoC。

CVE描述

CVE-2025-4396 是一个影响WordPress中Relevanssi搜索功能的SQL注入漏洞。

在测试场景中,该问题可通过搜索工作流访问,更具体地说是通过 cats 参数。存在漏洞的代码路径允许攻击者控制输入影响插件生成的SQL查询。

由于存在漏洞的端点无需事先认证即可访问,远程攻击者可以利用该缺陷执行未认证的SQL注入。

实际影响包括:

  • 数据库查询操纵,
  • 基于时间延迟的盲SQL注入,
  • 提取敏感数据(如密码哈希),
  • 根据环境不同,可能通过恢复有效凭据实现权限提升。

漏洞工作原理

根本原因

漏洞存在的原因是:来自搜索相关参数的用户控制输入在被纳入SQL查询之前未经安全处理。

实际上,这意味着攻击者可以将SQL表达式注入后端查询逻辑,并强制数据库评估额外条件。

为什么是盲注

该漏洞以盲注方式利用,这意味着应用程序不会直接显示SQL错误或原始数据库结果。

攻击者无法从页面读取查询输出,而是向数据库提出一系列真/假问题并观察一个副作用:

  • 如果条件为真,数据库会睡眠几秒,
  • 如果条件为假,响应会立即返回。

为什么是基于时间的

利用依赖于SQL函数(如 SLEEP() )在服务器响应时间上制造可测量的差异。

这使得攻击者可以在不直接看到数据的情况下推断信息。

例如,攻击者可以提出如下问题:

  • “第一个字符是否等于 $?”
  • “第二个字符的ASCII值是否大于77?”
  • “前N个字符是否匹配此模式?”

通过重复此过程,攻击者可以逐个字符地重建整个哈希。


利用工作原理

标准提取逻辑

标准方法会遍历已知字符集并逐一测试每个候选字符。

对于目标哈希中的每个位置:

  1. 构建针对一个字符的SQL条件。
  2. 仅在猜测正确时触发服务器延迟。
  3. 测量响应时间。
  4. 重新发送相同的请求以减少网络抖动导致的误报。
  5. 将确认的字符附加到提取的哈希中。
  6. 移动到下一个位置。

该方法简单可靠,但相对较慢,因为每个字符可能需要多次请求。

二分搜索提取逻辑

更快的方法使用对每个字符ASCII值的二分搜索。

它不再问:

  • “字符是否等于 a?”
  • “字符是否等于 b?”
  • “字符是否等于 c?”

而是问:

  • “ASCII值是否大于79?”
  • “是否大于55?”
  • “是否大于43?”

这样每次请求都会将搜索空间减半,大幅减少HTTP请求次数。

实际结果

该攻击允许操作者从 wp_users 表中提取 user_pass 值,通常针对选定的WordPress用户ID,例如:

  • 1 代表默认管理员,
  • 或通过命令行传入的其他ID。

在较新的WordPress版本中,该值可能使用新的WordPress 6.8+密码流水线,它结合了:

  • 使用HMAC-SHA384的预哈希阶段,
  • Base64编码,
  • 以及最终的bcrypt哈希。

包含的脚本

1. CVE_2025_4396.py

这是标准提取脚本。

目的:

它执行经典的基于时间延迟的盲SQL注入,并使用线性搜索在固定字符集上逐个字符地提取目标哈希。

主要特性:

  • 简单易懂,
  • 在稳定环境中可靠,
  • 双重验证逻辑以减少误报,
  • 适合作为检测工程和PoC演示的基线。

工作方式:

对于每个字符位置:

  • 遍历预定义字符集,
  • 构建匹配单个字符的SQL条件,
  • 等待服务器响应,
  • 并使用第二个请求确认命中。

要求:

  • python3
  • requests
  • urllib3

安装:

pip3 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 : 启用调试日志

2. CVE_2025_4396_Stealth.py

这是二分搜索版本。

目的:

它执行与标准脚本相同的提取目标,但将线性逐字符搜索替换为对ASCII值的二分搜索。

主要特性:

  • 显著减少HTTP请求次数,
  • 更小的网络足迹,
  • 仍然包含双重检查步骤以防止误报。

工作方式:

对于每个位置:

  • 定义可打印的ASCII范围。
  • 测试中点。
  • 询问目标字符是否大于该中点。
  • 相应地缩小范围。
  • 继续直到确定确切字符。

要求:

  • python3
  • requests
  • urllib3

安装:

pip3 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首先应用预处理阶段:

  • 对候选密码进行PHP风格的trim,
  • 使用密钥 wp-sha384 进行HMAC-SHA384,
  • 对结果摘要进行Base64编码,
  • 然后进行bcrypt验证。

为什么需要预哈希步骤

这意味着,如果你想精确重现WordPress 6.8+的逻辑,不能直接将普通字典发送给Hashcat。

相反,每个候选密码必须首先转换为其WordPress兼容的预哈希表示。

本仓库还包含一个“辅助”脚本,它:

  • 接受提取的哈希作为参数,
  • 在需要时去除 $wp$ 前缀,
  • 预处理提供的字典,
  • 生成转换后的字典,
  • 可选地创建映射文件,
  • 自动启动Hashcat,
  • 将恢复的预哈希解析回原始明文密码。

典型工作流

提取哈希:

  • 示例结果:$wp$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.

准备破解环境:

  • python3
  • hashcat 并在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检测指南

以下检测内容可供SOC团队用于识别利用尝试并衡量防御成熟度。

Sigma检测

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

Suricata检测

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;)

SPLUNK检测

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

KQL检测

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*)

EQL检测

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可见性会降低:

  • 替代的SQL函数(而非明显的函数),
  • URL编码和基于注释的混淆,
  • 通过二分搜索减少请求量,
  • 抖动和低慢速计时,
  • 代理轮换,
  • 浏览器模拟。

SOC的额外检测思路:

  • 检测异常缓慢的搜索流量,
  • 监控对WordPress搜索端点的请求,其中:
    • 响应时间反复升高,
    • 同一客户端执行大量搜索请求,
    • 或同一端点在时间推移中显示出异常延迟模式。
  • 对包含编码操作符的搜索参数发出警报,
  • 即使没有明显的SQL关键字,搜索参数如果包含以下组合也应告警:
    • 编码的比较操作符,
    • 可疑的括号密度,
    • 重复的数字逻辑,
    • 或高度URL编码的查询字符串。
  • 按端点而非仅按来源IP进行关联,
  • 如果攻击者轮换代理,IP关联会变弱。检测还应关注:
    • 对同一端点的重复访问,
    • 重复的延迟响应,
    • 或针对同一WordPress页面的重复畸形搜索查询。
  • 使用长窗口行为检测:
    • 30分钟,
    • 1小时,
    • 或多小时窗口。
  • 监控数据库端慢查询

仓库结构

.
├── CVE_2025_4396.py
├── CVE_2025_4396_Stealth.py
├── Auto_Crack.py
├── README.md
└── relevanssi.4.24.4.zip

法律声明

仅在您获得明确授权测试的环境中使用。 作者和贡献者不对滥用行为承担任何责任。

免责声明
本项目仅供教育、防御性验证和授权安全测试使用。
请勿在未经明确书面许可的情况下针对非您拥有的系统使用。

下载工具