
CVE-2024-51567 هو استغلال PoC مكتوب بلغة Python يستهدف ثغرة RCE في نقطة نهاية upgrademysqlstatus في CyberPanel v2.3.6، مع تجاوز حمايات CSRF.
CVE-2024-51567 هو سكربت إثبات مفهوم (PoC) مكتوب بلغة بايثون لاستغلال ثغرة CVE-2024-51567، وهي ثغرة حرجة في حقن الأوامر تؤثر على CyberPanel الإصدار 2.3.6. تتيح هذه الثغرة، الموجودة في نقطة النهاية upgrademysqlstatus، تنفيذ الأوامر عن بُعد (RCE) عن طريق تجاوز حمايات CSRF واستخدام محارف شل (shell metacharacters) في معاملات محددة.
⚠️ تنويه مهم: هذا السكربت مخصص للأغراض التعليمية والاختبارات الأمنية المصرّح بها على الأنظمة التي تملكها أو لديك إذن صريح لاختبارها. الاستخدام غير المصرح به لهذا السكربت على أي نظام غير قانوني ويعاقب عليه القانون. لا يتحمل المؤلف أي مسؤولية عن إساءة الاستخدام. التزم دائمًا بالمعايير الأخلاقية والقوانين المعمول بها.
upgrademysqlstatus في ملف databases/views.py الخاص بـ CyberPanel (قبل commit 5b08cd6) للمهاجمين عن بُعد بتنفيذ أوامر عشوائية عن طريق تجاوز حمايات secMiddleware، التي تقوم بتصفية طلبات POST فقط. يمكن استغلال هذه الثغرة باستخدام محارف شل في معامل statusfile./dataBases/upgrademysqlstatushttpxgit clone https://github.com/ajayalf/CVE-2024-51567.git
cd CVE-2024-51567
httpx:
pip install httpx
لتشغيل السكربت على هدف واحد، استخدم الأمر التالي:
python CVE-2024-51567.py <target-url>
مثال:
python CVE-2024-51567.py http://example.com
لتشغيل السكربت على أهداف متعددة، أنشئ ملفًا نصيًا يحتوي على قائمة بعناوين الأهداف (عنوان واحد في كل سطر)، واستخدم الأمر:
python CVE-2024-51567.py <targets.txt>
مثال:
python CVE-2024-51567.py targets.txt
إذا كنت تريد استخدام أهداف متعددة، أنشئ ملفًا نصيًا باسم targets.txt أو أي اسم تفضله. يجب أن يكون تنسيق الملف كقائمة عناوين URL، مع عنوان في كل سطر، كما هو موضح أدناه:
http://target1.com
http://target2.com
http://target3.com
بعد أن يتصل السكربت بالهدف، يمكنك إدخال أوامر شل لتنفيذها على الخادم الهدف. للخروج، اكتب exit أو quit.
get_CSRF_token(client): يسترجع توكن CSRF من ملفات تعريف الارتباط (cookies) في الصفحة الرئيسية للهدف.
client (كائن httpx.Client)pwn(client, CSRF_token, cmd): يرسل حمولة مصممة مع توكن CSRF والأمر المطلوب.
client (كائن httpx.Client)، CSRF_token (سلسلة نصية)، cmd (سلسلة نصية)exploit(client, cmd): ينفذ دالة pwn على الهدف لتشغيل الأمر ويطبع المخرجات.
client (كائن httpx.Client)، cmd (سلسلة نصية)run_exploit(target): يهيئ اتصالًا بالهدف ويبدأ حلقة أوامر تفاعلية.
target (سلسلة نصية، عنوان الهدف)إذا لم يتم العثور على توكن CSRF في ملفات تعريف الارتباط، سيقوم السكربت بطباعة جميع ملفات تعريف الارتباط المستلمة والخروج مع رسالة خطأ مفيدة.
/ هي نقطة النهاية الصحيحة للحصول على توكن CSRF. إذا كانت مختلفة، قم بتعديل دالة get_CSRF_token وفقًا لذلك.لمزيد من المعلومات حول هذه الثغرة، يرجى الرجوع إلى الموارد التالية:
exit أو quit.التنفيذ الرئيسي: يتحقق من الوسيطة لتحديد ما إذا كان الهدف عنوان URL واحدًا أم ملفًا يحتوي على أهداف متعددة.