آموزش کار با ابزار wfuzz قسمت سوم

در قسمت اول و دوم آموزش کار با ابزار 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 در تجزیه و تحلیل های خود کمک کند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *