Directory traversal ثغرة ال
Last updated
Was this helpful?
Last updated
Was this helpful?
تغرة ال Directory traversal بتندرج تحت ثغرات ال Authorization
يعني ايه authorization؟
مصطلح الAuthorizaion بيختلف عن ال Authentication او المصادقة, عملية المصادقة مسؤلة عن اثبات هوية المستخدمين اما ال Authorization فهو مسؤل عن التحقق من ان المستخدم له صلاحية استخدام وظيفة معينة او قرائة بيانات معينه ولا لا
علي سبيل المثال: لو انت دخلت منشأة ما قبل ما تدخل بيطلبوا منك بطاقة تحقيق الشخصية او ال ID علشان يعرفوا انت مين ودي هي المصادقة, بعد ما بتدخل المنشأة بتختلف المعاملة علي حسب وظيفتك جوه المنشأة دي ممكن تكون ضيف او موظف او مدير وعلى حسب رتبتك بيبقي مصرح ليك بدخول مناطق معينه داخل المنشأة ودا هو الAuthorizaiton
ثغرات ال Directory Traversal او تجاوز المسار بتسمح للمهاجم Attacker انوا يقرأ ملفات من الخادم server اللي بيستضيف تطبيق معين web app زي الكود المصدري source code الخاص بالتطبيق او ملفات ال configuration او اي ملفات حساسة علي الخادم server وفي بعض الحالات بتسمح للمهاجم انه يكتب او يعيد كتابه ملف معين علي الخادم
قبل الاختبار محتاجين نحدد input fields اللي من المحتمل تكون مصابة بثغرة ال Directory Traversal, زي الparameters وال cookies عن طريق اننا نتصفح الموقع ونجمع input fields دي
وممكن باستخدام ادوات زي gau, grep
اداه gau هي اداة مفتوحة المصدر مكتوبة بلغة GO بنستخدمها علشان نجمع ال URLs الخاصة بموقع معين من wayback api, اما grep فهنستخدمها علشان نجمع ال URLs اللي فيها parameters معينه زي page, load
بعد ما بنعمل تحليل لسطح الهجوم analyzing attack surface ونعرف ايه ال parameters او ال cookies اللي من المحتمل انا تكون مصابة بثغرة ال Directory Traversal بنبدأ عملية الاختبار
ال payloads المستخدمة في عملية الاختبار بتختلف علي حسب نظام التشغيل فلو الخادم شغال بنظام Linux ال payload بيكون بالشكل دا:
في نظام linux النقطتين متبوعين ب slash معناهم اننا هنرجع خطوه للخلف
1- المسار الحالي هو ال root directory
2- انتقلت للمسار home باستخدام الامر cd
3- رجعت خطوة للخلف باستخدام نفس الامر مع كتابة dot-dot-slash
بالنسبة لنظام windows فالامر مختلف, بنكتب الحرف الخاص بال partition متبوع بالمسار المطلوب وبدل ال slash بنستخدم back-slash
معرفة نوع نظام التشغيل بتكون في مرحلة ال recon وممكن تعرف نوعه من خلال ال server header او من خلال لغة البرمجة المستخدمة, لازم تاخد وقت في مرحلة ال recon وتسجل كل تفصيلة علشان تعرف ازاي تتعامل مع الtarget
دا مثال علي استغلال الثغرة
طبعا في موقع حقيقي الاستغلال مش بيبقي بالسهولة دي في الحقيقة هتلاقي WAF او Filters اما بتعملك block او بتخرب الpayload عن طريق انها بتحذف الاجزاء المهمة
علي سبيل المثال ممكن تكون بتستخدم payload زي اللي موجود فوق في الصورة لاكن الموقع بيعمل filter لل dot-dot-slash
احد الطرق المستخدمة في تخطي ال filter دا بتكون عن طريق استخدام dot-dot-dot-dot-slash-slash لما filter يحذف dot-dot-slash الشكل النهائي لل payload هيكون مناسب وهيشتغل زي ما انت عايز
قبل ال filter
بعد ال filter
في طرق كتير ممكن تستخدما علشان تتخطي ال filter وممكن تجمع بين اكثر من طريقة, في مستودع علي github اسمه PayloadsAllTheThings هتلاقي عليه معظم الطرق لاستغلال الثغرات وتخطي ال filters
دي code sample بتوضح ازاي Directory Traversal ممكن تكون موجودة في الcookies, التطبيق هنا بيعتمد على قيمة ال cookie في انوا يعمل include لصفحة معينة
لو قيمة الcookie كانت موجودة بياخدها ويضيفها للمسار /home/users/phpguru/templates/
ويعلمها include
لاكن لو مش موجودة هيعمل include للملف blue.php
ودا مثال على طريقة الاستغلال Exploit : بنبعت ال payload بتاعنا بدل قيمة ال cookie اللي اسمها TEMPLATE
1- التحقق من المدخلات عن طريق عمل whitelist لاسماء الملفات المسموح بيها وحذف الحروف اللي ممكن تكون مستخدمة في ال attack دا زي dot و slash
2- اتأكد من تحديث مكونات الخادم server باستمرار
3- اتأكد ان ال web app شغال بال minimum privileges لتجنب الوصول لملفات حساسة علي الخادم في حالة حصل تخطي لل filters