Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-34234-Lab — مختبر دوكر محلي يوضح CVE-2026-34234 هجوم تنفيذ الأوامر عن بعد غير المصادق عليه في مثبت ويب CtrlPanel. يتضمن حاويات ضعيفة ومُجرية النقاط، ونصوص برهان المفهوم (PoC)، وتحليل الجذر السببي لأغراض البحث الأمني والتحقق الدفاعي. | Kitploit
أدوات/GitHubGitHub/rootdirective-sec/cve-2026-34234-lab
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubrootdirective-sec/cve-2026-34234-lab

CVE-2026-34234-Lab

مختبر دوكر محلي يوضح CVE-2026-34234 هجوم تنفيذ الأوامر عن بعد غير المصادق عليه في مثبت ويب CtrlPanel. يتضمن حاويات ضعيفة ومُجرية النقاط، ونصوص برهان المفهوم (PoC)، وتحليل الجذر السببي لأغراض البحث الأمني والتحقق الدفاعي.

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع
منذ 2 أشهرلم تتم المراجعة بعد

CVE-2026-34234 - مختبر تنفيذ الأوامر عن بُعد (RCE) في مثبت CtrlPanel

مختبر Docker محلي لعرض ثغرة CVE-2026-34234 في CtrlPanel.

يُقارن هذا المستودع بين:

  • vuln: CtrlPanel الإصدار 1.1.1 المثبت بواسطة digest
  • patched: CtrlPanel الإصدار 1.2.0 المثبت بواسطة digest

المختبر محلي فقط ويُقيّد الخدمات على 127.0.0.1.


ملخص

CVE-2026-34234 هي ثغرة تنفيذ أوامر عن بُعد بدون مصادقة في مثبت CtrlPanel على الويب.

تنتج المشكلة عن خطأين مُتسلسلين:

  1. وحدات نماذج المثبت كانت قابلة للوصول قبل تفعيل حاجز install.lock.
  2. إدخال المثبت كان يُدرج في سلاسل أوامر الصدفة (shell).

في هذا المختبر، الحاوية الضعيفة تنفّذ أمر إثبات غير ضار وتكتب مخرجاته داخل الحاوية. الحاوية المُصحّحة تستقبل نفس الطلب ولكنها لا تنشئ ملف الإثبات.

النتيجة المُتوقعة:

root@kitploit:~
الضعيفة => تم إنشاء ملف الإثبات
المصححة  => لا يوجد ملف إثبات

السبب الجذري

1. تنفيذ أوامر صدفة ضعيف في الإصدار 1.1.1

الملف الأصلي الضعيف:

root@kitploit:~
public/installer/src/functions/shell.php

الكود الأعلى ذو الصلة في الإصدار 1.1.1:

root@kitploit:~
function run_console(string $command, ...) {
    $path = dirname(__DIR__, 4);
    $handle = proc_open("cd '$path' && bash -c 'exec -a ServerCPP $command'", ...);
}

المشكلة:

  • run_console() يقبل سلسلة أمر واحد للصدفة.
  • يتم تمرير هذه السلسلة إلى bash -c.
  • قيم المُثبت التي يتحكم بها المستخدم قد تصبح جزءًا من سلسلة الأمر.
  • أحرف الميتا الخاصة بالصدفة قد تغير بنية الأمر.

2. مسار نموذج المُثبت الضعيف

الملف الأصلي الضعيف:

root@kitploit:~
public/installer/src/forms/pterodactyl.php

السلوك الأعلى ذو الصلة في الإصدار 1.1.1:

root@kitploit:~
run_console("php artisan settings:set 'PterodactylSettings' 'panel_url' '$url'", ...);
run_console("php artisan settings:set 'PterodactylSettings' 'admin_token' '$key'", ...);
run_console("php artisan settings:set 'PterodactylSettings' 'user_token' '$clientkey'", ...);

المشكلة:

  • url و key و clientkey تأتي من بيانات POST للمثبت.
  • القيم تُضمن في سلاسل أوامر الصدفة.
  • نقطة نهاية المثبت يمكن الوصول إليها بدون مصادقة.

3. ترتيب حاجز المُثبت

الإعلان الأمني ينص على أن public/installer/index.php كان يتحقق من install.lock فقط بعد تحميل/تنفيذ منطق نماذج المثبت. هذا جعل معالجات المثبت قابلة للوصول حتى على نُسخ مُثبتة بالفعل.


التصحيح / الإصلاح

1. فحص مبكر لقفل المُثبت

الإصلاح ينقل فحص install.lock قبل تحميل معالجات النماذج.

السلوك المُصحّح:

root@kitploit:~
if (file_exists('../../install.lock')) {
    exit("تم الانتهاء من التثبيت بالفعل. يرجى حذف ملف 'install.lock' لإعادة التثبيت");
}

2. تجنب تنفيذ سلسلة أوامر الصدفة

الملف الأصلي المُصحّح:

root@kitploit:~
public/installer/src/functions/shell.php

الكود الأعلى ذو الصلة في الإصدار 1.2.0:

root@kitploit:~
function run_console(array $command, ...): string {
    $cwd = $cwd ?? $path;
    $handle = proc_open($command, $descriptors, $pipes, $cwd, null, $options);
}

لماذا يُصلح هذا المشكلة:

  • run_console() الآن يقبل مصفوفة على غرار argv.
  • لم يعد الأمر مكونًا كسلسلة صدفة واحدة.
  • بناء الجملة مثل $() يبقى كمدخل حرفي بدلاً من تركيب الصدفة.

السلوك المُصحّح للنموذج في الإصدار 1.2.0 يستخدم تنفيذ الأوامر بنمط المصفوفة:

root@kitploit:~
run_console(['php', 'artisan', 'settings:set', 'PterodactylSettings', 'panel_url', $url], ...);
run_console(['php', 'artisan', 'settings:set', 'PterodactylSettings', 'admin_token', $key], ...);
run_console(['php', 'artisan', 'settings:set', 'PterodactylSettings', 'user_token', $clientkey], ...);

تصميم المختبر

root@kitploit:~
127.0.0.1:8081 -> CtrlPanel الضعيفة 1.1.1
127.0.0.1:8082 -> CtrlPanel المُصحّحة 1.2.0
127.0.0.1:9100 -> API Pterodactyl وهمية

الخدمات:

  • vuln: CtrlPanel حقيقية 1.1.1
  • patched: CtrlPanel حقيقية 1.2.0
  • fake-api: API Pterodactyl محلية وهمية تُستخدم فقط لتلبية فحوصات المثبت
  • mysql_vuln / mysql_patched: مثيلات MariaDB منفصلة
  • redis_vuln / redis_patched: مثيلات Redis منفصلة

المختبر لا يُعدّل كود مصدر تطبيق CtrlPanel.

ملفات Dockerfile فقط تُغلف نقطة الدخول الأصلية للحاوية لتطبيع أذونات وقت تشغيل Docker Desktop من أجل:

root@kitploit:~
/var/www/html/storage
/var/www/html/bootstrap/cache

بعد إصلاح الأذونات، الغلاف ينفذ نقطة الدخول الأصلية للمنتج.


تصميم إثبات المفهوم (PoC)

إثبات المفهوم الرئيسي:

root@kitploit:~
poc/poc_http_only.py

الخصائص:

  • يُرسل POST HTTP فقط
  • لا يستخدم docker exec
  • لا يفحص الحاويات
  • لا يبدأ شيلات عكسية
  • يستخدم أوامر غير ضارة فقط: id، whoami، hostname

البرنامج المساعد:

root@kitploit:~
poc/poc_lab.py

الغرض:

  • يُرسل نفس طلب HTTP
  • يتحقق من الإثبات داخل الحاويات باستخدام docker compose exec
  • مخصص للعرض التوضيحي واختبار الانحدار فقط

ملف الإثبات داخل حاوية التطبيق:

root@kitploit:~
/var/www/html/storage/logs/cve_2026_34234_proof.txt

التشغيل

ابدأ من حالة مختبر نظيفة:

root@kitploit:~
docker compose down -v --remove-orphans
docker compose up -d --build

انتظر حتى تصبح حاويات التطبيق جاهزة، ثم شغّل:

root@kitploit:~
python3 poc/poc_lab.py

المخرجات المتوقعة:

root@kitploit:~
== اختبار الضعيفة ==
proof_exists: True
النتيجة: PASS expected_proof=True

== اختبار المُصحّحة ==
proof_exists: False
النتيجة: PASS expected_proof=False

[+] تم الوصول إلى النتيجة المتوقعة:
    الضعيفة => تم إنشاء ملف الإثبات
    المُصحّحة  => لا يوجد ملف إثبات

اختبار يدوي عبر HTTP فقط

أرسل إثبات المفهوم عبر HTTP فقط إلى الهدف الضعيف:

root@kitploit:~
python3 poc/poc_http_only.py --target http://127.0.0.1:8081

تحقق من الإثبات يدويًا:

root@kitploit:~
docker compose exec vuln sh -lc 'cat /var/www/html/storage/logs/cve_2026_34234_proof.txt'

الإثبات المتوقع:

root@kitploit:~
uid=1000(laravel) gid=1000(laravel) groups=1000(laravel)
laravel
<اسم_مضيف_الحاوية>

نفّذ نفس الطلب ضد المُصحّحة:

root@kitploit:~
python3 poc/poc_http_only.py --target http://127.0.0.1:8082

تحقق من سلوك المُصحّحة:

root@kitploit:~
docker compose exec patched sh -lc 'test -f /var/www/html/storage/logs/cve_2026_34234_proof.txt && cat /var/www/html/storage/logs/cve_2026_34234_proof.txt || echo "لا يوجد ملف إثبات"'

المتوقع:

root@kitploit:~
لا يوجد ملف إثبات

التنظيف

إزالة الحاويات والشبكات وأحجام المختبر:

root@kitploit:~
docker compose down -v

ملاحظات

  • هذا المختبر للبحث الأمني المحلي فقط.
  • لا تقم بتشغيل إثبات المفهوم ضد أنظمة لا تملكها أو ليس لديك إذن لاختبارها.
  • الإثبات مقصود به فقط إخراج الأوامر المحلية داخل الحاوية.
  • الخدمات الضعيفة والمُصحّحة تستخدم قواعد بيانات و Redis منفصلة.
  • API الوهمية موجودة فقط لمحاكاة الحد الأدنى لاستجابات Pterodactyl API المطلوبة من قبل تدفق المثبت.

إخلاء مسؤولية

هذا المستودع يُقدّم لأغراض البحث الأمني التعليمي والتحقق الدفاعي فقط.

جميع العروض التوضيحية تهدف للتشغيل داخل بيئة المختبر المحلي Docker المُقدّمة. إثبات المفهوم يتجنب الإجراءات التدميرية، الثبات، سرقة بيانات الاعتماد، استخراج البيانات، والاستهداف في العالم الحقيقي.

لا تستخدم هذا المشروع ضد أي نظام بدون إذن صريح. المؤلف غير مسؤول عن سوء الاستخدام أو الضرر الناتج عن هذه المادة.


المراجع

  • إعلان GitHub الأمني: https://github.com/Ctrlpanel-gg/panel/security/advisories/GHSA-jmhr-q9q5-fqwh
  • سجل CVE / NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-34234
  • الإصدار المُصحّح: https://github.com/Ctrlpanel-gg/panel/releases/tag/1.2.0
  • المستودع الأعلى: https://github.com/Ctrlpanel-gg/panel
تنزيل الأداة