الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ثغرات ال Session Fixation

بدأه حازم مفيد في 26 فبراير 2010 · 4 رد · 3,080 مشاهدة · في قسم أمن المعلومات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاتة

كنت قد كتبت في مدونتي www.pentestlabs.com/lab منذ مدة مقالة عن ثغرات ال Session fixation وانقلها الان اليكم وهو شرح مفصل لهذا النوع من الثغرات

رابط المقالة هنا

........... المقالة .............

الفهرس :

* ماهي ال Session ؟

* ماذا يستفيد المهاجم من هذا النوع من الثغرات ؟

* ديناميكية عمل الثغرة .

* طريقة اكتشاف الثغرة من الكود و طريقة الترقيع السليم .

* مدى خطورة هذا النوع ؟

ماهي ال Session ؟

هي خاصية تقدمها لغات برمجة تطبيقات الويب تساعد على حماية المستخدم من العابثين عن طريق جعل بيانات المستخدم ( إسم المستخدم و كلمة المرور وو .. الخ ) محفوظة في ذاكرة الخادم وتجعل لكل مستخدم Session خاص به .

ماذا يستفيد المهاجم من هذا النوع من الثغرات ؟

هذا النوع من الثغرات يمكن المهاجم من الدخول الى حسابات المستخدمين الخاصة مما يؤدي ذلك الى ضرر كبير على المستخدم .

ديناميكية عمل الثغرة :

أنظر الى الصورة التالية وتابع

333p.png

1- يقوم المهاجم في البداية بالدخول الى صفحة اللوجن

2- يقوم المهاجم بأخذ Session id وهو 1122 وقد تم تخزينة الان تاكد المهاجم من وجود ثغرة

3- يقوم المهاجم بارسال رابط ال session id المزيف الى الضحيه

4- يقوم الضحيه بفتحه

5- يقوم الضحيه بالدخول باليوزر النيم والباسوورد الخاص به

6- يقوم المهاجم بطلب ال Session ID المزيف ثانية من الخادم

والان قد تم دخول المهاجم الى حساب الضحيه بنجاح ،،

اذن المصيبه في السكربتات التي بها ثغرة session fixation انه يمكن تعديل ال session الى اي session تريده وتستطيع ان تلعب بالمستخدمين ،،

اذن ببساطة اكثر :

يقوم المهاجم بإكتشاف ثغرة Session fixation ثم يقوم بعمل طلب ل session id من صنعه وليكن 123456 ومن ثم يقوم بارسالة الى الضحيه ثم يقوم الضحيه بفتح الرابط ويقوم بالدخول الي حسابه وفي نفس الوقت يقوم المهاجم بالدخول على نفس ال session id الذي صنعه وارسله الى الضحيه وهو 123456 ومن ثم يجد نفسه داخل لوحة تحكم الضحيه ..

هذه طريقة هناك طريقة اخرى للمهاجم وهي عن طريق ال Cookies وهي كالتالي انظر الصورة

حسنا يمكن للمهاجم ان يقوم بهذه العملية عن طريق ثغرات XSS

مثال :

http://www.site.com/index.php?ha=<script>document.cookie=”PHPSESSID=123456;domain=www.site.com”;</script>

انظر الى الصورة الاتية

333p1.png

1- يقوم المهاجم بارسال الرابط الى الضحيه

2- يقوم الضحيه بطلب الرابط من الخادم

3- يخزن لديه ال session id الاتي 123456 الذي قام بوضعه المهاجم

4- يقوم الضحيه بالدخول الى حسابه

5- يقوم المهاجم بالدخول الى Session ID المزيف ومن ثم يقوم بالدخول الى حساب الضحيه

هذه ايضا طريقة من طرق التحايل عن طريق ثغرات ال Session Fixation .

طريقة اكتشاف الثغرة من الكود و طريقة الترقيع السليم :

كما نعلم ان ال Session بيتم تخزينها في السيرفر حسنا لنقوم بانشاء ملف ولنسميه vuln.php وضع به الكود التالي


<?php
session_start();
$_SESSION['account'] = ‘hazem’;
?>

حسنا قم بتشغيل الملف لديك على ال localhost ثم قم بتنفيذ هذا الرابط localhost/vuln.php?PHPSESSID=123456

حسنا الان قم بعمل ملف اخر وسميه fix.php وضع به الاتي


session_start();
if (isset($_SESSION['account']) )
{
echo $_SESSION['account'];
}
?>
        <?php

الان لنقم بتنفيذ الرابط التالي localhost/fix.php?PHPSESSID=123456

حسنا ماذا وجدت ؟؟

وجدت اسم hazem اي يعني انه قد تم الدخول الى ال session id طبعا يجب ان تكون لك خبرة بسيطه في استخدام ال SESSION في PHP

إذن الحل الامثل لسد هذا النوع هو ان تقوم بعمل regenrate session عن طريق دالة SESSION_REGENRATE_ID();

وهذا مثال


<?php
session_start();
if (!isset($_SESSION['account']))
{
session_regenerate_id();
$_SESSION['account'] = TRUE;
}
?>

وعلى هذا النحو يمكنك ان تقوم بسد ثغرات ال Session Fixation بمنتهى البساطة ..

مامدى خطورة هذا النوع:

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

هذا شرح مبسط عن ثغرات session fixation ،، بإمكانك طرح الاسئلة

pentestlabs

Hazem Mofeed

تم تعديل هذه المشاركة بواسطة حازم مفيد في 26 فبراير 2010 في 22:15

2
tvquran_7.gif

Secur1ty-Area

#2

السلام عليكم

جزاك الله خيراً أخ حازم

موضوع في غاية الأهمية

أخ حازم أنا بصراحة لا أعرف شيئاً بلغة php، لكن أعرف عن html

هل لك أن ترشدني إلى مايمكن عمله خطوة خطوة، طبعاً إذا لديك وقت

مع جزيل الشكر

#3

السلام عليكم

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

tvquran_7.gif

Secur1ty-Area

#4

بارك الله فيك

#5

و ماذا عن استخدام ال Salting Hashes عوضاً عن توليد Session ID جديدة

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

مواضيع مشابهة