Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
WAF-A-MoLE — ML-आधारित वेब एप्लिकेशन फ़ायरवॉल के लिए एक निर्देशित परिवर्तन-आधारित फ़ज़र (fuzzer) | Kitploit
उपकरण/GitHubGitHub/avalz/waf-a-mole
WAF बाईपासवेब सुरक्षाफज़िंगमशीन लर्निंगप्रतिकूल हमला
GitHubavalz/waf-a-mole

WAF-A-MoLE

ML-आधारित वेब एप्लिकेशन फ़ायरवॉल के लिए एक निर्देशित परिवर्तन-आधारित फ़ज़र (fuzzer)

रिपॉजिटरी देखें
205332 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

WAF-A-MoLE

ML-आधारित वेब एप्लिकेशन फ़ायरवॉल के लिए एक निर्देशित उत्परिवर्तन-आधारित फ़ज़र, जो AFL से प्रेरित है और Andreas Zeller एट अल. द्वारा FuzzingBook पर आधारित है।

एक इनपुट SQL इंजेक्शन क्वेरी दिए जाने पर, यह एक सिमैंटिक इनवेरिएंट क्वेरी उत्पन्न करने का प्रयास करता है जो लक्ष्य WAF को बायपास करने में सक्षम हो। आप अपने उत्पाद की मजबूती का आकलन करने के लिए इस टूल का उपयोग कर सकते हैं, जिससे WAF-A-MoLE को समाधान स्थान का अन्वेषण करके लक्ष्य वर्गीकारक द्वारा अनावरण न किए गए खतरनाक "ब्लाइंड स्पॉट" खोजने दिया जा सके।

Python Version License Documentation Status

आर्किटेक्चर

WAF-A-MoLE Architecture

WAF-A-MoLE एक प्रारंभिक पेलोड लेता है और इसे पेलोड पूल में डालता है, जो प्रत्येक पेलोड पर WAF विश्वास स्कोर द्वारा क्रमित प्राथमिकता कतार का प्रबंधन करता है।

प्रत्येक पुनरावृत्ति के दौरान, पेलोड पूल का शीर्ष फ़ज़र को भेजा जाता है, जहाँ यादृच्छिक रूप से उपलब्ध उत्परिवर्तन ऑपरेटरों में से एक को लागू करके इसे उत्परिवर्तित किया जाता है।

उत्परिवर्तन ऑपरेटर

उत्परिवर्तन ऑपरेटर सभी सिमैंटिक्स-संरक्षित हैं और वे SQL भाषा (इस संस्करण में, MySQL) की उच्च अभिव्यक्ति शक्ति का लाभ उठाते हैं।

नीचे WAF-A-MoLE के वर्तमान संस्करण में उपलब्ध उत्परिवर्तन ऑपरेटर दिए गए हैं।

हमें कैसे उद्धृत करें

WAF-A-MoLE "WAF-A-MoLE: Evading Web Application Firewalls through Adversarial Machine Learning" में प्रस्तुत पद्धति को लागू करता है। हमारे लेख की एक प्री-प्रिंट प्रति arXiv पर भी पाई जा सकती है।

यदि आप हमें उद्धृत करना चाहते हैं, तो कृपया निम्नलिखित (BibTeX) संदर्भ का उपयोग करें:

root@kitploit:~
@inproceedings{demetrio20wafamole,
  title={WAF-A-MoLE: evading web application firewalls through adversarial machine learning},
  author={Demetrio, Luca and Valenza, Andrea and Costa, Gabriele and Lagorio, Giovanni},
  booktitle={Proceedings of the 35th Annual ACM Symposium on Applied Computing},
  pages={1745--1752},
  year={2020}
}

WAF-A-MoLE चलाना

पूर्वापेक्षाएँ

  • numpy
  • keras
  • scikit-learn
  • joblib
  • sqlparse
  • networkx
  • Click

सेटअप

pip install -r requirements.txt

नमूना उपयोग

आप अपने स्वयं के WAF की मजबूती का मूल्यांकन कर सकते हैं, या कुछ उदाहरण वर्गीकारकों के विरुद्ध WAF-A-MoLE का प्रयास कर सकते हैं। पहले मामले में, Model वर्ग पर एक नज़र डालें। आपके कस्टम मॉडल को WAF-A-MoLE द्वारा मूल्यांकित होने के लिए इस वर्ग को लागू करना होगा। हम पहले से ही sci-kit learn और keras वर्गीकारकों के लिए रैपर प्रदान करते हैं जिन्हें आपकी फीचर निष्कर्षण चरण (यदि कोई हो) में फिट करने के लिए बढ़ाया जा सकता है।

सहायता

wafamole --help

root@kitploit:~
Usage: wafamole [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  evade  Launch WAF-A-MoLE against a target classifier.

wafamole evade --help

root@kitploit:~
Usage: wafamole evade [OPTIONS] MODEL_PATH PAYLOAD

  Launch WAF-A-MoLE against a target classifier.

Options:
  -T, --model-type TEXT     Type of classifier to load
  -t, --timeout INTEGER     Timeout when evading the model
  -r, --max-rounds INTEGER  Maximum number of fuzzing rounds
  -s, --round-size INTEGER  Fuzzing step size for each round (parallel fuzzing
                            steps)
  --threshold FLOAT         Classification threshold of the target WAF [0.5]
  --random-engine TEXT      Use random transformations instead of evolution
                            engine. Set the number of trials
  --output-path TEXT        Location were to save the results of the random
                            engine. NOT USED WITH REGULAR EVOLUTION ENGINE
  --help                    Show this message and exit.

उदाहरण मॉडलों को बायपास करना

हम कुछ पूर्व-प्रशिक्षित मॉडल प्रदान करते हैं जिनके साथ आप मज़ा ले सकते हैं, जो wafamole/models/custom/example_models में स्थित हैं। हमारे द्वारा उपयोग किए गए वर्गीकारक नीचे दी गई तालिका में सूचीबद्ध हैं।

ML-आधारित WAF के अलावा, WAF-a-MoLE नियम-आधारित WAF का भी समर्थन करता है। विशेष रूप से, यह pymodsecurity प्रोजेक्ट पर आधारित OWASP Core Rule Set (CRS) से सुसज्जित ModSecurity WAF के लिए एक रैपर प्रदान करता है।

WAF-BRAIN - पुनरावर्ती तंत्रिका नेटवर्क

admin' OR 1=1# समतुल्य का उपयोग करके पूर्व-प्रशिक्षित WAF-Brain वर्गीकारक को बायपास करें।

root@kitploit:~
wafamole evade --model-type waf-brain wafamole/models/custom/example_models/waf-brain.h5  "admin' OR 1=1#"

ML-Based-WAF - गैर-रैखिक SVM (मूल WAF-A-MoLE डेटासेट के साथ)

admin' OR 1=1# समतुल्य का उपयोग करके पूर्व-प्रशिक्षित ML-Based-WAF SVM वर्गीकारक को बायपास करें।

root@kitploit:~
wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_svc.dump  "admin' OR 1=1#"

ML-Based-WAF - गैर-रैखिक SVM (SQLiV5/SQLiV3 डेटासेट के साथ)

admin' OR 1=1# समतुल्य का उपयोग करके पूर्व-प्रशिक्षित ML-Based-WAF SVM वर्गीकारक को बायपास करें। ध्यान दें कि SQLiV5 Kaggle से प्राप्त एक डेटासेट है जिसे WAF-A-MoLE द्वारा उत्पन्न क्वेरीज़ की एक श्रृंखला के साथ विस्तारित किया गया है, जो इस बात का प्रमाण है कि WAF-A-MoLE क्वेरीज़ पुनर्प्रशिक्षण के साथ WAF की मजबूती को बढ़ा सकती हैं। मूल Kaggle डेटासेट (SQLiV3) के साथ प्रशिक्षित WAF को बायपास करने के लिए mlbasedwaf_svc_sqliv3.dump का उपयोग करें।

root@kitploit:~
wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_svc_sqliv5.dump  "admin' OR 1=1#"

ML-Based-WAF - स्टोकेस्टिक ग्रेडिएंट डिसेंट (SGD)

admin' OR 1=1# समतुल्य का उपयोग करके पूर्व-प्रशिक्षित ML-Based-WAF SGD वर्गीकारक को बायपास करें।

root@kitploit:~
wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_sgd.dump  "admin' OR 1=1#"

ML-Based-WAF - AdaBoost

admin' OR 1=1# समतुल्य का उपयोग करके पूर्व-प्रशिक्षित ML-Based-WAF AdaBoost वर्गीकारक को बायपास करें (अन्य मॉडलों की तुलना में अधिक समय लगता है, लगभग 2 से 5 मिनट का रनटाइम)।

root@kitploit:~
wafamole evade --model-type mlbasedwaf wafamole/models/custom/example_models/mlbasedwaf_ada.dump  "admin' OR 1=1#"

टोकन-आधारित - सादा बेयस

admin' OR 1=1# समतुल्य का उपयोग करके पूर्व-प्रशिक्षित टोकन-आधारित सादा बेयस वर्गीकारक को बायपास करें।

root@kitploit:~
wafamole evade --model-type token wafamole/models/custom/example_models/naive_bayes_trained.dump  "admin' OR 1=1#"

टोकन-आधारित - रैंडम फ़ॉरेस्ट

admin' OR 1=1# समतुल्य का उपयोग करके पूर्व-प्रशिक्षित टोकन-आधारित रैंडम फ़ॉरेस्ट वर्गीकारक को बायपास करें।

root@kitploit:~
wafamole evade --model-type token wafamole/models/custom/example_models/random_forest_trained.dump  "admin' OR 1=1#"

टोकन-आधारित - रैखिक SVM

admin' OR 1=1# समतुल्य का उपयोग करके पूर्व-प्रशिक्षित टोकन-आधारित रैखिक SVM वर्गीकारक को बायपास करें।

root@kitploit:~
wafamole evade --model-type token wafamole/models/custom/example_models/lin_svm_trained.dump  "admin' OR 1=1#"

टोकन-आधारित - गाऊसी SVM

admin' OR 1=1# समतुल्य का उपयोग करके पूर्व-प्रशिक्षित टोकन-आधारित गाऊसी SVM वर्गीकारक को बायपास करें।

root@kitploit:~
wafamole evade --model-type token wafamole/models/custom/example_models/gauss_svm_trained.dump  "admin' OR 1=1#"

SQLiGoT

admin' OR 1=1# समतुल्य का उपयोग करके पूर्व-प्रशिक्षित SQLiGOT वर्गीकारक को बायपास करें। DP, UP, DU, या UU का उपयोग क्रमशः निर्देशित आनुपातिक (Directed Proportional), अनिर्देशित आनुपातिक (Undirected Proportional), निर्देशित अनुपातहीन (Directed Unproportional) और अनिर्देशित अनुपातहीन (Undirected Unproportional) के लिए करें।

root@kitploit:~
wafamole evade --model-type DP wafamole/models/custom/example_models/graph_directed_proportional_sqligot "admin' OR 1=1#"

OWASP ModSecurity CRS - नियम-आधारित WAF

admin' OR 1=1# समतुल्य का उपयोग करके OWASP ModSecurity CRS को बायपास करें। उपयोगकर्ता को पैरानोइया स्तर के साथ-साथ CRS नियमों का पता लगाने का पथ (जैसे, /etc/coreruleset) भी निर्दिष्ट करना होगा।

root@kitploit:~
wafamole evade --model-type modsecurity_pl[1-4] /etc/coreruleset "admin' OR 1=1#"

SQLiGoT पर मूल्यांकन शुरू करने से पहले

ये वर्गीकारक दूसरों की तुलना में अधिक मजबूत हैं, क्योंकि फीचर निष्कर्षण चरण अधिक जटिल संरचना वाले वैक्टर उत्पन्न करता है, और सभी पूर्व-प्रशिक्षित वर्गीकारकों को दृढ़ता से नियमित किया गया है। कुछ प्रकारों को बायपास प्राप्त करने वाला पेलोड उत्पन्न करने में घंटों लग सकते हैं (बेंचमार्क अनुभाग देखें)।

नए ML-Based-WAF मॉडलों पर नोट

vladan-stojnic के ML-Based-WAF के थोड़े संशोधित संस्करण पर आधारित कुछ मॉडल हाल ही में जोड़े गए हैं, जो wafamole++ नामक WAF-A-MoLE के विस्तार से हैं, जो nidnogg द्वारा है। AdaBoost मॉडल का परीक्षण सामान्य से अधिक समय ले सकता है (आमतौर पर 2 से 5 मिनट)।

SQLiV5.json डेटासेट के साथ प्रशिक्षित वेरिएंट हैं, जबकि अधिकांश डिफ़ॉल्ट रूप से WAF-A-MoLE डेटासेट से मूल SQL इंजेक्शन का उपयोग करते हैं।

इनमें से कुछ मॉडलों के प्रशिक्षण रूटीन के साथ एक Google Colaboratory नोटबुक प्रदान किया गया है, जो मूल WAF-A-MoLE डेटासेट (SQLiV5 प्रारूप में संशोधित) का उपयोग करता है। जब तक वे SQLiV5.json के समान प्रारूप में हों, किसी भी डेटासेट का उपयोग किया जा सकता है।

कस्टम एडाप्टर

सबसे पहले, एक कस्टम Model वर्ग बनाएं जो extract_features और classify विधियों को लागू करता है।

root@kitploit:~
class YourCustomModel(Model):
    def extract_features(self, value: str):
    	# TODO: extract features
        feature_vector = your_custom_feature_function(value)
        return feature_vector

    def classify(self, value):
    	# TODO: compute confidence
        confidence = your_confidence_eval(value)
        return confidence

फिर, मॉडल से एक ऑब्जेक्ट बनाएं और एक engine ऑब्जेक्ट इंस्टैंशिएट करें जो आपके मॉडल वर्ग का उपयोग करता है।

root@kitploit:~
model = YourCustomModel() #your init
engine = EvasionEngine(model)
result = engine.evaluate(payload, max_rounds, round_size, timeout, threshold)

बेंचमार्क

हमने अपने सभी उदाहरण मॉडलों के विरुद्ध WAF-A-MoLE का मूल्यांकन किया।

नीचे दिया गया प्लॉट WAF-A-MoLE द्वारा admin' OR 1=1# पेलोड को तब तक उत्परिवर्तित करने में लगने वाले समय को दर्शाता है जब तक कि इसे प्रत्येक वर्गीकारक द्वारा सौम्य के रूप में स्वीकार नहीं किया गया।

x अक्ष पर हमारे पास समय है (सेकंड में, लॉगरिदमिक स्केल)। y अक्ष पर हमारे पास विश्वास मान है, अर्थात, एक वर्गीकारक कितना सुनिश्चित है कि दिया गया पेलोड SQL इंजेक्शन है (प्रतिशत में)।

ध्यान दें कि किसी पेलोड के SQL इंजेक्शन होने पर "50% सुनिश्चित" होना एक सिक्का उछालने के बराबर है। यह सामान्य वर्गीकरण सीमा है: यदि विश्वास कम है, तो पेलोड को सौम्य के रूप में वर्गीकृत किया जाता है।

Benchmark over time

प्रयोग DigitalOcean Standard Droplets पर किए गए।

योगदान दें

प्रश्न, बग रिपोर्ट और पुल रिक्वेस्ट का स्वागत है।

विशेष रूप से, यदि आप इस प्रोजेक्ट का विस्तार करने में रुचि रखते हैं, तो हम निम्नलिखित योगदानों की तलाश में हैं:

  1. नए WAF एडाप्टर
  2. नए उत्परिवर्तन ऑपरेटर
  3. नए खोज एल्गोरिदम

टीम

  • Luca Demetrio - CSecLab, DIBRIS, University of Genova
  • Andrea Valenza - CSecLab, DIBRIS, University of Genova
  • Gabriele Costa - SysMA, IMT Lucca
  • Giovanni Lagorio - CSecLab, DIBRIS, University of Genova
टूल डाउनलोड करें
उत्परिवर्तनउदाहरण
केस स्वैपिंगadmin' OR 1=1# ⇒ admin' oR 1=1#
व्हाइटस्पेस प्रतिस्थापनadmin' OR 1=1# ⇒ admin'\t\rOR\n1=1#
टिप्पणी इंजेक्शनadmin' OR 1=1# ⇒ admin'/**/OR 1=1#
टिप्पणी पुनर्लेखनadmin'/**/OR 1=1# ⇒ admin'/*xyz*/OR 1=1#abc
पूर्णांक एन्कोडिंगadmin' OR 1=1# ⇒ admin' OR 0x1=(SELECT 1)#
ऑपरेटर स्वैपिंगadmin' OR 1=1# ⇒ admin' OR 1 LIKE 1#
लॉजिकल इनवेरिएंटadmin' OR 1=1# ⇒ admin' OR 1=1 AND 0<1#
नंबर शफलिंगadmin' OR 1=1# ⇒ admin' OR 2=2#
वर्गीकारक का नामएल्गोरिदम
WafBrainपुनरावर्ती तंत्रिका नेटवर्क
ML-Based-WAFगैर-रैखिक SVM
ML-Based-WAFस्टोकेस्टिक ग्रेडिएंट डिसेंट
ML-Based-WAFAdaBoost
टोकन-आधारितसादा बेयस
टोकन-आधारितरैंडम फ़ॉरेस्ट
टोकन-आधारितरैखिक SVM
टोकन-आधारितगाऊसी SVM
SQLiGoT - Directed Proportionalगाऊसी SVM
SQLiGoT - Directed Unproportionalगाऊसी SVM
SQLiGoT - Undirected Proportionalगाऊसी SVM
SQLiGoT - Undirected Unproportionalगाऊसी SVM