ffuf طريقة استخدام أداة
Last updated
Was this helpful?
Last updated
Was this helpful?
ال fuzzing هي طريقة بنستخدمها علشان نكتشف الثغرات ونتأكد ان التطبيق شغال بشكل صحيح وبيعرف يتعامل مع انواع البيانات المختلفة من غير ما يتعطل, والfuzzing هو احد الطرق المستخدمة في عملية اختبار الصندوق الاسود للتطبيقات (Black Box Testing)
دي python function بتاخد عددين وترجع مجموعهم المفروض انها تجمع الاعداد الصحيحة فقط
دلوقتي عايزين نتاكد ان ال function بتشتغل بشكل صحيح ولا لا باستخدام ال fuzzing
هنستخدم function تانيه تعمل call لل function بتاعتنا و هتمررلها بعض الdata types المختلفه وتطبعلنا الناتج
بعد ما عملنا fuzz اتضح ان ال function مش بتشتغل بالشكل المطلوب وهو انها تجمع الاعداد الصحيحة فقط ولاكن ممكن تجمع ال floats او strings و في بعض الاحيان بترجع error
خلينا نصلح الfunction بتعاتنا ونختبرها تاني, عدلنا ال function وخليناها تتأكد من data type الاول قبل ما تنفذ عمليه الجمع
ودي نتيجة ال fuzzing , كدا ال function شغالة بالشكل المطلوب
نفس الكلام ممكن يطبق علي functions اكثر تعقيداً أو علي Applications, في المقال دا هشرح ازاي نعمل fuzz لتطبيقات الويب باستخدام أدا ffuf
في المثال دا استخدمنا FFUF علشان نعمل directory brute forcing
1- استخدمنا w
ك input method والقيمة بتاعتها ملف فيه بعض المسارات اللي عايزين نخمنها
2- ال u
والقيمة بتاعتها ال URL المستهدف
3- كلمة FUZZ
مع كل Request بيتم استبدالها بقيمة من ال word-list
في المثال دا استخدمنا اكتر من word-list في عملية ال fuzzing واحدة فيها URL parameters والتانية في paths بالاضافة لاننا كتبنا جنب كل word-list كلمة مميزة وفصلنا بينهم ب :
ال tool بتسبدل مكان الكلمات بقيمة من ال word-list اللي الكلمة مرتبطه بيها
بتستبدل كلمة PATH
بقيمة من ال word-list المرتبطة بيها وكلمة PARAM
بقيمة من ال word-list المرتبطة بيها
ممكن تستخدم ال x
option علشان تقدر تستخدم HTTP proxy زي brup او zap
ممكن نستخدم X
capital علشان نستخد HTTP method مختلفة
من الخواص المهمة في أداة ffuf هي ال Matchers وال Filters, طب هي لازمة الخواص دي؟ خلينا نتكلم عن ال Matchers
وانت بتعمل fuzzing ل web app وعايز الاداة تظهرلك نتائج بمواصفات معينة هنا يجي دور ال Matchers ودي في منها اربع انواع
النوع الاول mc
ودي بنستخدمها لما نكون عايزين نعرض النتايج لstatus code معين
النوع الثاني ml
ودي بتظهر النتايج علي حسب عدد ال lines اللي في ال response
النوع الثالث mr
ودي بتظهرلك النتايج بناء علي regex pattern معين انك مثلا عايز تشوف النتايج اللي فيها Error معين
النوع الرابع ms
ودي بتظهرلك النتايج علي حسب ال response size
النوع الخامس mw
ودي بتظهرلك النتايج اللي فيها عدد معين مين الكلمات
عكس استخدمات ال Matchers وهي لو انت مش عايز تظهر نتايج بمواصفات معينة
في المثال دا عملنا تصفية لل status codes 400
دلوقتي لو معاك request معين في file تقدر تستخدمه مع fuff مع تعديل اي جزء في ال request علشان يتم استبدالة بقيمه من ال word-list
تقدر تحفظ النتايج باستخدام ال o
تقدر كمان تختار نوع ال output file زي HTML او JSON او CSV باستخدام of
ممكن نستخدم HTTP header معينه مع ال Requests باستخدام ال H
وكمان تقدر تستخدمها اكتر من مرة
يعني ايه v-host ؟ هي اختصار ل virtual host و ال virtual hosting هي ميزية موجودة في ال web servers بتسمحلنا اننا نستضيف اكتر من web site علي نفس عنوان الانترنت ip address
يعني لو عندنا server عنوانه 1.1.1.1 نقدر نستضيف عليه النطاق example.com و admin.example.com و dev.example.com ولما بنحاول نتصفح موقع معين منهم بنطلبه من الweb server من خلال ال HTTP Host Header
دلوقتي لو عاوزين نكتشف ال v-hosts باستخدام ffuf نعمل ايه؟
1- هنعمل dns lookup لل host اللي معانا
2- محتاجين subdomains word-list : هنستعين ب seclists ودا مستودع علي github هتلاقي عليه word-lists كتير تساعدك.
هننزل word-list من قسم ال DNS علشان نستخدمها
3- هنجمع بين subdomains و الdomain في ملف واحد باستخدام Bash For loop:
4- بعد كدا هناخد ال IP address وال word list اللي عملناها ونبدا fuzzing علي ال v-host
دلوقتي انا معايا URL بالشكل دا في parameter اسمه path المفروض بعمل تحويل علي ال home directory, عازين نتأكد أن ال redirection شغال بشكل صحيح
محتاجين open redirect payloads word-list, ممكن نعملها بنفسنا او ندور علي word-lists جاهزة
دا امثلة علي بعض ال payload اللي ممكن نستخدمها
هنعمل fuzz لل path و هنعمل Match لل redirects status codes