در این آموزش، ما یاد میگیریم که چگونه از ffuf استفاده کنیم . Ffuf مخفف عبارت «Fuzz Faster U Fool» می باشد که یک ابزار متنباز جالب برای fuzzing وب است. از زمان انتشار آن کار با این ابزار با استقبال بسیار خوبی مواجه شد و همچنین کسانی که در زمینه باگ بانتی مشغول به فعالیت هستند از این ابزار ارزشمند استفاده می کنند.
در قسمت اول و دوم ما با برخی از دستورات این ابزار کار کردیم و به بررسی موارد زیر پرداختیم :
۱- انجام یک حمله ساده (Simple Attack )
۲- استفاده از چند wordlist برای حمله
۳- بررسی Ignore Wordlist Comment and Silent
۴- برررسی Extensions
۵- بررسی Request | Request-Proto | Mode
۶- بررسی Match Options
۷- بررسی Filter Options
در ادامه با کاربردهای دیگر این ابزار آشنا میشویم.
۸– General Options
بخش General Options پارامترهای کلی این ابزار هستند که حول کار کلی آن بر روی فازبندی وب می چرخد.
۸-۱ – بررسی. Custom Auto Calibration:
می دانیم که قدرت یک کامپیوتر یا ماشین برای کالیبراسیون خودکار مبحث شناخته شده ای است. کالیبراسیون فرآیند ارائه ابزار اندازه گیری با اطلاعات مورد نیاز برای درک زمینه ای است که در هنگام جمعآوری دادهها، کالیبره کردن رایانه از صحت آن اطمینان میدهد.
ما می توانیم این ویژگی را با توجه به نیاز خود با کمک پارامتر [acc-] سفارشی کنیم. که بدون پارامتر [ac-] برای سفارشیسازی آن قابل استفاده نیست.
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -acc -ac -fl 26 -ac -fs 2929 -ac -fw 54
۲ – بررسی. color:
گاهی اوقات جداسازی رنگ توجه بیشتری به تمام جزئیات در نتیجه ایجاد می کند. این پارامتر [c-] به ایجاد تفکیک رنگ کمک می کند.
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -c
۸-۳ – بررسی. Maxtime For Task:
اگر می خواهید برای مدت زمان محدودی fuzz کنید، می توانید پارامتر [maxtime-] را انتخاب کنید. برای ارائه یک Time Slot دستور را دنبال کنید.
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -maxtime 5
۸-۴ – بررسی. Maxtime For Job:
با کمک پارامتر [maxtime-job-] میتوانیم برای یک کار خاص محدودیت زمانی در نظر بگیریم. با استفاده از این دستور سعی داریم زمان اجرای هر کار یا درخواست را محدود کنیم.
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -maxtime-job ۲
۸-۵ – بررسی. Delay:
می توانیم در هر درخواست ارائه شده توسط حمله تاخیر خاصی ایجاد کنیم. از طریق این ویژگی، یک درخواست فرصت بهتری برای دریافت نتایج بهتر دارد. پارامتر [p-] به ما کمک می کند تا به تاخیر در آن درخواست ها برسیم.
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -p 1
۸-۶ – بررسی. Request Rate:
با کمک پارامتر [rate-] می توانیم برای هر حمله خود یک نرخ درخواست جداگانه ایجاد کنیم. از طریق این پارامتر، درخواست خود را در هر ثانیه مطابق با حمله مورد نظر خود ایجاد می کنیم.
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -rate 500
۸-۷ – بررسی. Error Functions:
سه پارامتر وجود دارد که از تابع Error پشتیبانی می کند. پارامتر اول [se-] است که یک خطای ساختگی است. بیان می کند که درخواست زیر واقعی است یا خیر. پارامتر دوم [sf-] است، هنگامی که بیش از ۹۵٪ درخواست ها به عنوان خطا رخ داده باشد، حمله ما را متوقف می کند. سومین و آخرین پارامتر [sa-] است که ترکیبی از هر دو پارامتر خطا است.
در سناریوی خود، ما از پارامتر [se-] استفاده می کنیم که در آن زمانی که درخواست ما واقعی نباشد، حمله ما را متوقف می کند.
ffuf -u http://ignitetechnologies.in/W2/W1/ -w dict.txt:W1 -w dns_dict.txt:W2 -se
۸-۷ – بررسی. Error Functions:
سه پارامتر وجود دارد که از تابع Error پشتیبانی می کند. پارامتر اول [se-] است که یک خطای ساختگی است. بیان می کند که درخواست زیر واقعی است یا خیر. پارامتر دوم [sf-] است، هنگامی که بیش از ۹۵٪ درخواست ها به عنوان خطا رخ داده باشد، حمله ما را متوقف می کند. سومین و آخرین پارامتر [sa-] است که ترکیبی از هر دو پارامتر خطا است.
در سناریوی خود، ما از پارامتر [se-] استفاده می کنیم که در آن زمانی که درخواست ما واقعی نباشد، حمله ما را متوقف می کند.
ffuf -u http://ignitetechnologies.in/W2/W1/ -w dict.txt:W1 -w dns_dict.txt:W2 -se
۸-۸ – بررسی. Verbose Mode:
همانطور که همه ما می دانیم، حالت verbose یک ویژگی است که در سیستم عامل ها و زبان های برنامه نویسی بسیاری از رایانه ها استفاده می شود که اطلاعات اضافی در مورد کارهایی که رایانه انجام می دهد و درایورها و برنامه هایی که در زمان اولیه بارگذاری می شود ارائه می دهد. در برنامه نویسی، خروجی دقیقی برای اهداف اشکال زدایی تولید می کند و اشکال زدایی یک برنامه را آسان می کند. پارامتری به نام پارامتر [v-] وجود دارد.
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -v
۸-۹ – بررسی. Threads:
پارامتر [t-] برای سرعت بخشیدن یا کند کردن یک فرآیند استفاده می شود. به طور پیشفرض روی ۴۰ تنظیم شده است. اگر میخواهیم روند را افزایش دهیم، باید تعداد آن را افزایش دهیم، برعکس برای کاهش سرعت فرآیند.
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -t 1000
می توانیم از پارامتر o- برای ذخیره سازی خروجی استفاده کنیم اما باید فرمت آن را با پارامتر [of-] با هم مشخص کنیم. که امکان ذخیره سازی با فرمت های مختلفی مثل html , csv را به ما میدهد. دستورات به شکل زیر می باشد :
۹-۱ ـ خروجی گرفتن با فرمت HTML
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -o file.html -of html
که بعد از خروجی گرفتن اگر فایل را باز کنیم به شکل زیر می باشد :
۲ـ خروجی گرفتن با فرمت CSV
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -o file.csv -of csv
۱۰– بررسی HTTP Options
گاهی اوقات برای اجرای fuzzing وب نیاز به جزئیاتی مانند درخواست HTTP، کوکی، هدر HTTP و غیره دارید که میتوانید انجام دهید.
۱۰-۱ ـ بررسی Timeout
تایم اوت به عنوان آخرین مهلت برای رویداد عمل می کند. با کمک پارامتر [timeout-] این ویژگی را به راحتی ایجاد کرد، این دستور را برای اجرای این پارامتر دنبال کنید.
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -timeout 5
۱۰-۲ ـ بررسی Host Header
اگر بخواهیم fuzzing را روی ساب دامنه انجام دهیم، میتوانیم از پارامتر [H-] به همراه فهرست واژههای نام دامنه همانطور که در زیر در دستور آمده است استفاده کنیم.
ffuf -u https://google.com -w dns_dict.txt -mc 200 -H "HOST: FUZZ.google.com"
۱۰-۳ ـ بررسی Recursion
همانطور که همه ما می دانیم، بازگشت مکانیسم تکرار اشیا به شیوه ای مشابه است. اگر برنامه ای از شما بخواهد که به یک تابع در یک تابع دیگر دسترسی داشته باشید، به آن فراخوانی بازگشتی تابع گفته می شود. با استفاده از پارامتر [recursion-] میتوانیم به این قابلیت در حملات خود دست پیدا کنیم.
ffuf -u "http://testphp.vulnweb.com/FUZZ/" -w dict.txt -recursion
۱۰-۴ ـ بررسی Attack with Cookie
گاهی اوقات وب fuzzing نتیجه را در سایت احراز هویت شده بدون احراز هویت نشان نمی دهد. یک پارامتر [b-] وجود دارد که از طریق آن می توانیم با ارائه یک کوکی جلسه به هدف شما برسیم.
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -b "PHPSESSID:"7aaaa6d88edcf7cd2ea4e3853ebb8bde""
۱۰-۵ ـ بررسی Replay-Proxy
همانطور که می دانید، هنگام استفاده از تابع Intruder در نسخه رایگان مجموعه Burp محدودیت های سرعت وجود دارد. حمله Intruder به شدت کند شده است و هر دستور حمله را حتی بیشتر کند می کند.
در مورد ما از پروکسی مجموعه Burp برای دریافت نتایج برای ارزیابی در آن استفاده می کنیم. ابتدا باید یک پروکسی لوکال هاست در پورت ۸۰۸۰ ایجاد کنیم.
اکنون از پارامتر [replay-proxy-] استفاده کنید، که به ما کمک می کند تا پراکسی میزبان محلی خود را که در مرحله قبل در پورت ۸۰۸۰ ایجاد کردیم همراه با حمله خود استخراج کنیم.
ffuf -u http://192.168.1.12/dvwa/FUZZ/ -w dict.txt -replay-proxy http://127.0.0.1:8080 -v -mc 200
این حمله نتایج ما را روی دو پلتفرم نشان خواهد داد. اولین پلتفرم در ترمینال کالی و دومی در برگه تاریخچه HTTP مجموعه Burp. از طریق این تکنیک های مختلف، ما می توانیم هدف و نتایج حمله خود را بهتر درک کنیم.
نتیجه گیری :
ffuf اغلب با ابزارهایی مانند dirb یا dirbuster مقایسه میشود، که اگرچه تا حدودی دقیق است، اما قیاس معقولی نیست. اگرچه FFUF را می توان برای فایل های brute force استفاده کرد، اما قدرت واقعی آن در سادگی آن نهفته است و یک ابزار مقایسه ای بهتر برای FFUF هر چیزی مانند Burp Suite Intruder یا Turbo Intruder خواهد بود.