
ماسح ضوئي بلغة Python وإثبات مفهوم لـ CVE-2026-49049، وهو ثغرة كتابة ملفات عشوائية في Joomla Helix3 تتيح رفع PHP web shell وتنفيذ التعليمات البرمجية عن بُعد.
يحتوي هذا المستودع على ماسح ضوئي مكتوب بلغة Python وإثبات مفهوم لثغرة أمنية في مكوّن Joomla Helix3. العلّة هي مشكلة كتابة ملفات عشوائية يمكن أن تؤدي إلى تنفيذ تعليمات برمجية عن بُعد (RCE) عندما يتمكن المهاجم من كتابة حمولة PHP في موقع يمكن الوصول إليه عبر الويب.
يحدث السلوك الثغري عندما يُستخدم معامل طلب للتحكم في مسار ملف أو محتوى ملف دون التحقق المناسب. في حالة واجهة AJAX الخاصة بـ Helix3، تقبل نقطة النهاية بيانات قد تُستخدم لكتابة ملفات إلى نظام ملفات الخادم. إذا لم يقيّد التطبيق مسار الوجهة ولم يتحقق من المحتوى، يمكن للمهاجم إنشاء نص PHP ضار في موقع ينفذه خادم الويب.
بعبارة أخرى، الثغرة ليست مجرد "يمكن كتابة ملف" — بل هي سلسلة خطيرة:
هذا سيناريو كلاسيكي لكتابة ملفات عشوائية يؤدي إلى web shell.
بمجرد أن يتمكن المهاجم من كتابة ملف PHP في جذر الموقع أو أي دليل قابل للتنفيذ آخر، يمكنه:
التأثير شديد لأنه يسمح للمهاجم بتحويل خلل بسيط في كتابة الملفات إلى اختراق كامل للخادم.
المشكلة الجذرية عادةً مشابهة لهذا المنطق:
$file = $_POST['layoutName'];
$content = $_POST['content'];
file_put_contents($file, $content);
إذا كانت قيمة $file يتحكم فيها المهاجم ولم يكن المسار مقيّدًا، فقد يكتب التطبيق تعليمات PHP البرمجية في مسار قابل للتنفيذ. يصبح النص الضار بعد ذلك متاحًا للمتصفح ويمكن تنفيذه بواسطة خادم الويب.
يتضمن هذا المشروع أداة Python متعددة الخيوط تحاول:
يسجّل الأهداف الثغرة في results.txt ويخزّن مخرجات PHP الخام في raw_result.txt.
يجب أن يلغي الإصلاح عمليات كتابة الملفات غير الموثوقة ويفرض تحققًا صارمًا. فيما يلي خطوات المعالجة الموصى بها.
قم بترقية Joomla ومكوّن/إضافة Helix3 إلى أحدث إصدار مستقر. غالبًا ما تزيل التحديثات الأمنية أو تقيّد نقطة النهاية الثغرة التي تسمح بعمليات الكتابة العشوائية.
إذا لم تكن وظيفة AJAX الخاصة بـ Helix3 ضرورية، فعطّلها بالكامل. يؤدي إزالة الوصول إلى نقطة النهاية غير الآمنة إلى تقليل سطح الهجوم بشكل كبير.
لا تسمح بمسارات نظام ملفات عشوائية. يجب أن يسمح التطبيق بالكتابة فقط داخل دليل صغير وثابت غير قابل للوصول العام وليس قابلًا للتنفيذ كـ PHP.
يجب أن يرفض التحقق:
../قبل كتابة أي ملف:
يجب أن يُسمح فقط للمسؤولين الموثوقين باستخدام نقاط النهاية التي تكتب الملفات. اطلب مصادقة مناسبة وفحوصات أذونات قبل قبول أي طلب كتابة.
لا تكتب أبدًا محتوى خامًا يتحكم فيه المهاجم في ملفات قابلة للتنفيذ دون تحقق صارم. بالإضافة إلى ذلك، يجب أن يشمل تقوية الخادم:
requestsأنشئ ملفًا يحتوي على عناوين URL المستهدفة، على سبيل المثال targets.txt:
http://example.com
https://joomla-site.local
http://127.0.0.1
ثم شغّل:
python3 cve-2026-49049.py targets.txt
سيُنشئ السكربت:
results.txt — عناوين URL الثغرة التي تم اكتشافهاraw_result.txt — حمولات PHP الخام التي لوحظت أثناء الاختبارهذا المشروع مخصص لأغراض تعليمية، والبحث الأمني المشروع، وتقييم الثغرات المصرّح به. يجب عدم استخدامه ضد أنظمة دون إذن صريح. يُحظر إساءة الاستخدام بشكل صارم.
يُقدَّم المحتوى في هذا المستودع لمساعدة الباحثين والمسؤولين على فهم مشكلة أمنية حقيقية وتحديدها ومعالجتها. استخدمه بمسؤولية وفقط في بيئات خاضعة للرقابة حيث لديك التخويل المناسب.