Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
WAF-A-MoLE — Ein geführter mutationsbasierter Fuzzer für ML-basierte Web Application Firewalls | Kitploit
Tools/GitHubGitHub/avalz/waf-a-mole
WAF-UmgehungWebsicherheitFuzzingMaschinelles LernenAdversarial-Angriff
GitHubavalz/waf-a-mole

WAF-A-MoLE

Ein geführter mutationsbasierter Fuzzer für ML-basierte Web Application Firewalls

Repository anzeigen
2053320vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

WAF-A-MoLE

Ein geführter mutationsbasierter Fuzzer für ML-basierte Web Application Firewalls, inspiriert von AFL und basierend auf dem FuzzingBook von Andreas Zeller et al.

Gegeben eine SQL-Injection-Abfrage versucht es, eine semantisch invariante Abfrage zu erzeugen, die in der Lage ist, die Ziel-WAF zu umgehen. Sie können dieses Tool verwenden, um die Robustheit Ihres Produkts zu bewerten, indem WAF-A-MoLE den Lösungsraum erkundet, um gefährliche „blinde Flecken“ zu finden, die vom Zielklassifikator nicht abgedeckt werden.

Python Version License Documentation Status

Architektur

WAF-A-MoLE Architektur

WAF-A-MoLE nimmt eine initiale Payload und fügt sie in den Pool von Payloads ein, der eine Prioritätswarteschlange verwaltet, geordnet nach dem WAF-Konfidenzwert für jede Payload.

Während jeder Iteration wird der Kopf des Payload-Pools an den Fuzzer übergeben, wo er zufällig mutiert wird, indem einer der verfügbaren Mutationsoperatoren angewendet wird.

Mutationsoperatoren

Mutationsoperatoren sind alle semantikerhaltend und nutzen die hohe Ausdruckskraft der SQL-Sprache (in dieser Version MySQL).

Nachfolgend sind die Mutationsoperatoren aufgeführt, die in der aktuellen Version von WAF-A-MoLE verfügbar sind.

MutationBeispiel
Case Swappingadmin' OR 1=1# ⇒ admin' oR 1=1#
Whitespace Substitutionadmin' OR 1=1# ⇒ admin'\t\rOR\n1=1#
Comment Injectionadmin' OR 1=1# ⇒ admin'/**/OR 1=1#
Comment Rewritingadmin'/**/OR 1=1# ⇒ admin'/*xyz*/OR 1=1#abc
Integer Encodingadmin' OR 1=1# ⇒ admin' OR 0x1=(SELECT 1)#
Operator Swappingadmin' OR 1=1# ⇒ admin' OR 1 LIKE 1#
Logical Invariantadmin' OR 1=1# ⇒ admin' OR 1=1 AND 0<1#
Number Shufflingadmin' OR 1=1# ⇒ admin' OR 2=2#

So zitieren Sie uns

WAF-A-MoLE implementiert die in „WAF-A-MoLE: Evading Web Application Firewalls through Adversarial Machine Learning“ vorgestellte Methodik. Ein Preprint unseres Artikels ist auch auf arXiv verfügbar.

Wenn Sie uns zitieren möchten, verwenden Sie bitte folgende Referenz (BibTeX):

@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}
}

Ausführung von WAF-A-MoLE

Voraussetzungen

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

Einrichtung

pip install -r requirements.txt

Beispielverwendung

Sie können die Robustheit Ihrer eigenen WAF bewerten oder WAF-A-MoLE gegen einige Beispielklassifikatoren testen. Im ersten Fall werfen Sie einen Blick auf die Model-Klasse. Ihr benutzerdefiniertes Modell muss diese Klasse implementieren, um von WAF-A-MoLE bewertet zu werden. Wir stellen bereits Wrapper für sci-kit learn und keras Klassifikatoren zur Verfügung, die erweitert werden können, um Ihre Merkmalsextraktionsphase (falls vorhanden) anzupassen.

Hilfe

wafamole --help

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

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.

Umgehung von Beispielmodellen

Wir stellen einige vortrainierte Modelle zur Verfügung, mit denen Sie experimentieren können, die sich unter wafamole/models/custom/example_models befinden. Die von uns verwendeten Klassifikatoren sind in der folgenden Tabelle aufgeführt.

KlassifikatornameAlgorithmus
WafBrainRecurrent Neural Network
ML-Based-WAFNon-Linear SVM
ML-Based-WAFStochastic Gradient Descent
ML-Based-WAFAdaBoost
Token-basedNaive Bayes
Token-basedRandom Forest
Token-basedLinear SVM
Token-basedGaussian SVM
SQLiGoT - Directed ProportionalGaussian SVM
SQLiGoT - Directed UnproportionalGaussian SVM
SQLiGoT - Undirected ProportionalGaussian SVM
SQLiGoT - Undirected UnproportionalGaussian SVM

Zusätzlich zu ML-basierten WAFs unterstützt WAF-a-MoLE auch regelbasierte WAFs. Insbesondere bietet es einen Wrapper für die ModSecurity WAF mit dem OWASP Core Rule Set (CRS), basierend auf dem pymodsecurity-Projekt.

WAF-BRAIN – Rekurrentes neuronales Netzwerk

Umgehen Sie den vortrainierten WAF-Brain-Klassifikator mit einem Äquivalent von admin' OR 1=1#.

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

ML-Based-WAF – Nicht-lineare SVM (mit ursprünglichem WAF-A-MoLE-Datensatz)

Umgehen Sie den vortrainierten ML-Based-WAF SVM-Klassifikator mit einem Äquivalent von admin' OR 1=1#.

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

ML-Based-WAF – Nicht-lineare SVM (mit SQLiV5/SQLiV3-Datensätzen)

Umgehen Sie den vortrainierten ML-Based-WAF SVM-Klassifikator mit einem Äquivalent von admin' OR 1=1#. Beachten Sie, dass SQLiV5 ein von Kaggle stammender Datensatz ist, der um eine Reihe von durch WAF-A-MoLE selbst generierten Abfragen erweitert wurde, als Proof of Concept, dass WAF-A-MoLE-Abfragen die Robustheit einer WAF durch erneutes Training verbessern können. Verwenden Sie mlbasedwaf_svc_sqliv3.dump, um die mit dem ursprünglichen Kaggle-Datensatz (SQLiV3) trainierte WAF zu umgehen.

Tool herunterladen