در قسمت اول و دوم آموزش کار با ابزار wfuzz با برخی از دستورات پرکاربرد ابزار wfuzz آشنا شدیم و تا حدودی نحوه کار با این ابزار را فراگرفتیم . در این قسمت در ادامه مباحث میخواهیم با فیلترهای بیشتر این ابزار قدرتمند آشنا شویم.
قسمت اول
قسمت دوم
بررسی Authentication fuzz
Wfuzz همچنین میتواند Header های احراز هویت را تنظیم کند و ابزار احراز هویت را از طریق درخواستهای HTTP فراهم کند.
اپشن های این نوع درخواست عبارتند از :
–basic : نام کاربری و رمز عبور اولیه را فراهم می کند
–nltm : برای ویندوز استفاده می شود.
–digest : تعامل با سرور وب از طریق دسترسی digest
در مثال زیر، یک لیست به صورت خطی با دو متغیر و ورودی –basic برای bruteforce یک وب سایت httpwatch.com ارائه می کنیم.
wfuzz -z list,nonvalid-httpwatch --basic FUZZ:FUZZ https://www.httpwatch.com/httpgallery/authentication/authenticatedimage/default.aspx
بررسی Recursive fuzz
سوئیچ -R می تواند سطوح بازگشت را در حین مبهم کردن دایرکتوری ها یا پارامترها مشخص کند. بازگشت به زبان ساده به معنای fuzzing در چندین سطح مختلف دایرکتوری مانند /dir/dir/dir و غیره است
در مثال زیر، ما در سطح ۱ با یک لیست درون خطی حاوی ۳ دایرکتوری تکرار می کنیم: admin، CVS و cgi-bin. توجه داشته باشید که چگونه یک دایرکتوری با – به نام آن می تواند به صورت درون خطی عرضه شود
wfuzz -z list,"admin-CVS-cgi\-bin" -R1 http://testphp.vulnweb.com/FUZZ
بررسی Printers and output
Printers ها در wfuzz به تمام فرمت هایی اشاره دارد که خروجی یک payload قابل پردازش است. می توان آن را با استفاده از -e که توسط آرگومان printer انجام شد مشاهده کرد. علاوه بر این، سوییچ –o می تواند فرمت خروجی را نیز مشخص کند.
wfuzz -e printers
wfuzz -o json -w wordlist/general/common.txt http://testphp.vulnweb.com/FUZZ
بررسی Encoders
Encoder های مختلفی در wfuzz وجود دارد. یکی از Encoder که قبلا دیدیم md5 بود. Encoder های دیگر را می توان با استفاده از سوییچ -e با آرگومان Encoder ها مشاهده کرد.
wfuzz -e encoders
با استفاده از خروجی MD5 میتوان یک وبسایت را برای دایرکتوریها استفاده کرد:
wfuzz -z file,wordlist/general/common.txt,md5 http://testphp.vulnweb.com/FUZZ
بررسی Storing and restoring fuzz from recipes
برای آسان کردن اسکن، wfuzz میتواند session ها را با استفاده از سوییچ –dump-recipe ذخیره و بازیابی کند.
wfuzz -w wordlist/general/common.txt --dump-recipe /tmp/recipe --sc 200,301 http://testphp.vulnweb.com/FUZZ
wfuzz --recipe /tmp/recipe
بررسی Ignoring exceptions and errors ( نادیده گرفتن استثناها و خطاها )
اغلب در حین fuzzing، خطاها و استثناهای مختلفی وجود دارد که یک وب سایت می تواند ایجاد کند. گزینه -Z می تواند باعث شود که wfuzz این خطاها و استثناها را نادیده بگیرد. ابتدا یک روال معمولی fuzzing زیر دامنه را اجرا می کنیم و سپس از گزینه -Z استفاده میکنیم.
wfuzz -z list,support-web-none http://FUZZ.google.com/
wfuzz -z list,support-web-none -Z http://FUZZ.google.com/
همانطور که می بینید، -Z آن خطای پایین را نادیده می گیرد. علاوه بر این، هر پاسخ نامعتبر نیز می تواند به این صورت پنهان شود:
wfuzz -z list,support-web-none -Z --hc “XXX” http://FUZZ.google.com/
بررسی Filtering results ( فیلتر کردن نتایج )
فیلترهای زیادی برای دستکاری payload یا خروجی موجود است.
wfuzz --filter-help
این ها را می توان با استفاده از آرگومان های –filter ، –slice ، –field و –efiled دستکاری کرد.
به عنوان مثال، برای مشاهده پاسخ های خام paylod ارسال شده و درخواست HTTP کامل انجام شده، می توانید از گزینه –efiled استفاده کنید.
wfuzz -z range --zD 0-1 -u http://testphp.vulnweb.com/artists.php?artist=FUZZ --efield r
با این حال، اگر فقط URL مورد نظر مورد نیاز باشد، می توان این کار را با ارائه ورودی — efield url انجام داد.
wfuzz -z range --zD 0-1 -u http://testphp.vulnweb.com/artists.php?artist=FUZZ --efield url --efield h
به طور مشابه، برای فیلتر کردن نتایج بر اساس کد پاسخ و طول صفحه (خطوط بزرگتر از ۹۷)، می توانید این کار را به صورت زیر انجام دهید:
wfuzz -z range,0-10 --filter "c=200 and l>97" http://testphp.vulnweb.com/listproducts.php?cat=FUZZ
جدول دقیق تمام فیلترهای محموله ها را می توانید از این لینک پیدا کنید.
بررسی Sessions in wfuzz
یک session در wfuzz یک فایل موقت است که می تواند ذخیره شود و بعداً برداشت، پردازش مجدد و پس پردازش شود. این در شرایطی مفید است که یک نتیجه ذخیره شده قبلاً نیاز به تغییرات دارد یا یک تحلیلگر باید به دنبال چیزی در نتایج باشد. سوییچ –oF می تواند خروجی session را در یک فایل ذخیره کند.
wfuzz --oF /tmp/session -z range,0-10 http://testphp.vulnweb.com/listproducts.php?cat=FUZZ
این فایل session اکنون می تواند دوباره باز شود و با استفاده از payload مانند wfuzzp این موارد مصرف شود:
wfuzz -z wfuzzp,/tmp/session FUZZ
یکی از این نمونهها از این فیلتر کردن از یک session ذخیرهشده قبلی به شرح زیر است که در آن با استفاده از یک regex پایتون طراحی شده و می توانیم برای خواندن پاسخها پس از تغییر یک پارامتر با افزودن یک (‘) و دوباره فاز کردن، یک آسیبپذیری تزریق SQL را پیدا میکنیم. سوییچ -A یک خروجی پرمخاطب را نشان می دهد.
wfuzz -z range,1-5 --oF /tmp/session http://testphp.vulnweb.com/artists.php?artist=FUZZ
wfuzz -z wfuzzp,/tmp/session --prefilter "r.params.get=+'\''" -A FUZZ
همانطور که می بینید، درخواست شماره ۴ یک خطای SQL ایجاد می کند که نشان دهنده تزریق SQL است. برای اطلاعات بیشتر در خصوص regex به این لینک مراجعه کنید.
نتیجه گیری
Wfuzz یک ابزار همه کاره است که می تواند بیش از شمارش فهرست دایرکتوری ها انجام دهد و به یک pentester در تجزیه و تحلیل های خود کمک کند.