فازینگ در بستر برنامهی وب چیست؟
فازینگ در معنای عام یعنی تغذیهی یک سامانه با ورودیهای فراوان و مشاهدهی رفتار غیرعادی. در تست نفوذ وب، این تعریف شکل مشخصتری میگیرد: شما یک نقطه در درخواست HTTP را نشانهگذاری میکنید، هزاران مقدار از یک واژهنامه در آن جای میدهید، و پاسخها را بر اساس تفاوت دستهبندی میکنید.
تفاوتش با اسکن آسیبپذیری مهم است: اسکنری مثل Nuclei دنبال الگوی شناختهشده میگردد و میداند چه چیزی «یافته» است؛ فازر چنین دانشی ندارد و فقط تفاوت را نشان میدهد. فازینگ ابزار کشف است، نه تشخیص، و خروجی خامش بدون قضاوت انسانی ارزش گزارششدن ندارد.
نقطهای که فاز میشود میتواند هر جای درخواست باشد — نکتهای که بیشتر مطالب فارسی از قلم میاندازند: مسیر URL، نام و مقدار پارامتر، بدنهی POST، کوکی، هدر سفارشی و حتی هدر Host برای کشف میزبانهای مجازی. در ffuf همهی اینها با قرار دادن کلیدواژهی FUZZ در همان موقعیت انجام میشود.
دو کاربرد اصلی: کشف محتوا و فاز کردن پارامتر
کشف محتوا یعنی یافتن مسیرها و فایلهایی که هیچجا به آنها لینک نشده: پنل مدیریت فراموششده، config.php.bak، مخزن .git رهاشده، .env، مستندات Swagger داخلی و نسخههای قدیمی API — همان چیزی که راهنمای آزمون OWASP ذیل فایلهای قدیمی، پشتیبان و بدون ارجاع میسنجد.
ffuf -u https://target.example/FUZZ \
-w /path/SecLists/Discovery/Web-Content/raft-medium-directories.txt \
-mc all -fc 404 -ac -recursion -recursion-depth 2فاز کردن پارامتر دو حالت دارد. اول کشف نام پارامترهای پنهان مثل debug، template یا redirect که در هیچ فرمی دیده نمیشوند و اغلب کمآزمودهترین بخش برنامهاند. دوم فاز کردن مقدار پارامتر برای یافتن رفتار متفاوت — مبنای کشف IDOR روی شناسههای ترتیبی، LFI روی پارامتر مسیر، و شمارش حسابها روی فرم ورود.
ffuf -u "https://target.example/api/item?FUZZ=1" \
-w params.txt -fs 1234
استراتژی واژهنامه
کیفیت فازینگ بیش از هر چیز به واژهنامه وابسته است. مجموعهی مرجع SecLists است (مجوز MIT، بنیانگذار Daniel Miessler، نگهدارندهی فعال از ۲۰۲۱ ItsIgnacioPortal) با پوشههایی مثل Discovery/، Passwords/، Fuzzing/ و Payloads/، و دستهای تازه برای آزمون مدلهای زبانی.
سه نکتهی عملی که در کار واقعی تفاوت میسازند:
- انتخاب فهرست مهمتر از اندازهی آن است. نقطهی شروع متعارف، فهرستهای
raft-*وdirectory-list-2.3-medium.txtدر مسیرDiscovery/Web-Content/است. فهرست پرارجاعِcommon.txtکوچک و کمبازده است. - واژهنامه را به هدف نزدیک کنید. پسوند فایل را با پشتهی واقعی تطبیق دهید (
-e .php,.bakبرای PHP معنا دارد، برای یک برنامهی Go تقریباً هیچ) و فهرست اختصاصی از نام محصولات و اصطلاحات همان سازمان بسازید که در مرحلهی شناسایی جمع شده است. - مکملها: واژهنامههای Assetnote (تولیدشده از خزش واقعی وب) و PayloadsAllTheThings که مجموعهی پیلود است، نه واژهنامه.
یک هشدار عملیاتی: مخزن SecLists بزرگ است، کلون کاملش زمانبر است و — همانطور که خودِ مخزن اعلام کرده — احتمالاً هشدار مثبت کاذب آنتیویروس تولید میکند.
فیلتر، کالیبراسیون و مثبت کاذب
مشکل اصلی فازینگ، حجم نتیجهی بیارزش است. برنامههای مدرن اغلب برای مسیر ناموجود هم پاسخ 200 با صفحهی خطای زیبا برمیگردانند — پدیدهی «۴۰۴ نرم» که فیلتر ساده بر اساس کد وضعیت را بیاثر میکند.
ابزار حل مسئله در ffuf مجموعهی فیلترهاست: -fc (کد وضعیت)، -fs (اندازهی پاسخ)، -fw (تعداد کلمات)، -fl (تعداد خطوط) و -fr (عبارت منظم در بدنه)؛ معادل «فقط اینها را نشان بده» هم وجود دارد (-mc، -ms). سویچ -ac کالیبراسیون خودکار را فعال میکند: ابزار چند مسیر قطعاً ناموجود میفرستد، رفتار پاسخ منفی را یاد میگیرد و همان الگو را فیلتر میکند.
روال حرفهای این است:
- یک اجرای کوتاه با واژهنامهی کوچک برای شناخت رفتار پایه، سپس تنظیم فیلترها و اجرای اصلی.
- بازگشت (recursion) با عمق محدود — عمق ۲ یا ۳ معمولاً کافی است؛ عمق نامحدود روی سایتی با مسیرهای پویا هرگز تمام نمیشود.
- راستیآزمایی دستی هر یافته. نتیجهی فازر تا وقتی در مرورگر یا Repeater باز نشده، یافته نیست.
فازینگ ذاتاً پرترافیک است؛ نرخ (-rate) و تعداد رشتهها (-t) را متناسب با محیط تنظیم کنید. اجرای بیمحابا روی محیط عملیاتی میتواند به اختلال سرویس منجر شود و سقف نرخ باید از پیش در قرارداد توافق شده باشد.
ابزارها
| ابزار | نقطهی قوت | وضعیت |
|---|---|---|
| ffuf | سریع، انعطافپذیر، کلیدواژهی FUZZ در هر موقعیت درخواست | نسخهی v2.1.0، سپتامبر ۲۰۲۳ |
| feroxbuster | نوشتهشده با Rust؛ بهصورت پیشفرض بازگشتی است — تمایز اصلیاش با ffuf | نسخهی v2.13.1، دسامبر ۲۰۲۵ |
| dirsearch | پایتون؛ تشخیص خودکار طرح آدرس، خروجی SQLite، ذخیره و ازسرگیری اسکن | نسخهی v0.4.3 |
| Burp Intruder | یکپارچه با جریان کار دستی؛ مناسب مجموعههای کوچک | در نسخهی Community بهشدت محدود شده است |
دو نکتهی صادقانه. اول: آخرین نسخهی برچسبخوردهی ffuf همان v2.1.0 از سپتامبر ۲۰۲۳ است؛ مخزن هنوز فعال است و ffuf استاندارد عملی این حوزه مانده، اما «مدام بهروزرسانی میشود» توصیف درستی نیست — پایدار و پرکاربرد است ولی چرخهی انتشارش متوقف شده. دوم: نسخهی رایگان Burp Suite فقط نمونهی نمایشی Intruder را دارد که با محدودیت شدید نرخ عرضه میشود و برای فازینگ واقعی به کار نمیآید.
فازینگ پروتکل و فازینگ پوششمحور: یک رشتهی دیگر
آنچه تا اینجا گفته شد، فازینگ مبتنی بر واژهنامه در سطح HTTP است. رشتهی دیگری هم وجود دارد: فازینگ پوششمحور روی کد بومی. در این رویکرد باینری هدف با ابزاردقیق کامپایل میشود، فازر ورودیها را جهش میدهد و از مسیرهای اجرایی تازه بازخورد میگیرد، و خطاها با تحلیلگرهای زمان اجرا (مثل AddressSanitizer) شکار میشوند؛ AFL++ و libFuzzer شناختهشدهترین نمایندگان آناند.
کاربرد اصلیاش یافتن خطاهای مدیریت حافظه در C/C++ و تجزیهکنندههای تصویر، فونت، PDF و پروتکلهای باینری است. ارتباطش با وب غیرمستقیم اما واقعی است: بسیاری از برنامهها فایل آپلودی را به یک کتابخانهی بومی میسپارند.
«فازینگ یعنی اجرای ffuf با بزرگترین واژهنامهی ممکن.» فازینگ بدون کالیبراسیون و فیلتر، هزاران مثبت کاذب و اطمینان کاذب تولید میکند. ضمناً فازینگ آسیبپذیری «کشف» نمیکند؛ فقط تفاوت رفتار را نشان میدهد و آنچه یافته را میسازد تفسیر و راستیآزمایی دستی است. جای بازبینی کد و آزمون دستی منطق کسبوکار را هم نمیگیرد.
پرسشهای متداول
تفاوت فازینگ با اسکن آسیبپذیری چیست؟
اسکنر دنبال الگوی از پیش تعریفشده میگردد و میداند چه چیزی یافته است؛ فازر فقط ورودیهای فراوان میفرستد و تفاوت پاسخها را نشان میدهد. یعنی فازینگ ابزار کشف است و تفسیر خروجی با تستر. در عمل این دو مکملاند: فازینگ سطح حمله را بزرگتر میکند و اسکنر روی آن سطح، بررسیهای شناختهشده را اجرا میکند.
بهترین واژهنامه برای کشف مسیر کدام است؟
نقطهی شروع متعارف، فهرستهای raft-* و directory-list-2.3-medium.txt از پوشهی Discovery/Web-Content/ در SecLists است؛ common.txt کوچک و کمبازده است. مهمتر از اندازه، تطبیق واژهنامه با پشتهی هدف و ساختن فهرست اختصاصی از نامهای همان سازمان است.
آیا ffuf هنوز بهروزرسانی میشود؟
آخرین نسخهی برچسبخوردهی ffuf نسخهی v2.1.0 از سپتامبر ۲۰۲۳ است. مخزن همچنان کامیت و فعالیت دارد و ffuf در عمل استاندارد این حوزه باقی مانده، اما ادعای «مدام بهروزرسانی میشود» درست نیست. اگر بازگشت خودکار و نسخهی تازهتر برایتان مهم است، feroxbuster گزینهی فعالتری است.
آیا فازینگ میتواند به سایت آسیب بزند؟
بله، اگر بیمحابا اجرا شود. دهها هزار درخواست در دقیقه میتواند منابع سرور را اشباع کند، جدولهای لاگ را پر کند یا فرایندهای پسزمینهی پرهزینه را فعال کند. در یک تست حرفهای، سقف نرخ و پنجرهی زمانی اجرا از پیش در قرارداد توافق میشود و اجرا روی محیط عملیاتی با احتیاط انجام میگیرد.