در قسمت اول با برخی از دستورات پرکاربرد ابزار wfuzz آشنا شدیم و تا حدودی نحوه کار با این ابزار را فراگرفتیم . در این قسمت در ادامه مباحث میخواهیم با فیلترهای بیشتر این ابزار قدرتمند آشنا شویم.
بررسی Basic wordlist filters
آرگومانهای فرعی خاصی وجود دارند که میتوان قبل از آنها فیلترz- یا w- قرار داد تا امکانات بیشتری به ما دهند. این فیلترها عبارتند از:
zP- : آرگومان هایی برای payload مشخص شده
zD- : پارامتر پیش فرض برای payload مشخص شده
zE- : مشخص کردن یک encoder برای payload مشخص شده
بنابراین، برای مشخص کردن فهرست کلمات با بارگذاری، میتوانیم این کار را به این صورت انجام دهیم:
wfuzz -z file --zD wordlist/general/common.txt --sc 200,301 http://testphp.vulnweb.com/FUZZ
برای مخفی کردن کد پاسخ HTTP 404، می توان همان کد را به صورت زیر بدست آورد:
wfuzz -z file --zD wordlist/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ
بررسی Double fuzzing :
درست مانند یک پارامتر در یک payload با استفاده از کلمه کلیدی “FUZZ” فاز کردن چندگانه نیز با تعیین کلمات کلیدی امکان پذیر است:
FUZ2Z – ۲nd parameter
FUZ3Z – ۳rd parameter
FUZ4Z – ۴th parameter
و هر پارامتر را می توان به لیست کلمات اختصاص داد. اولین “w-” مخفف اولین FUZZ است. “w-” دوم برای FUZ2Z دوم و غیره صادق است.
wfuzz -w wordlist/general/common.txt -w wordlist/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ/FUZ2Z
بررسی Login bruteforce :
پاسخ های HTTP را می توان با استفاده از wfuzz به صورت brute-forced کرد. به عنوان مثال، وب سایت testphp یک درخواست POST به backend ارسال می کند و “uname” و “pass” را به عنوان آرگومان به صفحه userinfo.php ارسال می کند.
همین کار را می توان با استفاده از wfuzz به صورت زیر پیاده سازی کرد :
آرگومان d- داده های Post را که باید همراه با درخواست ارسال شوند را مشخص می کند
wfuzz -z file,wordlist/others/common_pass.txt -d "uname=FUZZ&pass=FUZZ" --hc 302 http://testphp.vulnweb.com/userinfo.php
همانطور که می بینید، اطلاعات صحیح “test-test” پیدا شده است. ما از یک فایل مشترک برای نام کاربری و رمز عبور استفاده کردیم. همین کار را می توان با ارائه فایل های مختلف برای نام های کاربری و رمزهای عبور مانند موارد زیر انجام داد:
wfuzz -z file,users.txt -z file,pass.txt --sc 200 -d "uname=FUZZ&pass=FUZ2Z" http://testphp.vulnweb.com/userinfo.php
بررسی Cookie fuzzing :
برای ارسال یک کوکی سفارشی در طول یک درخواست به دایرکتوری های فاز مختلف، می توانیم از پلاگین “b-” استفاده کنیم. این یک کوکی به درخواست HTTP ارسال شده اضافه می کند.
سناریو به شکل زیر می باشد :
بررسی Cookie poisoning
بررسی Session hijacking
بررسی Privilege Escalation
wfuzz -z file,wordlist/general/common.txt -b cookie=secureadmin -b cookie2=value2 --hc 404 http://testphp.vulnweb.com/FUZZ
در سناریوی فوق، ما ۲ کوکی استاتیک را در چندین دایرکتوری اضافه کرده ایم. اکنون، ما همچنین میتوانیم پارامتر کوکی را نیز مانند این حالت فازی کنیم:
wfuzz -z file,wordlist/general/common.txt -b cookie=FUZZ http://testphp.vulnweb.com/
بررسی Header fuzzing :
هدر HTTP را می توان در درخواستی که توسط wfuzz ارسال می شود اضافه کرد. هدرهای HTTP می توانند رفتار کل یک صفحه وب را تغییر دهند. هدرهای سفارشی را می توان در یک درخواست خروجی فاز تزریق کرد
سناریو به شکل زیر می باشد :
بررسی HTTP Header Injections
بررسی SQL Injections
بررسی Host Header Injections
wfuzz -z file,wordlist/general/common.txt -H "X-Forwarded-By: 127.0.0.1" -H "User-Agent: Firefox" http://testphp.vulnweb.com/FUZZ
گزینه های HTTP fuzzing
روشهای مختلفی برای درخواست/گزینههای HTTP وجود دارد که میتوان آنها را با استفاده از سویئیچ «X-» مشخص کرد. در مثال زیر گزینه های زیر را در یک فایل متنی به نام options.txt قرار داده ایم
اکثر درخواست های HTTP شامل موارد زیر را می توان تست کرد :
GET
HEAD
POST
PUT
DELETE
CONNECT
OPTIONS
TRACE
PATCH
wfuzz -c -w options.txt --sc 200 -X FUZZ “http://testphp.vulnweb.com”
همانطور که می بینید، سه گزینه معتبر یک کد پاسخ ۲۰۰ را برگرداندند.
همین می تواند با استفاده از payload “فهرست” به صورت درون خطی وارد شود مانند:
wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/
Fuzzing از طریق Proxy
Wfuzz همچنین می تواند درخواست ها را از طریق یک پروکسی هدایت کند. در مثال زیر، یک پروکسی Burp در پورت ۸۰۸۰ فعال است و همانطور که می بینید، درخواست در رهگیری burp متوقف می شود.
wfuzz -z file,wordlist/general/common.txt -p localhost:8080 http://testphp.vulnweb.com/FUZZ
همین کار را می توان با پروکسی SOCKS نیز به دست آورد:
wfuzz -z file,wordlist/general/common.txt -p localhost:9500:SOCKS5 http://testphp.vulnweb.com/FUZZ