الويب العربي

الويب العربي (http://www.arabwebtalk.com/index.php)
-   أمن المعلومات (http://www.arabwebtalk.com/forumdisplay.php?f=13)
-   -   تأمين تطبيقات الـ PHP من عدة ثغرات امنية (http://www.arabwebtalk.com/showthread.php?t=128839)

مخاوي الكيبورد 07-12-2009 11:13 PM

تأمين تطبيقات الـ PHP من عدة ثغرات امنية
 


في هذا الدرس سنتطرق الى تأمين تطبيقات البي اتش بي من الثغرات الامنية .
سوف اشرح تأمين التطبيقات من ثغرات الـ Cross-site scripting او الـ XSS
و ثغرات الـ Remote File Include و ثغرات الـ Local File Include .
اما بخصوص التأمين من الـ SQL injection
سنتطرق لذلك في درس لأحق بأذن الله !
ملحوظة :
إقتباس:

بعض الثغرات التي سأشرح تأمينها قديمة او نادرة ان صح القول ولكن سأذكر ذلك للاحتياط الامني لاأكثر ولاأقل .

اولا :
ثغرات الـ Remote File Include
يعمل هذا النوع على تمكين المهاجم من ادراج ملف خارجي الى ملفات الموقع بشكل غير شرعي .
يقوم المهاجم على الاغلب من خلال هذه الثغرة بأدراج ملف phpshell
يستطيع من خلاله التلاعب بالموقع وقد يصل الى التلاعب بالخادم كاملا !

كيف يتم اصابة البرامج بهذه الثغرة ؟
تتم الاصابة عن طريق استخدام الدوال التالية بالبرنامج
( Include و Include_once و Require و Require_once )
متبوعة بالـ $ ( متغير ) . ناخذ مثالا لكود بسيط مصاب
كود PHP:

<?php
$ghost 
$_GET['hacked'];
include (
$ghost);
?>

بالسطر الاول من الكود تم وضع متغير بأسم ghost واعطائه القيمة التالية “hacked
وفي السطر الثاني من الكود تم استخدام الدالة include
واستخدام علامة الـ $ قبل اسم المتغير ghost من بين الاقواس .

كيف يمكنني تأمين البرامج من هذا النوع ؟
التأمين او الترقيع يكون عن طريق تعريف المتغير المصاب لـ ( ./ )
مثلا ترقيع الكود السابق من الثغرة يكون بهذا الشكل
كود PHP:

<?php
$ghost 
$_GET['hacked'];
$ghost ./;
include (
$ghost);
?>

مع استبدال ghost بأسم المتغير الملحق بالـ $ .


ثأنيا : ثغرات الـ Local File Include
يعمل هذا النوع على تمكين المهاجم من قراءة اكواد ملفات الموقع المصاب .

كيف يتم اصابة البرامج بهذه الثغرة ؟
تتم الاصابة بهذا النوع من الثغرات عن طريق بعض الدوال ومنها
( file و readfile و show_source و fread )
مثال على كود مصاب
كود PHP:

<?php
readfile
($hacked);
?>

نلاحظ استخدام الدالة readfile والـ $ مسبوق بـ hacked بداخل الاقواس .

كيف يمكنني تأمين البرامج من هذا النوع ؟
التأمين او الترقيع يكون عن طريق تعريف المتغير المصاب لـ ( ./ )
كما ثغرات الريموت فايل انكلود
مثال على نفس الكود المصاب اعلاه
كود PHP:

<?php
$hacked 
./;
readfile($hacked);
?>

مع استبدال hacked بأسم المتغير الملحق بالـ $ .


ثالثأ : ثغرات الـ XSS
يعمل هذا النوع على تمكين المهاجم من زرع اكواد
جافا سيكربت و HTML بالملف المصاب .
ينتج عن ذلك في معظم الاوقات تمكن المهاجم من سحب كوكيز
ادمن الموقع عن طريق ملف Log !
يختلف هذا النوع عن باقي الثغرات فأن تنفيذه
لأيكون على الموقع نفسه يكون على مستخدمين الموقع .

كيف يتم اصابة البرامج بهذه الثغرة ؟
تتم الاصابة بهذا النوع من الثغرات غالبا عن طريق المربعات ( search )
كمربع البحث الموجود ببعض برامج البي اتش بي .
مثال على كود مصاب
كود PHP:

<?php
print $_GET['hacked'];
?>



كيف يمكنني تأمين البرامج من هذا النوع ؟

التأمين او الترقيع يكون عن طريق الدوال التالية
( htmlentities or htmlspecialchars ) .
يكون ترقيع الكود اعلاه بهذا الشكل
كود PHP:

<?php
print htmlspecialchars($_GET['hacked']);
?>

نلاحظ اننا في عملية الترقيع وضعنا الدالة htmlspecialchars بعد print
واضفنا قوسين حول الـ $_GET .
وبهذا الشكل لن يتم تنفيذ استغلال الثغرة وسيتم عرضه بالصفحة فقط لأغير !

( المقال عبارة عن مجهود شخصي ارجو ذكر المصدر عن النقل ) .

المصدر مدونتي المتواضعة

الصريح جداً 08-12-2009 12:22 AM

يعطيك العافية .... ولكن من الجدير بالذكر ان المثال اللي وضعته مثال بسيط لكود مصاب ..

توجد أمثلة أخرة يمكن أن تصاب بثغرات مع كونها معقدة نوعاً ما ...

شكراً لك

تشآآآآو

مخاوي الكيبورد 08-12-2009 01:13 PM

إقتباس:

اقتباس من مشاركة الصريح جداً (المشاركة 700898)
يعطيك العافية .... ولكن من الجدير بالذكر ان المثال اللي وضعته مثال بسيط لكود مصاب ..

توجد أمثلة أخرة يمكن أن تصاب بثغرات مع كونها معقدة نوعاً ما ...

شكراً لك

تشآآآآو

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

الصريح جداً 10-12-2009 01:56 PM

إقتباس:

اقتباس من مشاركة مخاوي الكيبورد (المشاركة 701030)
اهلا بك ..
صحيح والاكواد التي وضعتها بالامثلة عبارة عن اكواد بسيطة جدا جدا
وممكن تختلف الاكواد بشكل اخر !
لكن الجدير بالذكر .. ان الشرح يفهمك هيكلية ترقيع هذا النوع من الثغرات
والباقي بسيط بأذن الله ومافيه تعقيد ..
منور موضوعي اخوي

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

واسف على ازعاجك ..
تشآآآو

مخاوي الكيبورد 10-12-2009 03:23 PM

إقتباس:

اقتباس من مشاركة الصريح جداً (المشاركة 701649)
هههههه بنورك ... اعذرني شكلك فهمت ردي تنقيص من موضوعك ..
بس لابد من ذكر ان هذي الأخطاء .. هي أخطاء بسيطة .. فيه أخطاء معقدة تحتاج للتدقيق
وكشفها ماهو بهذي السهولة ... هذا بالنسبة للزائر اللي حاب ياخذ معلومه أدق ..
ولاموضوعك ما عليه غبار

واسف على ازعاجك ..
تشآآآو

لا يا اخوي لا ازعجتني ولا شئ بالعكس معك الحق بكل كلمة قلتها :)
بس لو يطلع اي احد لعدة اكواد ترقيع لثغرات مختلفة راح يفهمها
وحياك الله مره ثانية :)


جميع الأوقات بتوقيت مكة المكرمة. الساعة الآن » 05:03 PM.

Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © ArabWebTalk.Com 2004-2012