ffuf طريقة استخدام أداة
مقدمة
ال 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
طريقة استخدام الاداة
المثال رقم 1 (Directory brute forcing)
في المثال دا استخدمنا FFUF علشان نعمل directory brute forcing
1- استخدمنا w
ك input method والقيمة بتاعتها ملف فيه بعض المسارات اللي عايزين نخمنها
2- ال u
والقيمة بتاعتها ال URL المستهدف
3- كلمة FUZZ
مع كل Request بيتم استبدالها بقيمة من ال word-list
المثال رقم 2 (FUZZ with multiple word-lists)
في المثال دا استخدمنا اكتر من word-list في عملية ال fuzzing واحدة فيها URL parameters والتانية في paths بالاضافة لاننا كتبنا جنب كل word-list كلمة مميزة وفصلنا بينهم ب :
ال tool بتسبدل مكان الكلمات بقيمة من ال word-list اللي الكلمة مرتبطه بيها
بتستبدل كلمة PATH
بقيمة من ال word-list المرتبطة بيها وكلمة PARAM
بقيمة من ال word-list المرتبطة بيها
المثال رقم 3 (Proxy)
ممكن تستخدم ال x
option علشان تقدر تستخدم HTTP proxy زي brup او zap
المثال رقم 4 (use different HTTP Method)
ممكن نستخدم X
capital علشان نستخد HTTP method مختلفة
المثال رقم 5 (Matchers and Filters)
من الخواص المهمة في أداة ffuf هي ال Matchers وال Filters, طب هي لازمة الخواص دي؟ خلينا نتكلم عن ال Matchers
1- استخدامات ال Matchers
وانت بتعمل fuzzing ل web app وعايز الاداة تظهرلك نتائج بمواصفات معينة هنا يجي دور ال Matchers ودي في منها اربع انواع
النوع الاول mc
ودي بنستخدمها لما نكون عايزين نعرض النتايج لstatus code معين
النوع الثاني ml
ودي بتظهر النتايج علي حسب عدد ال lines اللي في ال response
النوع الثالث mr
ودي بتظهرلك النتايج بناء علي regex pattern معين انك مثلا عايز تشوف النتايج اللي فيها Error معين
النوع الرابع ms
ودي بتظهرلك النتايج علي حسب ال response size
النوع الخامس mw
ودي بتظهرلك النتايج اللي فيها عدد معين مين الكلمات
2 - استخدمات ال Filters
عكس استخدمات ال Matchers وهي لو انت مش عايز تظهر نتايج بمواصفات معينة
في المثال دا عملنا تصفية لل status codes 400
المثال رقم 6 (raw request as input)
دلوقتي لو معاك request معين في file تقدر تستخدمه مع fuff مع تعديل اي جزء في ال request علشان يتم استبدالة بقيمه من ال word-list
المثال رقم 7 (save results)
تقدر تحفظ النتايج باستخدام ال o
تقدر كمان تختار نوع ال output file زي HTML او JSON او CSV باستخدام of
المثال رقم 8 (HTTP headers)
ممكن نستخدم HTTP header معينه مع ال Requests باستخدام ال H
وكمان تقدر تستخدمها اكتر من مرة
أمثلة عملية
المثال رقم 1 (V-Host Enumeration)
يعني ايه 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
المثال رقم 2 (Testing for open redirects)
دلوقتي انا معايا URL بالشكل دا في parameter اسمه path المفروض بعمل تحويل علي ال home directory, عازين نتأكد أن ال redirection شغال بشكل صحيح
محتاجين open redirect payloads word-list, ممكن نعملها بنفسنا او ندور علي word-lists جاهزة
دا امثلة علي بعض ال payload اللي ممكن نستخدمها
هنعمل fuzz لل path و هنعمل Match لل redirects status codes
المصادر
Last updated