آموزش جامع ابزار Feroxbuster
Feroxbusterیک ابزار قدرتمند است که برای شناسایی دایرکتوریها (پوشهها) و فایلها روی سرورهای وب با استفاده از تکنیکهای حمله Brute-force طراحی شده است. این ابزار معمولاً در تست نفوذ و ارزیابیهای امنیتی برای شناسایی مسیرها و منابع پنهانشده مورد استفاده قرار میگیرد. در اینجا قصد داریم درباره وظایف و کارهای مختلفی که با استفاده از Feroxbuster میتوان انجام داد، صحبت کنیم.
فهرست مطالب
راهاندازی محیط آزمایش
نصب
حالت پیشفرض
هدایتها (ریدایرکتها)
پسوندها
خروجی نتایج
عامل کاربر (User-Agent مرورگر یا ابزار)
فیلتر کردن بر اساس کد وضعیت HTTP
حالت بیصدا (عدم نمایش خروجیهای غیرضروری)
کنترل تعداد تردها (همزمانی اجرا)
استفاده از لیست کلمات سفارشی
غیرفعال کردن بازگشتپذیری (عدم پیمایش زیرمسیرها)
محدود کردن عمق بازگشتپذیری
اجبار به بازگشتپذیری
فیلتر کردن براساس اندازه کاراکترها
فیلتر کردن براساس تعداد کلمات
فیلتر کردن براساس تعداد خطوط
فیلتر کردن بر اساس کد وضعیت با استفاده از لیست رد (deny list)
فیلتر کردن بر اساس کد وضعیت با استفاده از لیست مجاز (allow list)
تولید عامل کاربر تصادفی
متدهای HTTP (مانند GET، POST و …)
هدرهای سفارشی
کوکیها
فزودن اسلش (/) به انتهای URL
ضبط درخواستها در ابزار Burp Suite
خواندن اهداف از یک فایل لیست
ادامه دادن از آخرین وضعیت
دنبال کردن ریدایرکتها
زمان انتظار (Timeout)
مقایسه Feroxbuster با سایر ابزارها
نتیجهگیری
راهاندازی آزمایشگاه
ماشین هدف با آدرس ۱۹۲٫۱۶۸٫۱٫۴، و ماشین مهاجم با آدرس ۱۹۲٫۱۶۸٫۱٫۳۱ تنظیم شدهاند. Feroxbuster بر روی ماشین مهاجم نصب شده و عملیات تست نفوذ از آن انجام میگردد.
بعد از اینکه روی ماشین هدف یک وبسرور راهاندازی کردیم، میتوانیم فرایند شناسایی (Enumeration) رو در سیستم Kali Linux، پس از نصب Feroxbuster، شروع کنیم.
نصب Feroxbuster
برای نصب این ابزار در کالی لینوکس از دستور زیر استفاده میشود:
apt install feroxbuster
حالت پیشفرض
بعد از اتمام نصب، میتوانیم بخش شناسایی یا Enumeration رو ادامه بدهیم. برای انجام یک Brute Force پیشفرض روی دایرکتوریها، میتوانیم از دستور زیر استفاده کنیم:
feroxbuster -u http://192.168.1.4
در حالت پیشفرض، فایل wordlist بهنام raft-medium-directories.txt استفاده میشود (فایل شامل لیستی از نام دایرکتوریها برای تست می باشد). برای دریافت خروجی خلوتتر (کمحرفتر) میتوانیم از سویچ –silent استفاده کنیم تا اطلاعات غیرضروری نمایش داده نشود.
feroxbuster -u http://192.168.1.4 --silent
هدایت (Redirect)
برای اینکه Feroxbuster بتواند Brute Force دایرکتوریها را روی URL جدیدی که از طریق ریدایرکت به آن منتقل شده ادامه دهد، میتوانیم از گزینهی -r یا –redirect استفاده کنیم. مثلاً اگر http://192.168.1.4 به http://192.168.1.4/newpath ریدایرکت کند، Feroxbuster بهصورت خودکار این مسیر جدید را دنبال میکند و روی آن اسکن را ادامه میدهد.
feroxbuster -u http://192.168.1.4 -r
پسوند فایلها
برای انجام Brute Force مخصوص فایلهایی با پسوند خاص، میتوان از گزینهی -x یا –extensions استفاده کرد.
feroxbuster -u http://192.168.1.4 -x php,txt --silent
خروجی گرفتن از نتایج
اگر بخواهیم خروجی اسکن را ذخیره کنیم، از گزینهی –output استفاده کرده و نام فایل را مشخص میکنیم.
feroxbuster -u http://192.168.1.4 --output results.txt
استفاده از User-Agent دلخواه
برای تعیین User-Agent سفارشی در درخواستها به سرور، میتوان از گزینهی -a یا –user-agent استفاده کرد. بهصورت پیشفرض، Feroxbuster از feroxbuster/<نسخه> بهعنوان User-Agent استفاده میکند.
feroxbuster -u http://192.168.1.4 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
فیلتر کردن کد وضعیت HTTP
گاهی اوقات نیاز داریم که بعضی از کدهای وضعیت (HTTP Status Code) را نادیده بگیریم؛ برای این کار میتونیم از گزینهی -C یا –filter-status استفاده کنیم تا پاسخهایی با آن کدها نمایش داده نشوند. اگر بخوایم فقط یک یا چند کد خاص رو نشون بده، میتونیم از -s یا –status-codes استفاده کنیم.
feroxbuster -u http://192.168.1.4 -C 403,404
حالت بیصدا (Quiet)
برای نمایش خروجی بدون نوار پیشرفت یا بنر ابتدایی برنامه، میتوانیم از گزینهی -q یا –quiet استفاده کنیم.
feroxbuster -u http://192.168.1.4 -q
کنترل Threads
برای کنترل تعداد Threads همزمان (که همزمان درخواست میفرستند)، میتوانیم از -t یا –threads استفاده کنیم. مقدار پیشفرض ۵۰ تا هست.
feroxbuster -u http://192.168.1.4 -t 20
لیست کلمات سفارشی
برای استفاده از لیست کلمات (wordlist) دلخواه، میتوانیم از -w یا –wordlist استفاده کنیم و مسیر فایل لیست رو وارد کنیم. در اینجا فایل common.txt استفاده شده است.
feroxbuster -u http://192.168.1.4 -w /usr/share/wordlists/dirb/common.txt
غیرفعال کردن اسکن بازگشتی
برای اینکه فقط دایرکتوریهای سطح اول اسکن شوند و وارد پوشههای داخلی نشوند، میتوانیم از -n یا –no-recursion برای غیرفعالکردن اسکن بازگشتی استفاده کنیم.
feroxbuster -u http://192.168.1.4 -n
محدود کردن عمق اسکن بازگشتی
برای تعیین حداکثر عمق در اسکن بازگشتی (تا چند سطح پایینتر در دایرکتوریها ادامه پیدا کند)، میتوانیم از فلگ -L یا –scan-limit استفاده کنیم.
feroxbuster -u http://192.168.1.4 -L 4
اجبار به استفاده از اسکن بازگشتی
برای اینکه ابزار حتماً از اسکن بازگشتی استفاده کند (حتی اگر مسیرهای پیدا شده مشکوک یا غیرمعتبر باشند)، از –force-recursion استفاده میکنیم.
feroxbuster -u http://192.168.1.4 --force-recursion
فیلتر بر اساس اندازه پاسخ (تعداد کاراکتر)
برای اینکه پاسخهایی با اندازه خاص (برحسب تعداد کاراکتر) رو فیلتر کنیم، از -S استفاده میکنیم.
feroxbuster -u http://192.168.1.4 -q feroxbuster -u http://192.168.1.4 -q -S 285,286,283,289
فیلتر بر اساس تعداد کلمات پاسخ
برای فیلتر کردن نتایج بر اساس تعداد کلمات موجود در پاسخ، از -W یا –filter-words استفاده میکنیم.
feroxbuster -u http://192.168.1.4 -q feroxbuster -u http://192.168.1.4 -q -W 33
فیلتر بر اساس تعداد خطوط پاسخ
برای فیلتر کردن نتایج بر اساس تعداد خطوط موجود در پاسخ، از -N یا –filter-lines استفاده میکنیم.
feroxbuster -u http://192.168.1.4 -q feroxbuster -u http://192.168.1.4 -q -N 9
فیلتر وضعیت HTTP با لیست ممنوعه
برای فیلتر کردن نتایج بر اساس کدهای وضعیت HTTP (لیست ممنوعه)، از –filter-status استفاده میکنیم.
feroxbuster -u http://192.168.1.4 -q feroxbuster -u http://192.168.1.4 -q --filter-status 404
فیلتر با لیست مجاز (Allow List)
برای اینکه فقط نتایجی با کد وضعیت خاصی (مانند ۲۰۰ یا ۳۰۱) نمایش داده شوند، از فلگ –status-codes استفاده میکنیم.
feroxbuster -u http://192.168.1.4 -q feroxbuster -u http://192.168.1.4 -q --status-codes 200,301
تولید User-Agent تصادفی
برای اینکه در هر درخواست یک User-Agent تصادفی استفاده شود، از -A استفاده میکنیم. در اینجا از –burp هم استفاده شده تا درخواستها رو تو Burp ببینیم.
feroxbuster -u http://192.168.1.4 -A --burp
متد های HTTP
برای مشخص کردن روش ارسال درخواست (مثل POST یا PUT)، از فلگ -m استفاده میکنیم. پیشفرض Feroxbuster متد GET هست.
feroxbuster -u http://192.168.1.4 -m POST
هدر دلخواه در درخواستها
برای تعریف یک هدر سفارشی در درخواست، از -H استفاده میکنیم. مثلاً برای تعیین نوع محتوا یا توکن دسترسی.
feroxbuster -u http://192.168.1.4 -H 'Content-Type: application/x-www-form-urlencoded' --burp -q
استفاده از کوکی در درخواستها
برای استفاده از یک مقدار کوکی مشخص در همهی درخواستها، از فلگ –cookies یا -b استفاده میکنیم.
feroxbuster -u http://192.168.1.4 --cookies PHPSESSID=t54ij15l5d51i2tc7j1k1tu4p4 --burp -q
اضافهکردن اسلش (/) به آخر مسیرها
برای اینکه در انتهای هر مسیر یک اسلش / اضافه بشه (مثلاً /admin/)، از فلگ -f استفاده میکنیم.
feroxbuster -u http://192.168.1.4 -f
مشاهده درخواستها در Burp Suite
برای دیدن درخواستها در Burp Suite، از فلگ –burp استفاده میکنیم.
feroxbuster -u http://192.168.1.4 --burp
خواندن هدف از لیست
برای انجام اسکن روی اهدافی که در یک لیست قرار دارن، میتونیم از دستور زیر استفاده کنیم:
cat target.txt cat target.txt| feroxbuster --stdin -q
ادامه اسکن از وضعیت قبلی
اگر بخواهیم اسکن رو از آخرین وضعیت ادامه بدهیم، میتوانیم از گزینه –resume-from استفاده کنیم و فایل .state رو مشخص کنیم. گاهی ممکن است اسکن رو متوقف کنیم، Feroxbuster نتایج رو در یک فایل ذخیره میکند.
feroxbuster -u http://192.168.1.4 -q feroxbuster --resume-from ferox-http_192_168_1_4-1723370176.state -q
دنبال کردن تغییر مسیر
در طول اسکن، اگه درخواستها باعث ریدایرکت (تغییر مسیر) شوند، میتوانیم مشخص کنیم که آیا کلاینت باید تغییر کند یا خیر، با استفاده از گزینه -r.
feroxbuster -u http://192.168.1.4 -r
Timeout
برای تنظیم مدت زمانی که Feroxbuster منتظر پاسخ از سرور میماند، میتوانیم از گزینه -T استفاده کنیم. به طور پیشفرض این زمان ۷ ثانیه است ولی میتوانیم تغییر دهیم.
feroxbuster -u http://192.168.1.4
بدون تنظیم زمان تایماوت، مقدار پیشفرض (۷ ثانیه) استفاده میشود.
feroxbuster -u http://192.168.1.4 -T 5
مقایسه ابزار Feroxbuster با سایر ابزارهای مشابه
- Feroxbuster: ویژگیهای پیشرفتهای مثل فیلتر پاسخها، یکپارچهسازی با Burp Suite و قابلیت شخصیسازی بالا دارد. برای کسانی که کنترل دقیق روی اسکن نیاز دارند بسیار مناسب می باشد.
- DirBuster: رابط گرافیکی و کاربرپسندی دارد، ولی به اندازه Feroxbuster سریع و انعطافپذیر نیست.
- Gobuster: خیلی سریع می باشد ولی قابلیتهای پیشرفتهی کمی دارد.
- ffuf: عملکرد بالا و فیلترهای زیادی دارد ولی پیکربندی پیچیده ای دارد.
نتیجهگیری
اگه دنبال کنترل دقیق، فیلترهای پیشرفته و اتصال به ابزارهایی مثل Burp هستی، Feroxbuster انتخاب بسیار مناسبی می باشد.