
مفاجئ ويب سريع مكتوب بلغة Go

مُخمّن ويب سريع مكتوب بلغة 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
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.
باستخدام الكلمة المفتاحية FUZZ في نهاية URL (-u):
ffuf -w /path/to/wordlist -u https://target/FUZZ
بافتراض أن حجم استجابة المضيف الافتراضي هو 4242 بايت، يمكننا تصفية جميع الاستجابات بهذا الحجم (-fs 4242) أثناء تخمين الرأس Host -:
ffuf -w /path/to/vhost/wordlist -u https://target -H "Host: FUZZ" -fs 4242
تخمين اسم معامل 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
هذه عملية مباشرة للغاية، باستخدام الكلمة المفتاحية 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