الجمعة، 1 فبراير 2013

اختبار ثغرات XSS


 ملاحظة : التدوينات للغرض التعليمي فقط ! وابرئ نفسي امام الله من كل شخص يستعمل هذا العلم باي شكل لا يرضي الله تعالى .

1. مقدمه 


ثغرات Cross Site Scripting أو XSS تحتل المرتبه الثانيه حسب تصنيف OWASP بعد ثغرات الحقن " Injection "
وهنا شرح لثغرات الحقن من الأخ صبري لمن اراد الاستزاده http://www.security4arabs.com/2013/01/10/sql-injection-cheat-sheet

التطبيق سوف يكون على احد التطبيقات الموجودة في موقع Hack.me وهنا مقال عن هذا الموقع من الأخ صبري ايضاً
http://www.security4arabs.com/2012/10/21/hackme-projec/

اثراء : سبب اختصار جمله Cross Site Scripting الى XSS بدل CSS لعدم الخلط بينها وبين لغه الأنماط القياسيه CSS 

2. أنواع ثغرات الـ XSS

1- Stored - مُخزّنه
2- Reflected - غير مُخزّنه
3- Dom-Based XSS - لن اتطرق لها لقلّه خبرتي ومعلوماتي عنها .

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

سوف تتضح الفكره اكثر عند اكمالك للتدوينة .

3. كيف تعمل ؟

ثغرات الـ XSS تسمح للمهاجم بتشغيل اكواد Javascript أو Html وسبب تكونها هو عدم فلتره المدخلات .

4. إختبار ثغرات الـ XSS 

سوف نبدأ بإختبار النوع المُخزّن - [ Stored ] وهو الأكثر خطورة .
في اغلب الاحيان النوع المُخزّن يكون في صناديق البحث وصناديق التعليقات .
قمت باختيار سكربت DVWA من موقع Hack.me للتجربه عليه وهو سكربت مخصص لهذا الغرض .

 قمت باختيار XSS Stored من القائمه الموجوده في اليسار وجعلت الـ DVWA Security LOW 

XSS Stored

يوجد صندوق تعليقات يمكننا تجربه اكواد Javascript او Html عليه للتاكد من وجود ثغره XSS من عدمه
كتبت كود Javascript يقوم باظهار تنبيه مكتوب فيه XSS 

XSS Stored Result

فعلاً تم تنفيذ الكود , وهذا يعني ان الموقع مصاب بثغره Stored XSS
وهذا يعني في كل مره تدخل نفس الصفحه سوف يظهر لك التنبيه دون تدخل منك!
وعلى ذلك قس , ولا تنسى اكواد الـ Javascript وماذا ممكن ان تفعل :)

استغلال اخر : وهو وضع صوره في هذه الصفحه وجميع من يدخل الصفحه سوف يراها .

الكود :

"><img src=http://ccinsider.comedycentral.com/files/2012/03/Bender1.jpg onerror=prompt(1);>

وهو اطول من 50 حرف , وعدد الاحرف المسموح بها في صندوق التعليقات في سكربت DVWA - XSS Stored هو 50 حرف فقط
قمت بعمل تعديل بسيط على الصفحه بحيث يسمح لي بوضع اي عدد من الاحرف .

XSS Stored

ظهرت الصوره , وجميع من سوف يدخل الصفحه سوف يراها و حتى لو قمت بتحديث الصفحه سوف تظهر الصوره ايضاً , لان الثغره XSS Stored :)
اعتقد الان اصبحت لديكم خلفيه جيده حول الـ Stored XSS 
سوف ننتقل الان الى النوع الاخر الغير مُخزّن - Reflected 

سوف اجرب الاستغلال الثاني لاني سوف اوضح من خلاله الفرق بين الـ Stored و الـ Reflected .
سوف اضع نفس الكود السابق في الصندوق الموجود في خيار XSS Reflected في سكربت DVWA

XSS Reflected

تم الاستغلال بشكل مشابه للـ Stored XSS , ولكن دعونا نجرب عمل تحديث للصفحه

XSS Reflected After Refresh

لم يعد الاستغلال موجوداً , هنا يكمن الفرق بين الـ Stored و الـ Reflected
ولكن بالامكان نسخ الرابط بعد ظهور الاستغلال وارساله لاي شخص وسوف يرى الاستغلال وكانه هو من قام به .

سوف تجدون على هذا الرابط اكواد لتخطي بعض انواع الفلتره
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

سوف أقوم بتحديث التدوينه باذن الله لاضافه بعض المعلومات الجيده .


من لديه اقتراح او انتقاد او اضافه فليتفضل بها مشكوراً .

ان اصبت فمن الله وان اخطأت فمن نفسي ومن الشيطان .