
स्वचालित WAF सुरक्षा परीक्षण उपकरण जो 15+ पेलोड श्रेणियों जैसे SQLi, XSS, RCE और GraphQL इंजेक्शन का उपयोग करके गलत सकारात्मक और गलत नकारात्मक का पता लगाता है। Docker, JSON आउटपुट और कस्टम पेलोड का समर्थन करता है।
WAF Bypass Tool एक ओपन सोर्स टूल है जो किसी भी WAF की सुरक्षा का विश्लेषण करने के लिए फॉल्स पॉज़िटिव और फॉल्स निगेटिव के लिए पूर्वनिर्धारित और अनुकूलन योग्य पेलोड का उपयोग करता है। एक हमलावर से पहले अपने WAF की जाँच करें। WAF Bypass Tool को Nemesida WAF टीम द्वारा समुदाय की भागीदारी के साथ विकसित किया गया है।

अवैध और गैरकानूनी उद्देश्यों के लिए उपयोग निषिद्ध है। कानून न तोड़ें। हम इस सॉफ्टवेयर के उपयोग से जुड़े संभावित जोखिमों के लिए जिम्मेदार नहीं हैं।
नवीनतम waf-bypass हमेशा Docker Hub के माध्यम से उपलब्ध है। इसे निम्न कमांड के माध्यम से आसानी से खींचा जा सकता है:
# docker pull nemesida/waf-bypass # docker run nemesida/waf-bypass --host='example.com'
# pipx install git+https://github.com/nemesida-waf/waf-bypass.git # <pipx bin dir>/waf-bypass
# git clone https://github.com/nemesida-waf/waf_bypass.git /opt/waf-bypass/ # python3 -m pip install -r /opt/waf-bypass/requirements.txt # python3 /opt/waf-bypass/main.py --host='example.com'
'--proxy' ('--proxy='http://proxy.example.com:3128'') - यह विकल्प होस्ट के बजाय कनेक्ट करने के लिए स्थान निर्दिष्ट करने की अनुमति देता है।
'--header' ('--header 'Authorization: Basic YWRtaW46YWRtaW4=' --header 'X-TOKEN: ABCDEF'') - यह विकल्प सभी अनुरोधों के साथ भेजने के लिए HTTP हेडर निर्दिष्ट करने की अनुमति देता है (जैसे प्रमाणीकरण के लिए)। एकाधिक उपयोग की अनुमति है।
'--user-agent' ('--user-agent 'MyUserAgent 1/1'') - यह विकल्प सभी अनुरोधों के साथ भेजने के लिए HTTP User-Agent निर्दिष्ट करने की अनुमति देता है, सिवाय जब User-Agent पेलोड द्वारा सेट किया गया हो ("USER-AGENT")।
'--block-code' ('--block-code='403' --block-code='222'') - यह विकल्प WAF के ब्लॉक होने पर अपेक्षित HTTP स्थिति कोड निर्दिष्ट करने की अनुमति देता है। (डिफ़ॉल्ट 403 है)। एकाधिक उपयोग की अनुमति है।
'--threads' ('--threads=15') - यह विकल्प समानांतर स्कैन थ्रेड्स की संख्या निर्दिष्ट करने की अनुमति देता है (डिफ़ॉल्ट 10 है)।
'--timeout' ('--timeout=10') - यह विकल्प सेकंड में अनुरोध प्रसंस्करण समय-सीमा निर्दिष्ट करने की अनुमति देता है (डिफ़ॉल्ट 30 है)।
'--exclude-dir' - पेलोड निर्देशिका को बाहर करें (--exclude-dir='SQLi,XSS')।
'--json-format' - एक विकल्प जो आपको कार्य का परिणाम JSON प्रारूप में प्रदर्शित करने की अनुमति देता है (सुरक्षा प्लेटफार्मों के साथ उपकरण को एकीकृत करने के लिए उपयोगी)। यदि विकल्प निर्दिष्ट नहीं है, तो आउटपुट तालिका प्रारूप (डिफ़ॉल्ट प्रारूप) में होगा।
'--details' - फॉल्स पॉज़िटिव और फॉल्स निगेटिव पेलोड प्रदर्शित करें। विकल्प --json-format के साथ संगत नहीं है।
'--no-progress' - प्रगति पट्टी प्रदर्शित न करें।
'--curl-replay' - फॉल्स पॉज़िटिव, फॉल्स निगेटिव या विफल अनुरोधों को पुन: पेश करने के लिए cURL कमांड प्रदर्शित करें। विकल्प --json-format के साथ संगत नहीं है।
JSON आउटपुट विनिर्देश उदाहरण:
{
"TARGET": "https://example.com", // defined by --host option
"PROXY": {}, // defined by --proxy option
"HEADERS": { // defined by --header option
"User-Agent": ""
},
"BLOCK-CODE": [ // defined by --block-code option
...
],
"THREADS": 50, // defined by --threads option
"TIMEOUT": 30, // defined by --timeout option
"EXCLUDE-DIR": [ // defined by --exclude-dir option
...
],
"FAILED": { // requests with failed processing status
"MFD/7.json": {
"BODY": "WBHTTPSConnectionPool(host='example.com', port=443): Read timed out. (read timeout=1)"
},
...
},
"PASSED": { // passed requests
"UWA/3.json": {
"URL": "403 RESPONSE CODE"
},
...
},
"FALSED": { // requests with false positive processing status
...
},
"BYPASSED": { // requests with false negative processing status
"UWA/26.json": {
"URL": "200 RESPONSE CODE"
},
...
},
"TestRequest": { // test requests with processing status, exclude passed
"FAILED": {},
"FALSED": {
"UWA/3.json": {
"URL": "403 RESPONSE CODE"
},
...
}
},
"CURL": { // cURL command to reproduce false positive and false negative requests
"FALSED": {},
"BYPASSED": {
"UWA/26.json": {
"URL": "curl -X GET -H 'Accept: */*' -H 'Accept-Encoding: gzip, deflate' -H 'Connection: keep-alive' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36' 'https://example.com/do.php#.png'"
},
...
}
}
}
उद्देश्य के आधार पर, पेलोड उपयुक्त फ़ोल्डरों में स्थित हैं:
पेलोड संकलित करते समय, निम्नलिखित ज़ोन, विधि और विकल्प उपयोग किए जाते हैं:
Base64, HTML-ENTITY, UTF-16)। एकाधिक मान स्थान के साथ इंगित किए जाते हैं (जैसे Base64 UTF-16)। केवल ARGS, BODY, COOKIE और HEADER ज़ोन पर लागू। API और MFD निर्देशिकाओं में पेलोड पर लागू नहीं। विकल्प JSON के साथ संगत नहीं।नीचे वर्णित कुछ मामलों को छोड़कर, ज़ोन एक-दूसरे से स्वतंत्र होते हैं और अलग-अलग परीक्षण किए जाते हैं (यदि 2 ज़ोन निर्दिष्ट हैं तो स्क्रिप्ट 2 अनुरोध भेजेगी - बारी-बारी से एक और दूसरे ज़ोन की जाँच करेगी)।
ज़ोन के लिए आप %RND% प्रत्यय का उपयोग कर सकते हैं, जो आपको 6 अक्षरों और संख्याओं की एक मनमाना स्ट्रिंग उत्पन्न करने की अनुमति देता है। (जैसे: param%RND=my_payload या param=%RND% या A%RND%B)
आप अपने स्वयं के पेलोड बना सकते हैं, ऐसा करने के लिए, '/payload/' फ़ोल्डर पर अपना स्वयं का फ़ोल्डर बनाएं, या पेलोड को किसी मौजूदा फ़ोल्डर में रखें (जैसे: '/payload/XSS')। अनुमत डेटा प्रारूप JSON है।
API परीक्षण पेलोड इस निर्देशिका में स्थित हैं, उनमें स्वचालित रूप से हेडर 'Content-Type: application/json' जोड़ा जाता है।
MFD (मल्टीपार्ट/फॉर्म-डेटा) पेलोड के लिए जो इस निर्देशिका में स्थित हैं, आपको BODY (आवश्यक) और BOUNDARY (वैकल्पिक) निर्दिष्ट करना होगा। यदि BOUNDARY सेट नहीं है, तो यह स्वचालित रूप से उत्पन्न होगा (इस स्थिति में, केवल पेलोड को BODY के लिए निर्दिष्ट किया जाना चाहिए, बिना अतिरिक्त डेटा के ('... Content-Disposition: form-data; ...'))।
यदि BOUNDARY निर्दिष्ट है, तो BODY की सामग्री को RFC के अनुसार स्वरूपित किया जाना चाहिए, लेकिन यह BODY में BOUNDARY द्वारा अलग किए गए कई पेलोड की अनुमति देता है।
इस निर्देशिका में अन्य ज़ोन की अनुमति है (जैसे: URL, ARGS आदि)। ज़ोन की परवाह किए बिना, सभी अनुरोधों में हेडर 'Content-Type: multipart/form-data; boundary=...' जोड़ा जाएगा।