اخواني واخواتي اعضاء وزوار موقع isecur1ty . ساتحدث اليوم عن كيفية عمل Brute force attack علي موقع يحتوي HTTP Basic authentication لعملية الدخول . ساشرح اولا ماهي هذه العملية وكيف تستخدم ومن ثم ساتطرق لكود بايثون ساقوم بكتابته لعمل Brute force attack علي صفحة دخول سنقوم بتنفيذها ايضا ومن ثم سنتطرق الي احد التحديات الخاصه بـ securitytube ومتعلقه بهذه الجزئيه وسوف اعرض لكم كيف قمت بحل هذا التحدي .
أولا : HTTP Basic Authentication
هي طريقة بسيطه وسهله لحماية صفحة ما علي الانترنت من الاختراق او الدخول اليها مباشرة . فنجد ان معظم مديري المنتديات ومدونات الفيس بوك قد يلجأو الي هذه الطريقه لحماية صفحة الدخول ايضا . ربما نجدها ايضا في بعض الشلات الموجوده حاليا علي الانترنت . تعتمد هذه الطريقه علي HTTP headers لعمل authentication لليوزر .
يوجد اكثر من نوع لـ HTTP authentication مثل :
- Basic Authentication
- Digest Authentication
ما نتحدث عنه في هذا المقال هو Basic authentication .
ثانيا : كتابة كود PHP بسيط لهذه العمليه
ساقوم بكتابه كود php بسيط لتوضيح كيف تتم العملية
في هذا الكود ما قمت به هو مجرد التاكد ما اذا كان اليوزر قد قام بادخال الاسم وكلمة المرور وفي حالة الضغط علي cancel ستظهر له رسالة unauthorized person . يتم ارسال ايضا Basic realm وهو الذي يظهر في الرساله عندما يتم الدخول الي الصفحه كما ستشاهدون في الصوره التاليه
. كما تلاحظون في هذه الصوره عند الدخول الي الصفحه التي قمت ببرمجتها مسبقا تظهر هذه النافذه وتطلب اسم الدخول وكلمة المرور . في الكود السابق لم اقم بتعيين كلمة مرور واسم للصفحه وانما مجرد طباعة اسم المستخدم وكلمة المرور التي يتم ادخالهم في النافذه التي تظهر .
ثالثا : كيفية عمل Brute Force Attack علي هذه النوعيه
ساتطرق الي احد التحديات المقدمه من موقع securitytube ومن خلال حلها سوف تكون قادر علي فهم هذه النوعيه والهجوم عليها
رابط التحدي : http://pentesteracademylab.appspot.com/lab/webapp/basicauth
المطلوب في التحدي : تخطي صفحة الدخول Basic authentication .
بعض التلميحات :
- اسم المستخدم nick , admin
- كلمة المرور تتكون من ثلاثة احرف a,s,d وطولها 5 احرف .
طريقة الحل :
عند الدخول الي صفحة التحدي نجد الصفحة التاليه :وعند الضغط علي زر Enter Pentester Academy . نجد النافذه التاليه تظهر امامنا وتطلب اسم الدخول وكلمة المرور
اذن كيف نقوم بالتخمين علي هذه النافذه ؟
لمن لم يتابع كيفية حل التحدي الاول الذي قمت به يمكنه متابعته من هذا الرابط
تعلمنا في درس التحدي الاول كيف يمكننا عمل Brute force attack علي web form وكيف استطعنا استغلال التلميحات الموجوده بالتحدي من اجل انشاء قائمة الباسوردات المحتمله . نفس الشئ ساقوم به في هذا التحدي
اولا : ساقوم بعمل انشاء لقائمة كلمات المرور المحتمله
فقد ذكر انه كلمة المرور تتكون فقط من ثلاثة احرف a,s,d وطولها 5 احرف . اذن ساقوم بكتابه نفس الكود الذي قمت بكتابته مسبقا لانشاء قائمة كلمات المرور مع استبدال pass_list بالاحرف الممكنه الجديده a,s,d
الان لنقم بعمل الاتصال بنافذة الـ authentication التي تظهر لنا ومن ثم تجربة كل كلمات المرور الممكنه من خلال مكتبة requests بالبايثون . يمكنك تطبيق الامر التالي في التريمنال لتنصيبها بكل سهوله
for user in username:
عند تطبيق هذا الكود ومحاولة طباعه send.text وهو الخرج حتي الان نجد انه يحدث كما في الصوره التاليه :
نجد كلمة unauthorized في الخرج اذن ما سنقوم به هو عملية فحص ما اذا كان send.text يحتوي في كل مره علي كلمة unauthorized ام لا وان لم يحتوي في مرة ما علي هذه الكلمة فهذا يعني ان عملية الدخول تمت بنجاح . فسنقوم بتطبيق التالي :
print(“Yes it worked ” + passw)
break
else:print(“Not Connected with pass %s and user %s”) %(passw,user)
| روابط هذه التدوينة قابلة للنسخ واللصق | |
| URL | |
| HTML | |
| BBCode | |
kamindoz
