عرض مشاركة مفردة
 
  #1  
قديم 07-12-2009, 11:13 PM
مخاوي الكيبورد مخاوي الكيبورد غير متصل
عضو
 
تاريخ التسجيل: Sep 2009
المدينة: KSA - TBOUK
مشاركة: 20
مستوى تقييم العضوية: 0
مخاوي الكيبورد is on a distinguished road
إرسال رسالة عبر MSN إلى مخاوي الكيبورد
Post تأمين تطبيقات الـ 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 .
وبهذا الشكل لن يتم تنفيذ استغلال الثغرة وسيتم عرضه بالصفحة فقط لأغير !

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

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






التوقيع
My Blog
My username : Ghost Hacker