
Python-आधारित HTTP अनुरोध तस्करी और डीसिंक परीक्षण उपकरण जो कॉन्फ़िगरेबल म्यूटेशन पेलोड और स्वचालित स्कैनिंग का उपयोग करके CL.TE और TE.CL कमजोरियों का पता लगाता है।
______ _
/ _____) | |
( (____ ____ _ _ ____ ____| | _____ ____
\____ \| \| | | |/ _ |/ _ | || ___ |/ ___)
_____) ) | | | |_| ( (_| ( (_| | || ____| |
(______/|_|_|_|____/ \___ |\___ |\_)_____)_|
(_____(_____|
@defparam
एक HTTP अनुरोध तस्करी / डिसिंक परीक्षण उपकरण जो Python 3 में लिखा गया है
James Kettle को उनके HTTP डिसिंक पर शोध और विधियों के लिए विशेष धन्यवाद
और Ben Sadeghipour को स्मगलर के बीटा परीक्षण के लिए और Nahamcon 2020 में अपने कार्य पर चर्चा करने की अनुमति देने के लिए विशेष धन्यवाद
यह उपकरण गलत-सकारात्मक या गलत-नकारात्मक की गारंटी नहीं देता है। सिर्फ इसलिए कि कोई म्यूटेशन OK रिपोर्ट कर सकता है, इसका मतलब यह नहीं कि कोई डिसिंक समस्या नहीं है, लेकिन अधिक महत्वपूर्ण बात यह है कि सिर्फ इसलिए कि उपकरण संभावित डिसिंक समस्या का संकेत देता है, इसका मतलब यह नहीं कि निश्चित रूप से एक मौजूद है। स्क्रिप्ट बड़ी संस्थाओं (जैसे Google/AWS/Yahoo/Akamai/आदि) से अनुरोध प्रोसेसर का सामना कर सकती है जो गलत-सकारात्मक परिणाम दिखा सकते हैं।
एकल होस्ट:
python3 smuggler.py -u <URL>
होस्टों की सूची:
cat list_of_hosts.txt | python3 smuggler.py
usage: smuggler.py [-h] [-u URL] [-v VHOST] [-x] [-m METHOD] [-l LOG] [-q]
[-t TIMEOUT] [--no-color] [-c CONFIGFILE]
optional arguments:
-h, --help show this help message and exit
-u URL, --url URL Target URL with Endpoint
-v VHOST, --vhost VHOST
Specify a virtual host
-x, --exit_early Exit scan on first finding
-m METHOD, --method METHOD
HTTP method to use (e.g GET, POST) Default: POST
-l LOG, --log LOG Specify a log file
-q, --quiet Quiet mode will only log issues found
-t TIMEOUT, --timeout TIMEOUT
Socket timeout value Default: 5
--no-color Suppress color codes
-c CONFIGFILE, --configfile CONFIGFILE
Filepath to the configuration file of payloads
स्मगलर को कम से कम -u/--url तर्क के माध्यम से एक URL, या stdin के माध्यम से पाइप किए गए URL की सूची की आवश्यकता होती है।
यदि URL https:// निर्दिष्ट करता है, तो स्मगलर SSL/TLS का उपयोग करके host:port से जुड़ेगा। यदि URL http:// निर्दिष्ट करता है, तो कोई SSL/TLS का उपयोग नहीं किया जाएगा। यदि केवल होस्ट निर्दिष्ट है, तो स्क्रिप्ट डिफ़ॉल्ट रूप से https:// का उपयोग करेगी।
सर्वर पते से भिन्न होस्ट हेडर निर्दिष्ट करने के लिए -v/--vhost <host> का उपयोग करें
किसी दिए गए सर्वर की स्कैन को संभावित समस्या मिलने पर बाहर निकलने के लिए -x/--exit_early का उपयोग करें। पाइप मोड में स्मगलर बस सूची में अगले होस्ट पर जारी रहेगा
POST से भिन्न HTTP क्रिया (जैसे GET/PUT/PATCH/OPTIONS/CONNECT/TRACE/DELETE/HEAD/आदि) निर्दिष्ट करने के लिए -m/--method <method> का उपयोग करें
आउटपुट को stdout के साथ-साथ फ़ाइल में लिखने के लिए -l/--log <file> का उपयोग करें
शब्दावली कम करने और केवल पाई गई समस्याओं को लॉग करने के लिए -q/--quiet का उपयोग करें
सॉकेट टाइमआउट निर्दिष्ट करने के लिए -t/--timeout <value> का उपयोग करें। मान इतना अधिक होना चाहिए कि यह निष्कर्ष निकाला जा सके कि सॉकेट हैंग हो रहा है, लेकिन परीक्षण की गति बढ़ाने के लिए पर्याप्त कम (डिफ़ॉल्ट: 5)
stdout पर मुद्रित रंग कोड को दबाने के लिए --no-color का उपयोग करें (लॉग डिफ़ॉल्ट रूप से रंग कोड शामिल नहीं करते)
अपनी स्मगलर म्यूटेशन कॉन्फ़िगरेशन फ़ाइल निर्दिष्ट करने के लिए -c/--configfile <configfile> का उपयोग करें (डिफ़ॉल्ट: default.py)
कॉन्फ़िगरेशन फ़ाइलें Python फ़ाइलें हैं जो स्मगलर के ./config निर्देशिका में मौजूद हैं। ये फ़ाइलें HTTP अनुरोधों की सामग्री और परीक्षण किए जाने वाले ट्रांसफर-एन्कोडिंग म्यूटेशन का वर्णन करती हैं।
यहां default.py की उदाहरण सामग्री है:
def render_template(gadget):
RN = "\r\n"
p = Payload()
p.header = "__METHOD__ __ENDPOINT__?cb=__RANDOM__ HTTP/1.1" + RN
# p.header += "Transfer-Encoding: chunked" +RN
p.header += gadget + RN
p.header += "Host: __HOST__" + RN
p.header += "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36" + RN
p.header += "Content-type: application/x-www-form-urlencoded; charset=UTF-8" + RN
p.header += "Content-Length: __REPLACE_CL__" + RN
return p
mutations["nameprefix1"] = render_template(" Transfer-Encoding: chunked")
mutations["tabprefix1"] = render_template("Transfer-Encoding:\tchunked")
mutations["tabprefix2"] = render_template("Transfer-Encoding\t:\tchunked")
mutations["space1"] = render_template("Transfer-Encoding : chunked")
for i in [0x1,0x4,0x8,0x9,0xa,0xb,0xc,0xd,0x1F,0x20,0x7f,0xA0,0xFF]:
mutations["midspace-%02x"%i] = render_template("Transfer-Encoding:%cchunked"%(i))
mutations["postspace-%02x"%i] = render_template("Transfer-Encoding%c: chunked"%(i))
mutations["prespace-%02x"%i] = render_template("%cTransfer-Encoding: chunked"%(i))
mutations["endspace-%02x"%i] = render_template("Transfer-Encoding: chunked%c"%(i))
mutations["xprespace-%02x"%i] = render_template("X: X%cTransfer-Encoding: chunked"%(i))
mutations["endspacex-%02x"%i] = render_template("Transfer-Encoding: chunked%cX: X"%(i))
mutations["rxprespace-%02x"%i] = render_template("X: X\r%cTransfer-Encoding: chunked"%(i))
mutations["xnprespace-%02x"%i] = render_template("X: X%c\nTransfer-Encoding: chunked"%(i))
mutations["endspacerx-%02x"%i] = render_template("Transfer-Encoding: chunked\r%cX: X"%(i))
mutations["endspacexn-%02x"%i] = render_template("Transfer-Encoding: chunked%c\nX: X"%(i))
अभी तक आपके स्वयं के कस्टम हेडर और उपयोगकर्ता-एजेंट निर्दिष्ट करने के लिए कोई इनपुट तर्क नहीं हैं। default.py पर आधारित अपनी स्वयं की कॉन्फ़िगरेशन फ़ाइल बनाने और इसे अपनी पसंद के अनुसार संशोधित करने की अनुशंसा की जाती है।
स्मगलर 3 कॉन्फ़िगरेशन फ़ाइलों के साथ आता है: default.py (तेज़), doubles.py (विशिष्ट, धीमा), exhaustive.py (बहुत धीमा) default.py सबसे तेज़ है क्योंकि इसमें कम म्यूटेशन हैं।
कॉन्फ़िगरेशन फ़ाइलों को -c/--configfile <configfile> कमांड लाइन विकल्प का उपयोग करके निर्दिष्ट करें
स्मगलर निर्देशिका के अंदर payloads निर्देशिका है। जब स्मगलर को संभावित CLTE या TECL डिसिंक समस्या मिलती है, तो यह स्वचालित रूप से payloads निर्देशिका में समस्या पैदा करने वाले पेलोड की एक बाइनरी txt फ़ाइल डंप करेगा। सभी पेलोड फ़ाइल नाम होस्टनाम, डिसिंक प्रकार और म्यूटेशन प्रकार के साथ एनोटेट किए गए हैं। सर्वर पर सीधे netcat करने या अन्य विश्लेषण उपकरणों में आयात करने के लिए इन पेलोड का उपयोग करें।
डिसिंक समस्या मिलने के बाद, मेरे Turbo Intruder डिसिंक स्क्रिप्ट का उपयोग करने में संकोच न करें जो यहां पाई जा सकती हैं: https://github.com/defparam/tiscripts
DesyncAttack_CLTE.py और DesyncAttack_TECL.py डिसिंक हमले को मंचित करने में मदद करने वाली उत्कृष्ट स्क्रिप्ट हैं
ये स्क्रिप्ट MIT लाइसेंस के तहत जारी की गई हैं। देखें LICENSE।