Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
WAF-A-MoLE — Um fuzzer guiado baseado em mutação para Firewalls de Aplicação Web baseados em ML. | Kitploit
Ferramentas/GitHubGitHub/avalz/waf-a-mole
Bypass de WAFSegurança WebFuzzingAprendizado de MáquinaAtaque Adversário
GitHubavalz/waf-a-mole

WAF-A-MoLE

Um fuzzer guiado baseado em mutação para Firewalls de Aplicação Web baseados em ML.

Ver Repositório
2053320há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

WAF-A-MoLE

Um fuzzer guiado por mutação para Firewalls de Aplicação Web baseados em ML, inspirado no AFL e baseado no FuzzingBook de Andreas Zeller e outros.

Dado um ataque de injeção SQL de entrada, ele tenta produzir uma consulta semanticamente invariante que consiga contornar o WAF alvo. Você pode usar esta ferramenta para avaliar a robustez do seu produto, deixando o WAF-A-MoLE explorar o espaço de soluções para encontrar "pontos cegos" perigosos não cobertos pelo classificador alvo.

Python Version License Documentation Status

Arquitetura

WAF-A-MoLE Architecture

O WAF-A-MoLE pega um payload inicial e o insere no Pool de payloads, que gerencia uma fila de prioridade ordenada pela pontuação de confiança do WAF sobre cada payload.

Durante cada iteração, o cabeça do Pool de payloads é passado para o Fuzzer, onde é mutado aleatoriamente, aplicando um dos operadores de mutação disponíveis.

Operadores de mutação

Os operadores de mutação preservam todos a semântica e aproveitam o alto poder expressivo da linguagem SQL (nesta versão, MySQL).

Abaixo estão os operadores de mutação disponíveis na versão atual do WAF-A-MoLE.

MutaçãoExemplo
Troca de Maiúsculas/Minúsculasadmin' OR 1=1# ⇒ admin' oR 1=1#
Substituição de Espaços em Brancoadmin' OR 1=1# ⇒ admin'\t\rOR\n1=1#
Inserção de Comentáriosadmin' OR 1=1# ⇒ admin'/**/OR 1=1#
Reescrita de Comentáriosadmin'/**/OR 1=1# ⇒ admin'/*xyz*/OR 1=1#abc
Codificação de Inteirosadmin' OR 1=1# ⇒ admin' OR 0x1=(SELECT 1)#
Troca de Operadoresadmin' OR 1=1# ⇒ admin' OR 1 LIKE 1#
Invariante Lógicoadmin' OR 1=1# ⇒ admin' OR 1=1 AND 0<1#
Embaralhamento de Númerosadmin' OR 1=1# ⇒ admin' OR 2=2#

Como citar-nos

O WAF-A-MoLE implementa a metodologia apresentada em "WAF-A-MoLE: Evading Web Application Firewalls through Adversarial Machine Learning". Uma pré-impressão do nosso artigo também pode ser encontrada no arXiv.

Se quiser citar-nos, utilize a seguinte referência (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}
}

Executando o WAF-A-MoLE

Pré-requisitos

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

Configuração

pip install -r requirements.txt

Exemplo de Uso

Pode avaliar a robustez do seu próprio WAF, ou testar o WAF-A-MoLE contra alguns classificadores de exemplo. No primeiro caso, consulte a classe Model. O seu modelo personalizado precisa implementar esta classe para ser avaliado pelo WAF-A-MoLE. Já fornecemos wrappers para classificadores do sci-kit learn e keras que podem ser estendidos para se adequar à sua fase de extração de características (se houver).

Ajuda

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.

Contornando modelos de exemplo

Fornecemos alguns modelos pré-treinados com os quais pode se divertir, localizados em wafamole/models/custom/example_models. Os classificadores que utilizamos estão listados na tabela abaixo.

Nome do ClassificadorAlgoritmo
WafBrainRede Neural Recorrente
ML-Based-WAFSVM Não Linear
ML-Based-WAFGradiente Descendente Estocástico
ML-Based-WAFAdaBoost
Baseado em TokensNaive Bayes
Baseado em TokensRandom Forest
Baseado em TokensSVM Linear
Baseado em TokensSVM Gaussiano
SQLiGoT - Proporcional DirecionadoSVM Gaussiano
SQLiGoT - Desproporcional DirecionadoSVM Gaussiano
SQLiGoT - Proporcional Não DirecionadoSVM Gaussiano
SQLiGoT - Desproporcional Não DirecionadoSVM Gaussiano

Além dos WAFs baseados em ML, o WAF-a-MoLE também suporta WAFs baseados em regras. Especificamente, fornece um wrapper para o WAF ModSecurity equipado com o OWASP Core Rule Set (CRS), baseado no projeto pymodsecurity.

WAF-BRAIN - Rede Neural Recorrente

Contorne o classificador WAF-Brain pré-treinado usando um equivalente a 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 Não Linear (com conjunto de dados original do WAF-A-MoLE)

Contorne o classificador SVM do ML-Based-WAF pré-treinado usando um equivalente a 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 Não Linear (com conjuntos de dados SQLiV5/SQLiV3)

Contorne o classificador SVM do ML-Based-WAF pré-treinado usando um equivalente a admin' OR 1=1#. Note que o SQLiV5 é um conjunto de dados proveniente do Kaggle expandido com uma série de consultas geradas pelo próprio WAF-A-MoLE, como prova de conceito de que as consultas do WAF-A-MoLE podem melhorar a robustez de um WAF com retreinamento. Use mlbasedwaf_svc_sqliv3.dump para contornar o WAF treinado com o conjunto de dados original do Kaggle (SQLiV3).

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