في هذا الدرس سنتطرق الى تأمين تطبيقات البي اتش بي من الثغرات الامنية .
سوف اشرح تأمين التطبيقات من ثغرات الـ
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 .
وبهذا الشكل لن يتم تنفيذ استغلال الثغرة وسيتم عرضه بالصفحة فقط لأغير !
(
المقال عبارة عن مجهود شخصي ارجو ذكر المصدر عن النقل ) .
المصدر مدونتي المتواضعة