
गो में लिखा एक तेज़ HTTP डाउनग्रेड स्मगलिंग स्कैनर।
SmuggleFuzz, एक कॉन्फ़िगरेबल और तेज़ HTTP डाउनग्रेड स्मगलिंग स्कैनर है। यह उपयोगकर्ताओं को कस्टमाइज़ेबल गैजेट सूचियों के साथ सशक्त बनाता है, और असफल स्मगलिंग हमलों के पीछे के कारणों में गहरी अंतर्दृष्टि प्रदान करता है। मुझे विश्वास है कि कई HTTP डाउनग्रेड-आधारित स्मगलिंग कमज़ोरियाँ अब तक अनदेखी हैं। दुर्भाग्यवश, बहुत से लोग एक सतही स्कैन के बाद अपनी खोज बंद कर देते हैं। SmuggleFuzz का उपयोग करके, आप उन स्मगलिंग कमज़ोरियों का पता लगा सकते हैं जिन्हें अन्य लोग अनदेखा कर सकते हैं।
अधिक जानकारी के लिए देखें https://moopinger.github.io/blog/smugglefuzz/fuzzing/smuggling/2024/01/31/SmuggleFuzz.html
रिलीज़ पेज से एक प्रति डाउनलोड करें: https://github.com/Moopinger/smugglefuzz/releases
go install github.com/moopinger/smugglefuzz@latest
एक और:
git clone https://github.com/moopinger/smugglefuzz.git
cd smugglefuzz
go build .
./smugglefuzz
SmuggleFuzz के तीन कमांड हैं:
Usage:
smugglefuzz scan [flags]
Examples:
smugglefuzz scan -u https://example.com/ --confirm
smugglefuzz scan -u https://example.com/ --filter TIMEOUT --confirm
smugglefuzz scan -u https://example.com/ -w wordlist.txt -t 10 --confirm --filter TIMEOUT
smugglefuzz scan --dc -u https://example.com/ -w wordlist.txt -x PUT --confirm
//Multiple targets? just use -f instead of -u and provide a file with the targets in it:
smugglefuzz scan -f multiple_targets.txt --confirm -t 10
smugglefuzz scan -f multiple_targets.txt -w wordlist.txt --confirm -s ./save-success.txt --filter TIMEOUT
smugglefuzz scan -f multiple_targets.txt -w wordlist.txt -H "Cookie: date=...; session=...;" -s ./save-success.txt -x PUT --filter TIMEOUT
Flags:
-c, --confirm Enable this flag to send a confirmation to the target when a timeout is encountered. Helps confirm if the target is vulnerable.
-d, --data string HTTP/2 Data frame to send. eg: 99\r\n (default "99\r\n")
--dc Disable colour in the output. This is useful when you want to save the output to a file.
-f, --file string A file containing multiple targets in url format. One target per line.
--filter string Filter responses by string or frame type, etc. For example: 405, 200, 502, TIMEOUT, RST, GOAWAY, etc.
-H, --header string Insert a custom header. It should be provided in the regular header format: "Cookie: date=...; session=...;"
-h, --help help for scan
-i, --interval int The timeout interval in seconds. (default 5)
-x, --method string The HTTP request method to be used. (default "POST")
-s, --save-success string If a request is confirmed to be successful (via the --confirm flag), it will be saved to a file. This is useful when dealing with lots of targets.
-t, --threads int The number of threads to run. Smugglefuzz can go fast, so set the desired number. However, too many may upset any WAFs. (default 4)
-u, --url string The target URL to be scanned.
-w, --wordlist string Provide a custom list of gadgets to use. If not provided, the default list will be used.
Usage:
smugglefuzz request [flags]
Examples:
smugglefuzz request -u https://www.example.com/ -a "content-length\t; 13"
smugglefuzz request -u https://www.example.com/ -a "content-length\t; 13" -x PUT
smugglefuzz request -u https://www.example.com/ -a "content-length\t; 13" -H "Cookie: date=...; session=...;" --data "223\r\n"
Flags:
-a, --attack string Attack Header, separated by (; ) like the wordlist in 'scan' mode.
-d, --data string HTTP/2 Data frame content to send. (default "99\r\n")
--dc Disable colour in the output.
-H, --header string Insert custom header. eg "Cookie: values"
-h, --help help for request
-i, --interval int Detection timeout interval in seconds. (default 5)
-x, --method string The method to use. (default "POST")
-u, --url string The target URL to submit the request to.
यह केवल डिफ़ॉल्ट स्मगल गैजेट आउटपुट करेगा। वर्तमान में बिल्ट-इन पुष्टिकरण केवल H2.CL और H2.TE के लिए काम करता है। लेकिन टाइमआउट (–filter TIMEOUT) या आपके डोमेन पर OAST के माध्यम से H2.0 हमलों का पता लगाना संभव है। (स्यूडो हेडर अनुभाग नीचे देखें)
SmuggleFuzz उपयोगकर्ताओं को कस्टम शब्दसूचियों के माध्यम से अनुरोधों पर पूर्ण नियंत्रण देता है। इन सूचियों की एक बुनियादी संरचना होती है, जिसका अनुकूलित अनुरोध प्रबंधन के लिए पालन किया जाना चाहिए। उदाहरण के लिए, हेडर और उनके मानों को सामान्य कोलन के बजाय semicolon and a space (; ) का उपयोग करके विभाजित किया जाता है, जिससे स्मगलिंग अनुरोधों में कोलन मान शामिल करना आसान हो जाता है। यह विभिन्न उत्परिवर्तन और रचनात्मक दृष्टिकोणों के लिए भी संभावनाएं खोलता है। अपने स्वयं के पेलोड बनाने के विस्तृत मार्गदर्शन के लिए, देखें: James Kettle's HTTP/2 Research।
टूल में 125 स्मगलिंग गैजेट्स की एक तैयार-उपयोग सूची शामिल है, हालांकि विस्तार की गुंजाइश हमेशा होती है। इन गैजेट्स को 'output' कमांड का उपयोग करके प्रदर्शित किया जा सकता है, जो क्वेरी संरचना में अंतर्दृष्टि प्रदान करता है। उपयोगकर्ता 'w' फ़्लैग का उपयोग करके कस्टम शब्दसूचियों के साथ स्कैन चला सकते हैं। सूची गैर-मुद्रण योग्य बाइट मानों के लिए URL एन्कोडिंग (%00) का समर्थन करती है, जैसे कैरिज रिटर्न और लाइन फीड को '%0d%0a' या '\r\n' के रूप में दर्शाया जाता है। जबकि प्रदान की गई सूची व्यापक है, अपने स्वयं के गैजेट बनाने से सफलता दर में काफी वृद्धि हो सकती है।
h2c समर्थन चाहिए? SmuggleFuzz की "experimental-h2c" शाखा देखें।
स्यूडो हेडर पूरी तरह से समर्थित हैं और ":name" सिंटैक्स का उपयोग करके अनुकूलित किए जा सकते हैं:
:authority:scheme:methodये हेडर विशेष रूप से H2.0 हमले वैक्टर के परीक्षण में उपयोगी होते हैं। उदाहरण के लिए, OAST-आधारित विधियों का उपयोग करके H2.0 स्मगलिंग के परीक्षण में, निम्नलिखित शब्दसूची प्रविष्टियाँ प्रभावी हो सकती हैं:
v0.1.8 से [HOSTNAME] को प्लेसहोल्डर के रूप में उपयोग किया जा सकता है। SmuggleFuzz रनटाइम पर इसे होस्टनाम से बदल देगा।
:authority; [HOSTNAME]\r\n\r\nGET / HTTP/1.1\r\nHost: uniqid.oastify.com\r\nX-HEADER:%20या
:authority; [HOSTNAME]\r\n\r\nGET https://uniqid.oastify.com/ HTTP/1.1\r\nHost: [HOSTNAME]\r\nX-HEADER:%20SmuggleFuzz में उपयोग की जाने वाली पहचान विधि Albinowax द्वारा HTTP/1 स्मगलिंग अनुसंधान और defparam के Smuggler में उपयोग की जाने वाली विधियों के समान है, लेकिन HTTP/2 के लिए अनुकूलित की गई है। सौभाग्य से, चूंकि ये हमले डाउनग्रेड शामिल करते हैं, H2.CL और H2.TE दोनों का पता लगाने के लिए एक ही अनुरोध बॉडी/DATA पेलोड का उपयोग किया जा सकता है।
शब्दसूचियों के लिए एक महत्वपूर्ण दिशानिर्देश यह है कि सफलतापूर्वक स्मगल किए गए हेडर में पुष्टिकरण हमले के लिए निम्नलिखित मान शामिल होने चाहिए:
CL: 13
TE: chunked
प्रत्येक अनुरोध में "99\r\n" मान के साथ एक "Body"/DATA-Frame शामिल होता है। यदि TE हेडर स्मगल किया जाता है, तो इसे सर्वर द्वारा 153 (0x99) के चंक्ड कंटेंट लेंथ के रूप में व्याख्यायित किया जाता है, जिससे टाइमआउट होता है। इसी प्रकार, 13 के कंटेंट लेंथ के साथ CL हेडर स्मगल करने से भी अधूरी लंबाई के कारण टाइमआउट होता है।
पुष्टिकरण अनुरोध उसी क्वेरी को पुनः सबमिट करता है जिसके कारण टाइमआउट हुआ था, लेकिन Data: "3\r\nABC\r\n0\r\n\r\n" के साथ। यह चंक्ड TE और CL दोनों को 13 के साथ संतुष्ट करता है, एक सफल प्रतिक्रिया प्राप्त करता है और संभावित स्मगलिंग कमज़ोरी का संकेत देता है।