Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
WAF-A-MoLE — Un fuzzer guiado basado en mutaciones para cortafuegos de aplicaciones web basados en ML. | Kitploit
Herramientas/GitHubGitHub/avalz/waf-a-mole
Evasión de WAFSeguridad WebFuzzingAprendizaje AutomáticoAtaque Adversario
GitHubavalz/waf-a-mole

WAF-A-MoLE

Un fuzzer guiado basado en mutaciones para cortafuegos de aplicaciones web basados en ML.

Ver Repositorio
2053348hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

WAF-A-MoLE

Un fuzzer guiado basado en mutaciones para Cortafuegos de Aplicaciones Web basados en ML, inspirado en AFL y basado en el FuzzingBook de Andreas Zeller y otros.

Dada una consulta de inyección SQL de entrada, intenta producir una consulta semánticamente invariante que sea capaz de eludir el WAF objetivo. Puedes usar esta herramienta para evaluar la robustez de tu producto permitiendo que WAF-A-MoLE explore el espacio de soluciones para encontrar "puntos ciegos" peligrosos no cubiertos por el clasificador objetivo.

Python Version License Documentation Status

Arquitectura

WAF-A-MoLE Architecture

WAF-A-MoLE toma un payload inicial y lo inserta en el Pool de payloads, que gestiona una cola de prioridad ordenada por la puntuación de confianza del WAF sobre cada payload.

Durante cada iteración, la cabeza del Pool de payloads se pasa al Fuzzer, donde se muta aleatoriamente, aplicando uno de los operadores de mutación disponibles.

Operadores de mutación

Todos los operadores de mutación preservan la semántica y aprovechan el alto poder expresivo del lenguaje SQL (en esta versión, MySQL).

A continuación se muestran los operadores de mutación disponibles en la versión actual de WAF-A-MoLE.

MutaciónEjemplo
Intercambio de mayúsculas/minúsculasadmin' OR 1=1# ⇒ admin' oR 1=1#
Sustitución de espacios en blancoadmin' OR 1=1# ⇒ admin'\t\rOR\n1=1#
Inyección de comentariosadmin' OR 1=1# ⇒ admin'/**/OR 1=1#
Reescritura de comentariosadmin'/**/OR 1=1# ⇒ admin'/*xyz*/OR 1=1#abc
Codificación de enterosadmin' OR 1=1# ⇒ admin' OR 0x1=(SELECT 1)#
Intercambio de operadoresadmin' OR 1=1# ⇒ admin' OR 1 LIKE 1#
Invariante lógicaadmin' OR 1=1# ⇒ admin' OR 1=1 AND 0<1#
Barajado de númerosadmin' OR 1=1# ⇒ admin' OR 2=2#

Cómo citarnos

WAF-A-MoLE implementa la metodología presentada en "WAF-A-MoLE: Evading Web Application Firewalls through Adversarial Machine Learning". También se puede encontrar una preimpresión de nuestro artículo en arXiv.

Si quieres citarnos, por favor usa la siguiente referencia (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}
}

Ejecutando WAF-A-MoLE

Requisitos previos

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

Configuración

pip install -r requirements.txt

Ejemplo de uso

Puedes evaluar la robustez de tu propio WAF, o probar WAF-A-MoLE contra algunos clasificadores de ejemplo. En el primer caso, echa un vistazo a la clase Model. Tu modelo personalizado necesita implementar esta clase para ser evaluado por WAF-A-MoLE. Ya proporcionamos wrappers para clasificadores de sci-kit learn y keras que pueden extenderse para adaptarse a tu fase de extracción de características (si la hay).

Ayuda

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.

Evadiendo modelos de ejemplo

Proporcionamos algunos modelos preentrenados con los que puedes divertirte, ubicados en wafamole/models/custom/example_models. Los clasificadores que usamos se enumeran en la siguiente tabla.

Nombre del clasificadorAlgoritmo
WafBrainRed Neuronal Recurrente
ML-Based-WAFSVM No Lineal
ML-Based-WAFDescenso de Gradiente Estocástico
ML-Based-WAFAdaBoost
Basado en tokensNaive Bayes
Basado en tokensBosque Aleatorio
Basado en tokensSVM Lineal
Basado en tokensSVM Gaussiana
SQLiGoT - Dirigido ProporcionalSVM Gaussiana
SQLiGoT - Dirigido No ProporcionalSVM Gaussiana
SQLiGoT - No Dirigido ProporcionalSVM Gaussiana
SQLiGoT - No Dirigido No ProporcionalSVM Gaussiana

Además de los WAF basados en ML, WAF-A-MoLE también soporta WAF basados en reglas. Específicamente, proporciona un wrapper para el WAF ModSecurity equipado con el OWASP Core Rule Set (CRS), basado en el proyecto pymodsecurity.

WAF-BRAIN - Red Neuronal Recurrente

Bypass del clasificador WAF-Brain preentrenado usando un equivalente de 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 No Lineal (con conjunto de datos original de WAF-A-MoLE)

Bypass del clasificador SVM ML-Based-WAF preentrenado usando un equivalente de 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 No Lineal (con conjuntos de datos SQLiV5/SQLiV3)

Bypass del clasificador SVM ML-Based-WAF preentrenado usando un equivalente de admin' OR 1=1#. Nota: SQLiV5 es un conjunto de datos obtenido de Kaggle expandido con una serie de consultas generadas por el propio WAF-A-MoLE, como prueba de concepto de que las consultas de WAF-A-MoLE pueden mejorar la robustez de un WAF mediante reentrenamiento. Usa mlbasedwaf_svc_sqliv3.dump para evadir el WAF entrenado con el conjunto de datos original de Kaggle (SQLiV3).

Descargar herramienta