Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
WAF-A-MoLE — Un fuzzer guidato basato su mutazioni per Web Application Firewall basati su ML. | Kitploit
Strumenti/GitHubGitHub/avalz/waf-a-mole
Bypass WAFSicurezza WebFuzzingMachine LearningAttacco Avversario
GitHubavalz/waf-a-mole

WAF-A-MoLE

Un fuzzer guidato basato su mutazioni per Web Application Firewall basati su ML.

Vedi Repository
20533482 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

WAF-A-MoLE

Un fuzzer guidato basato su mutazioni per Web Application Firewall basati su Machine Learning, ispirato ad AFL e basato sul FuzzingBook di Andreas Zeller e collaboratori.

Data una query di SQL injection come input, tenta di produrre una query semanticamente invariante in grado di bypassare il WAF target. Puoi utilizzare questo strumento per valutare la robustezza del tuo prodotto lasciando che WAF-A-MoLE esplori lo spazio delle soluzioni per trovare pericolosi "punti ciechi" lasciati scoperti dal classificatore target.

Python Version License Documentation Status

Architettura

Architettura di WAF-A-MoLE

WAF-A-MoLE prende un payload iniziale e lo inserisce nel Pool dei payload, che gestisce una coda di priorità ordinata per punteggio di confidenza del WAF su ciascun payload.

Durante ogni iterazione, la testa del Pool dei payload viene passata al Fuzzer, dove viene mutata casualmente applicando uno degli operatori di mutazione disponibili.

Operatori di mutazione

Gli operatori di mutazione preservano tutti la semantica e sfruttano l'elevata potenza espressiva del linguaggio SQL (in questa versione, MySQL).

Di seguito sono elencati gli operatori di mutazione disponibili nella versione corrente di WAF-A-MoLE.

MutazioneEsempio
Scambio di maiuscole/minuscoleadmin' OR 1=1# ⇒ admin' oR 1=1#
Sostituzione di spazi bianchiadmin' OR 1=1# ⇒ admin'\t\rOR\n1=1#
Iniezione di commentiadmin' OR 1=1# ⇒ admin'/**/OR 1=1#
Riscrittura di commentiadmin'/**/OR 1=1# ⇒ admin'/*xyz*/OR 1=1#abc
Codifica interaadmin' OR 1=1# ⇒ admin' OR 0x1=(SELECT 1)#
Scambio di operatoriadmin' OR 1=1# ⇒ admin' OR 1 LIKE 1#
Invarianza logicaadmin' OR 1=1# ⇒ admin' OR 1=1 AND 0<1#
Rimescolamento di numeriadmin' OR 1=1# ⇒ admin' OR 2=2#

Come citarci

WAF-A-MoLE implementa la metodologia presentata in "WAF-A-MoLE: Evading Web Application Firewalls through Adversarial Machine Learning". Una pre-stampa del nostro articolo è disponibile anche su arXiv.

Se desideri citarci, utilizza il seguente riferimento (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}
}

Esecuzione di WAF-A-MoLE

Prerequisiti

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

Configurazione

pip install -r requirements.txt

Esempio di utilizzo

Puoi valutare la robustezza del tuo WAF personalizzato, oppure provare WAF-A-MoLE contro alcuni classificatori di esempio. Nel primo caso, dai un'occhiata alla classe Model. Il tuo modello personalizzato deve implementare questa classe per poter essere valutato da WAF-A-MoLE. Forniamo già wrapper per i classificatori di sci-kit learn e keras che possono essere estesi per adattarsi alla tua fase di estrazione delle caratteristiche (se presente).

Aiuto

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.

Evasione dei modelli di esempio

Forniamo alcuni modelli pre-addestrati con cui divertirti, situati in wafamole/models/custom/example_models. I classificatori utilizzati sono elencati nella tabella seguente.

Nome classificatoreAlgoritmo
WafBrainRete Neurale Ricorrente
ML-Based-WAFSVM Non Lineare
ML-Based-WAFStochastic Gradient Descent
ML-Based-WAFAdaBoost
Basato su tokenNaive Bayes
Basato su tokenRandom Forest
Basato su tokenSVM Lineare
Basato su tokenSVM Gaussiano
SQLiGoT - Proporzionale DirettoSVM Gaussiano
SQLiGoT - Non Proporzionale DirettoSVM Gaussiano
SQLiGoT - Proporzionale Non DirettoSVM Gaussiano
SQLiGoT - Non Proporzionale Non DirettoSVM Gaussiano

Oltre ai WAF basati su ML, WAF-a-MoLE supporta anche WAF basati su regole. In particolare, fornisce un wrapper per il WAF ModSecurity dotato di OWASP Core Rule Set (CRS), basato sul progetto pymodsecurity.

WAF-BRAIN - Rete Neurale Ricorrente

Bypassa il classificatore WAF-Brain pre-addestrato utilizzando un equivalente di 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 - SVM Non Lineare (con dataset originale WAF-A-MoLE)

Bypassa il classificatore SVM ML-Based-WAF pre-addestrato utilizzando un equivalente di admin' OR 1=1#.

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

ML-Based-WAF - SVM Non Lineare (con dataset SQLiV5/SQLiV3)

Bypassa il classificatore SVM ML-Based-WAF pre-addestrato utilizzando un equivalente di admin' OR 1=1#. Nota che SQLiV5 è un dataset proveniente da Kaggle ampliato con una serie di query generate da WAF-A-MoLE stesso, come prova di concetto che le query di WAF-A-MoLE possono migliorare la robustezza di un WAF con ri-addestramento. Usa mlbasedwaf_svc_sqliv3.dump per bypassare il WAF addestrato con il dataset Kaggle originale (SQLiV3).

Scarica lo strumento