العودة إلى التحديثات
New releaseJul 28, 2026

ffuf v2.2.1

أداة فازينغ ويب عالية الأداء لاكتشاف المحتوى، وتعداد المضيفات الافتراضية، وفازينغ المعاملات (الباراميترات). تدعم الفحص التكراري (الاسترجاعي)، وأوضاع قوائم الكلمات المتعددة، وضبط عوامل التصفية/المطابقة في الوقت الفعلي.

مشاركة

تميمة ffuf

ffuf - التخمين بشكل أسرع أيها الأحمق

مُخمّن ويب سريع مكتوب بلغة Go.

التثبيت

  • حمّل نسخة مصمّمة مسبقاً من صفحة الإصدارات، فك الضغط وشغّل!

    أو

  • إذا كنت على Windows مع Scoop، يمكن تثبيت ffuf بـ: scoop install ffuf

    أو

  • إذا كنت على Windows مع Winget، يمكن تثبيت ffuf بـ: winget install ffuf.ffuf

    أو

  • إذا كنت على macOS مع homebrew، يمكن تثبيت ffuf بـ: brew install ffuf

    أو

  • إذا كان لديك مترجم Go حديث: go install github.com/ffuf/ffuf/v2@latest (نفس الأمر يعمل للتحديث)

    أو

  • git clone https://github.com/ffuf/ffuf ; cd ffuf ; go get ; go build

  1. يعتمد ffuf على Go 1.20 أو أحدث.
  2. بناء Go من المستودع يُظهر git-<تاريخ>-<تجزئة> بدلاً من الوسم. البناء المحلي ليس إصداراً رسمياً حتى لو كنت على وسم، ومعلومات البناء المضمنة من Go تعطينا التجزئة ولكن ليس اسم الوسم — لذلك نعرض التجزئة الدقيقة التي بُني منها. النسخ الرسمية ذات الإصدارات هي الموجودة في صفحة الإصدارات.

أمثلة الاستخدام

أمثلة الاستخدام أدناه تُظهر أبسط المهام التي يمكنك إنجازها باستخدام ffuf.

التوثيق الأكثر تفصيلاً الذي يغطي العديد من الميزات مع الكثير من الأمثلة متاح في ويكي ffuf على https://github.com/ffuf/ffuf/wiki

للحصول على توثيق أكثر شمولاً مع أمثلة واقعية ونصائح، تأكد من الاطلاع على الدليل الرائع: "كل ما تحتاج معرفته عن FFUF" بقلم Michael Skelton (@codingo).

يمكنك أيضاً التدرب على فحوصات ffuf ضد مضيف حي مع دروس وحالات استخدام مختلفة إما محلياً باستخدام حاوية docker https://github.com/adamtlangley/ffufme أو ضد النسخة المستضافة على http://ffuf.me التي أنشأها Adam Langley @adamtlangley.

اكتشاف الدليل النموذجي

asciicast

باستخدام الكلمة المفتاحية FUZZ في نهاية URL (-u):

ffuf -w /path/to/wordlist -u https://target/FUZZ

اكتشاف المضيف الافتراضي (بدون سجلات DNS)

asciicast

بافتراض أن حجم استجابة المضيف الافتراضي هو 4242 بايت، يمكننا تصفية جميع الاستجابات بهذا الحجم (-fs 4242) أثناء تخمين الرأس Host -:

ffuf -w /path/to/vhost/wordlist -u https://target -H "Host: FUZZ" -fs 4242

تخمين معاملات GET

تخمين اسم معامل GET مشابه جداً لاكتشاف الدليل، ويعمل بتعريف الكلمة المفتاحية FUZZ كجزء من URL. يفترض هذا أيضاً حجم استجابة 4242 بايت لاسم معامل GET غير صالح.

ffuf -w /path/to/paramnames.txt -u https://target/script.php?FUZZ=test_value -fs 4242

إذا كان اسم المعامل معروفاً، يمكن تخمين القيم بنفس الطريقة. يفترض هذا المثال أن قيمة المعامل الخاطئة تعيد رمز استجابة HTTP 401.

ffuf -w /path/to/values.txt -u https://target/script.php?valid_name=FUZZ -fc 401

تخمين بيانات POST

هذه عملية مباشرة للغاية، باستخدام الكلمة المفتاحية FUZZ مرة أخرى. هذا المثال يخمّن جزءاً فقط من طلب POST. نقوم مرة أخرى بتصفية استجابات 401.

ffuf -w /path/to/postdata.txt -X POST -d "username=admin\&password=FUZZ" -u https://target/login.php -fc 401

الحد الأقصى لوقت التنفيذ

إذا كنت لا تريد أن يعمل ffuf إلى أجل غير مسمى، يمكنك استخدام -maxtime. هذا يوقف العملية بأكملها بعد وقت معين (بالثواني).

ffuf -w /path/to/wordlist -u https://target/FUZZ -maxtime 60

عند العمل مع التكرار، يمكنك التحكم في maxtime لكل مهمة باستخدام -maxtime-job. هذا يوقف المهمة الحالية بعد وقت معين (بالثواني) ويستمر مع التالية. يتم إنشاء مهام جديدة عندما تكتشف وظيفة التكرار دليلاً فرعياً.

ffuf -w /path/to/wordlist -u https://target/FUZZ -maxtime-job 60 -recursion -recursion-depth 2

من الممكن أيضاً الجمع بين العلمين للحد من أقصى وقت تنفيذ لكل مهمة وكذلك وقت التنفيذ الكلي. إذا كنت لا تستخدم التكرار، فإن كلا العلمين يتصرفان بنفس الطريقة.

استخدام معدّل خارجي لإنتاج حالات الاختبار

في هذا المثال، سنخمّن بيانات JSON التي تُرسل عبر POST. يستخدم Radamsa كمعدّل.

عند استخدام --input-cmd، سيعرض ffuf التطابقات كموضعها. ستكون قيمة هذا الموضع متاحة للمستدعى كمتغير بيئة $FFUF_NUM. سنستخدم قيمة الموضع هذه كبذرة للمعدّل. الملفان example1.txt و example2.txt يحتويان على حمولات JSON صالحة. نطابق جميع الاستجابات، ولكن نفلتر رمز الاستجابة 400 - طلب سيئ:

ffuf --input-cmd 'radamsa --seed $FFUF_NUM example1.txt example2.txt' -H "Content-Type: application/json" -X POST -u https://ffuf.io.fi/FUZZ -mc all -fc 400

بالطبع ليس من الفعال استدعاء المعدّل لكل حمولة، لذلك يمكننا أيضاً توليد الحمولات مسبقاً، مع الاستمرار في استخدام Radamsa كمثال:

# توليد 1000 حمولة نموذجية
radamsa -n 1000 -o %n.txt example1.txt example2.txt

# ينتج عن ذلك ملفات 1.txt ... 1000.txt
# الآن يمكننا قراءة بيانات الحمولة في حلقة من ملف لـ ffuf

ffuf --input-cmd 'cat $FFUF_NUM.txt' -H "Content-Type: application/json" -X POST -u https://ffuf.io.fi/ -mc all -fc 400

ملفات الإعدادات

عند تشغيل ffuf، يتحقق أولاً مما إذا كان ملف إعدادات افتراضي موجوداً. المسار الافتراضي لملف ffufrc هو $XDG_CONFIG_HOME/ffuf/ffufrc. يمكنك إعداد خيار واحد أو أكثر في هذا الملف، وسيتم تطبيقها على كل مهمة ffuf لاحقة. مثال على ملف ffufrc يمكن العثور عليه هنا.

وصف أكثر تفصيلاً عن مواقع ملفات الإعدادات موجود في الويكي: https://github.com/ffuf/ffuf/wiki/Configuration

خيارات الإعداد المقدمة من سطر الأوامر تتجاوز تلك المحملة من ملف ffufrc الافتراضي. ملاحظة: لا ينطبق هذا على أعلام CLI التي يمكن توفيرها أكثر من مرة. أحد هذه الأمثلة هو العلم -H (الرأس). في هذه الحالة، سيتم إلحاق قيم -H المقدمة في سطر الأوامر بتلك الموجودة في ملف الإعداد بدلاً من ذلك.

بالإضافة إلى ذلك، في حالة رغبتك في استخدام مجموعة من ملفات الإعدادات لحالات استخدام مختلفة، يمكنك القيام بذلك عن طريق تعريف مسار ملف الإعداد باستخدام علم سطر الأوامر -config الذي يأخذ مسار ملف الإعداد كمعامل له.

الاستخدام

لتحديد حالة الاختبار لـ ffuf، استخدم الكلمة المفتاحية FUZZ في أي مكان في URL (-u)، أو الرؤوس (-H)، أو بيانات POST (-d).

Fuzz Faster U Fool - v2.1.0

الفئات