
ffuf v2.2.1
Go में लिखा गया तेज़ वेब फ़ज़र

ffuf - Fuzz Faster U Fool
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
- Ffuf को Go 1.20 या उससे नए संस्करण की आवश्यकता है।
- किसी चेकआउट से किया गया go build टैग के बजाय
git-<date>-<commit>दिखाता है। स्थानीय बिल्ड आधिकारिक रिलीज़ नहीं होता, भले ही आप किसी टैग पर हों, और 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 ने बनाया है।
सामान्य निर्देशिका खोज
URL के अंत में FUZZ कीवर्ड का उपयोग करके (-u):
ffuf -w /path/to/wordlist -u https://target/FUZZ
वर्चुअल होस्ट खोज (DNS रिकॉर्ड के बिना)
यह मानते हुए कि डिफ़ॉल्ट वर्चुअलहोस्ट प्रतिक्रिया का आकार 4242 बाइट्स है, हम Host - हेडर को फ़ज़ करते समय उस आकार की सभी प्रतिक्रियाओं को फ़िल्टर कर सकते हैं (-fs 4242):
ffuf -w /path/to/vhost/wordlist -u https://target -H "Host: FUZZ" -fs 4242
GET पैरामीटर फ़ज़िंग
GET पैरामीटर नाम फ़ज़िंग निर्देशिका खोज के समान है, और यह FUZZ कीवर्ड को URL के भाग के रूप में परिभाषित करके काम करता है। यह अमान्य GET पैरामीटर नाम के लिए 4242 बाइट्स की प्रतिक्रिया आकार भी मानता है।
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-job का उपयोग करके प्रति कार्य maxtime को नियंत्रित कर सकते हैं। यह एक निश्चित समय (सेकंड में) के बाद वर्तमान कार्य को रोक देगा और अगले कार्य के साथ जारी रखेगा। नए कार्य तब बनते हैं जब रिकर्सन कार्यक्षमता कोई उपनिर्देशिका (subdirectory) का पता लगाती है।
ffuf -w /path/to/wordlist -u https://target/FUZZ -maxtime-job 60 -recursion -recursion-depth 2
दोनों फ़्लैग्स को मिलाकर प्रति कार्य अधिकतम निष्पादन समय के साथ-साथ समग्र निष्पादन समय को सीमित करना भी संभव है। यदि आप रिकर्सन का उपयोग नहीं करते हैं, तो दोनों फ़्लैग्स समान व्यवहार करते हैं।
परीक्षण मामले बनाने के लिए बाहरी म्यूटेटर का उपयोग
इस उदाहरण के लिए, हम POST के माध्यम से भेजे गए JSON डेटा को फ़ज़ करेंगे। म्यूटेटर के रूप में Radamsa का उपयोग किया जाता है।
जब --input-cmd का उपयोग किया जाता है, तो ffuf मैचों को उनकी स्थिति के रूप में प्रदर्शित करेगा। यही स्थिति मान कॉल करने वाले (callee) के लिए एक environment variable $FFUF_NUM के रूप में उपलब्ध होगा। हम इस स्थिति मान का उपयोग म्यूटेटर के लिए seed के रूप में करेंगे। example1.txt और example2.txt फ़ाइलों में मान्य JSON पेलोड होते हैं। हम सभी प्रतिक्रियाओं को मैच कर रहे हैं, लेकिन प्रतिक्रिया कोड 400 - Bad request को फ़िल्टर कर रहे हैं:
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 का उपयोग करते हुए:
# Generate 1000 example payloads
radamsa -n 1000 -o %n.txt example1.txt example2.txt
# This results into files 1.txt ... 1000.txt
# Now we can just read the payload data in a loop from file for 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

