
WAF कार्यक्षमता के परीक्षण के लिए एक प्रोग्राम
एंटरप्राइज WAF मूल्यांकन उपकरण — वास्तविक आक्रमण पेलोड। वास्तविक परिणाम। अनुपालन-तैयार रिपोर्ट।
WAF Tester वेब एप्लिकेशन फायरवॉल का मूल्यांकन करता है, उपयोगकर्ता द्वारा प्रदान किए गए URL पर वास्तविक आक्रमण पेलोड भेजकर और रिपोर्ट करता है कि वे अवरुद्ध हैं या नहीं। यह Windows डेस्कटॉप ऐप (Electron) और Python CLI के रूप में उपलब्ध है जो कहीं भी चलता है।

यह उपकरण केवल अधिकृत सुरक्षा परीक्षण के लिए है। इसे केवल उन सिस्टम के खिलाफ उपयोग करें जिनके आप मालिक हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है। तीसरे पक्ष के सिस्टम का अनधिकृत परीक्षण कंप्यूटर फ्रॉड एंड अब्यूज़ एक्ट (CFAA) और आपके क्षेत्राधिकार में समान कानूनों का उल्लंघन हो सकता है। लेखक दुरुपयोग के लिए कोई दायित्व नहीं मानते हैं।
| सुइट | परीक्षण | क्या शामिल है |
|---|---|---|
| OWASP / CWE कोर | 44 | SQL इंजेक्शन (12 वेरिएंट), XSS (10 वेरिएंट), पथ ट्रैवर्सल, कमांड इंजेक्शन, XXE, SSRF, Log4Shell, SSTI, ओपन रीडायरेक्ट |
| रेट लिमिटिंग | 3 | बर्स्ट फ्लड (30 समवर्ती), अनुक्रमिक फ्लड, X-Forwarded-For IP रोटेशन बायपास |
| बॉट डिटेक्शन | 10 | sqlmap, Nikto, Nmap, Scrapy, Masscan, HeadlessChrome, python-requests, curl, खाली UA, मिसिंग Accept हेडर |
| बायपास प्रयास | 15 | डबल URL-एन्कोडिंग, यूनिकोड फुलविड्थ, नल बाइट्स, केस वेरिएशन, कमेंट ऑबफस्केशन, CRLF इंजेक्शन, होस्ट हेडर इंजेक्शन, मेथड ओवरराइड, पथ ट्रिक्स |
| API सुरक्षा | 10 | GraphQL इंट्रोस्पेक्शन/बैच/एनुमरेशन, JWT नो-अल्गोरिदम एवं अल्गोरिदम कंफ्यूजन, मास असाइनमेंट, HTTP वर्ब टैम्परिंग, BOLA, कंटेंट-टाइप कंफ्यूजन |
| बिजनेस लॉजिक | 8 | नेगेटिव क्वांटिटी, जीरो-प्राइस सबमिशन, एडमिन एंडपॉइंट एक्सेस, HTTP पैरामीटर पॉल्यूशन, अकाउंट एनुमरेशन, अत्यधिक डेटा एक्सपोज़र, फोर्स्ड ब्राउज़िंग, प्रिविलेज एस्केलेशन |
प्रत्येक परीक्षण एक या अधिक अनुपालन ढाँचों से टैग किया गया है:
HIGH, LIKELY या UNCERTAIN रेट किए जाते हैंgit clone https://github.com/kpomin57/waf-tester.git
cd waf-tester
npm install
npm start
npm run build
आउटपुट dist/ में NSIS इंस्टॉलर और पोर्टेबल .exe दोनों के रूप में दिखाई देता है। लक्ष्य मशीन पर किसी पूर्वापेक्षा की आवश्यकता नहीं है — Electron अपना स्वयं का रनटाइम बंडल करता है।
एक एकल-फ़ाइल Python संस्करण जो जहां Python उपलब्ध है वहां चलता है — Linux सर्वर, CI/CD पाइपलाइन, Docker कंटेनर, WSL, या कोई भी वातावरण जहां Windows .exe विकल्प नहीं है।
pip install rich requests
python waf_tester.py --url https://target.example.com
सभी 90 परीक्षण चलाता है, प्राधिकरण पुष्टि का अनुरोध करता है, टर्मिनल पर रंग-कोडित परिणाम प्रिंट करता है, और वर्तमान निर्देशिका में JSON और HTML दोनों रिपोर्ट सहेजता है।
# सभी सुइट्स चलाएँ
python waf_tester.py --url https://app.example.com
# केवल OWASP और API सुइट्स चलाएँ
python waf_tester.py --url https://app.example.com --suites owasp,api
# बियरर टोकन प्रमाणीकरण
python waf_tester.py --url https://app.example.com/api \
--auth-type bearer --auth-value eyJhbGciOiJIUzI1NiJ9...
# API कुंजी प्रमाणीकरण
python waf_tester.py --url https://app.example.com/api \
--auth-type apikey --auth-header X-API-Key --auth-value mykey123
# रिपोर्ट को फ़ोल्डर में सहेजें, पुष्टि छोड़ें (CI/CD)
python waf_tester.py --url https://app.example.com \
--output-dir ./reports --confirm
# केवल टर्मिनल आउटपुट — कोई फ़ाइल नहीं सहेजी जाती
python waf_tester.py --url https://app.example.com --output terminal
# बर्प सूट के माध्यम से ट्रैफ़िक रूट करें
python waf_tester.py --url https://app.example.com --proxy http://127.0.0.1:8080
docker run --rm -v $(pwd)/reports:/reports \
python:3.12-slim sh -c \
"pip install rich requests -q && python waf_tester.py \
--url https://target.example.com \
--output-dir /reports --confirm"
- name: WAF Evaluation
run: |
pip install rich requests
python waf_tester.py \
--url ${{ secrets.WAF_TARGET_URL }} \
--suites owasp,api,bypass \
--output json \
--output-dir ./reports \
--confirm
- name: Upload report
uses: actions/upload-artifact@v3
with:
name: waf-report
path: reports/
Python CLI सभी परीक्षण ट्रैफ़िक को Burp Suite के माध्यम से रूट कर सकता है, जिससे आपको WAF Tester द्वारा भेजे जाने वाले प्रत्येक पेलोड का पूरा HTTP इतिहास मिलता है। यह अनुरोधों और प्रतिक्रियाओं के मैन्युअल निरीक्षण, पेलोड को ठीक करने, अप्रत्याशित WAF व्यवहार के समस्या निवारण और दिलचस्प निष्कर्षों पर Burp के स्वयं के स्कैनर या रिपीटर का उपयोग करने के लिए उपयोगी है।
Burp Suite एक स्थानीय प्रॉक्सी सुनने वाला चलाता है (डिफ़ॉल्ट 127.0.0.1:8080)। जब आप WAF Tester के प्रॉक्सी पर्यावरण चर को उस पते पर इंगित करते हैं, तो उपकरण द्वारा किया गया प्रत्येक अनुरोध लक्ष्य तक पहुँचने से पहले Burp से होकर गुज़रता है। आप प्रत्येक पेलोड को Burp के HTTP इतिहास में पूर्ण अनुरोध और प्रतिक्रिया — स्थिति कोड, हेडर, बॉडी — ठीक वैसे देखते हैं जैसे WAF ने देखा।
1. Burp Suite प्रारंभ करें और पुष्टि करें कि प्रॉक्सी सुनने वाला सक्रिय है:
Burp खोलें → Proxy → Proxy Settings → पुष्टि करें कि सुनने वाला 127.0.0.1:8080 पर है (या अपने पोर्ट को नोट करें यदि अलग है)।
2. Burp का CA प्रमाणपत्र निर्यात करें और उस पर भरोसा करें (एक बार का सेटअप):
WAF Tester HTTPS लक्ष्यों से जुड़ता है, इसलिए Burp को TLS को इंटरसेप्ट करने की आवश्यकता है। Burp → Proxy → Proxy Settings → Import/Export CA Certificate → Export as DER पर जाएँ। इसे अपने सिस्टम पर एक विश्वसनीय रूट CA के रूप में स्थापित करें, या सत्यापन छोड़ने के लिए नीचे दिए गए पर्यावरण चर सेट करें (प्रयोगशाला उपयोग के लिए ठीक, उत्पादन के लिए नहीं)।
3. WAF Tester को --proxy के साथ चलाएँ:
python waf_tester.py --url https://target.example.com --proxy http://127.0.0.1:8080
Windows पर:
python waf_tester.py --url https://target.example.com --proxy http://127.0.0.1:8080
यदि आप चाहें तो पर्यावरण चर का भी उपयोग कर सकते हैं:
HTTPS_PROXY=http://127.0.0.1:8080 HTTP_PROXY=http://127.0.0.1:8080 \
python waf_tester.py --url https://target.example.com
4. Burp के इंटरसेप्ट को बंद करें:
Burp → Proxy → Intercept में, सुनिश्चित करें कि इंटरसेप्ट बंद है — अन्यथा Burp प्रत्येक अनुरोध पर रुक जाएगा और आपके मैन्युअल रूप से अग्रेषित करने की प्रतीक्षा करेगा, और WAF Tester टाइम आउट हो जाएगा। आप चाहते हैं कि Burp ट्रैफ़िक को निष्क्रिय रूप से लॉग करे, इंटरसेप्ट न करे।
5. Burp के HTTP इतिहास में अनुरोधों को आते हुए देखें:
प्रत्येक WAF Tester पेलोड एक अलग प्रविष्टि के रूप में दिखाई देता है। आप किसी भी अनुरोध पर राइट-क्लिक करके उसे मैन्युअल रूप से ट्वीक करने और पुनः भेजने के लिए Repeater पर भेज सकते हैं, या आगे फ़ज़िंग के लिए Intruder पर भेज सकते हैं।
यदि Burp CA प्रमाणपत्र पर भरोसा नहीं है, तो उपकरण में SSL सत्यापन को अस्थायी रूप से अक्षम करके --no-verify वर्कअराउंड जोड़ें। वैकल्पिक रूप से, Burp CA प्रमाणपत्र पर सिस्टम-व्यापी भरोसा करें या प्रारंभिक परीक्षण के लिए HTTP (HTTPS नहीं) लक्ष्य का उपयोग करें।
विश्वास स्तर:
HIGH — कठोर ब्लॉक स्थिति (403, 406, 429) बिना किसी अस्पष्टता केLIKELY — प्रतिक्रिया बॉडी में WAF कीवर्ड, या स्थिति बेसलाइन से भिन्न हैUNCERTAIN — सॉफ्ट ब्लॉक (400, 503) जो एक वैध ऐप त्रुटि हो सकती है# Juice Shop (कोई WAF नहीं — सभी बायपास होने की उम्मीद)
docker run -d -p 3000:3000 bkimminich/juice-shop
# ModSecurity with OWASP CRS (अधिकांश अवरुद्ध होने की उम्मीद)
docker run -d -p 80:80 owasp/modsecurity-crs:nginx
waf-tester/
├── src/
│ ├── main.js # Electron मुख्य प्रक्रिया — सभी परीक्षण तर्क और IPC
│ ├── preload.js # सुरक्षित संदर्भ पुल
│ └── renderer/
│ ├── index.html # ऐप शेल
│ ├── styles.css # डार्क मिलिट्री/SOC UI थीम
│ └── app.js # UI तर्क, फ़िल्टर, लाइव फ़ीड, निर्यात
├── waf_tester.py # Python CLI — एकल फ़ाइल, किसी कॉन्फ़िग की आवश्यकता नहीं
├── package.json
└── README.md
waf_tester.py) जोड़ा — एकल फ़ाइल, कहीं भी चलती हैMIT — विवरण के लिए LICENSE देखें।
सुरक्षा इंजीनियरों के लिए बनाया गया जिन्हें WAF सत्यापन की आवश्यकता है जो चेकबॉक्स अनुपालन से परे जाता है।
| फ़्लैग | विवरण | डिफ़ॉल्ट |
|---|
--url | लक्ष्य URL (आवश्यक) | — |
--suites | चलाने के लिए अल्पविराम से अलग किए गए सुइट्स | सभी |
--auth-type | none / bearer / apikey / cookie / basic | none |
--auth-value | टोकन, कुकी स्ट्रिंग या API कुंजी मान | — |
--auth-header | API कुंजी प्रमाणीकरण के लिए हेडर नाम | X-API-Key |
--auth-user | बेसिक ऑथ के लिए उपयोगकर्ता नाम | — |
--auth-pass | बेसिक ऑथ के लिए पासवर्ड | — |
--no-baseline | बेसलाइन तुलना अक्षम करें | बंद |
--no-rotate-ua | User-Agent रोटेशन अक्षम करें | बंद |
--waf-header | X-WAF-Tester पहचान हेडर भेजें | बंद |
--output | terminal, json, html (अल्पविराम से अलग) | तीनों |
--output-dir | रिपोर्ट फ़ाइलें सहेजने के लिए निर्देशिका | . |
--timeout | प्रति-अनुरोध टाइमआउट सेकंड में | 10 |
--proxy | सभी अनुरोधों के लिए प्रॉक्सी URL (उदा. http://127.0.0.1:8080) | बंद |
--confirm | प्राधिकरण पुष्टि प्रॉम्प्ट छोड़ें | बंद |
| स्कोर | ग्रेड | अर्थ |
|---|
| 90–100% | A | उत्कृष्ट — WAF लगभग सभी आक्रमण वैक्टर को अवरुद्ध कर रहा है |
| 80–89% | B | अच्छा — जाँच के लायक छोटे अंतराल |
| 65–79% | C | औसत — उल्लेखनीय बायपास वैक्टर मौजूद |
| 50–64% | D | खराब — महत्वपूर्ण सुरक्षा अंतराल |
| < 50% | F | गंभीर — WAF काफी हद तक अप्रभावी है |