Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
ftw — Framework para Testar WAFs (FTW!) | Kitploit
Ferramentas/GitHubGitHub/fastly/ftw
Scanners de VulnerabilidadesBypass de WAFSegurança WebTestes de PenetraçãoDevSecOpsArchived
GitHubfastly/ftw

ftw

Framework para Testar WAFs (FTW!)

Ver Repositório
2635820há 3 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

Framework para Testar WAFs (FTW)

Build Status

Propósito

Este projeto foi criado por pesquisadores da ModSecurity e da Fastly para ajudar a fornecer testes rigorosos para regras de WAF. Ele usa o OWASP Core Ruleset V3 como base para testar regras em um WAF. Cada regra do conjunto de regras é carregada em um arquivo YAML que emite requisições HTTP que acionarão essas regras.

Metas / Casos de uso incluem:

  • Encontrar regressões em implantações de WAF usando integração contínua e emitindo ataques repetíveis a um WAF
  • Fornecer um framework de teste para novas regras no ModSecurity; se uma regra for submetida, ela DEVE ter testes positivos e negativos correspondentes
  • Avaliar WAFs contra um conjunto de regras comum e acordado (OWASP)
  • Testar e verificar regras personalizadas para WAFs que não fazem parte do conjunto de regras principal

Instalação

  • git clone [email protected]:fastly/ftw.git
  • cd ftw
  • Make sure that pip is installed apt-get install python-pip
  • pip install -r requirements.txt

Executando Testes com verificação de contém HTML e código de status apenas

  • Crie arquivos YAML que apontem para seu servidor web com um WAF na frente dele
  • py.test test/test_default.py --ruledir test/yaml

Provisionando Apache+Modsecurity+OWASP CRS

Se você precisar de um ambiente para testar regras de WAF, foi criado um com Apache, Modsecurity e versão 3.0.0 do OWASP core ruleset. Isso pode ser implantado por:

  • Checando o repositório: git clone https://github.com/fastly/waf_testbed.git
  • Digitando vagrant up

Executando Testes enquanto substitui o endereço de destino nos arquivos yaml para um domínio personalizado

  • inicie seu servidor web de teste
  • py.test test/test_default.py --ruledir=test/yaml --destaddr=domain.com --port 443 --protocol https

Executar teste de integração, servidor web local, pode ser necessário usar sudo

  • py.test test/integration/test_logcontains.py -s --ruledir=test/integration/

COMO INTEGRAR LOGS

  1. Crie um arquivo *.py com as importações necessárias; um exemplo é mostrado em test/integration/test_logcontains.py
  2. Todas as funções com test* no início serão executadas pelo py.test, então crie uma função def test_somewaf
  3. Implemente uma classe que herda LogChecker
    1. Implemente a função get_logs(). O FTW chamará esta função após executar o teste, e definirá os datetime de self.start e self.end
    2. Use as informações das variáveis datetime para recuperar os arquivos do seu WAF, seja um arquivo ou uma chamada de API
    3. Obtenha os logs, armazene-os em um array de strings e retorne-os de get_logs()
  4. Faça uso de py.test fixtures. Use um decorador de função @pytest.fixture, retorne seu novo objeto LogChecker. Sempre que você usar um argumento de função em seus testes que corresponda ao nome desse @pytest.fixture, ele instanciará seu objeto e facilitará a execução dos testes. Um exemplo disso está no arquivo python do passo 1.
  5. Escreva uma configuração de teste no formato *.yaml conforme visto em test/integration/LOGCONTAINSFIXTURE.yaml; a linha log_contains requer uma string que é uma regex. O FTW compilará a string log_contains de cada estágio no arquivo YAML em uma regex. Esta regex será então usada junto com as linhas de logs passadas de get_logs() para procurar uma correspondência. A string log_contains, portanto, deve ser um ID de regra único, pois o FTW é ganancioso e passará na primeira correspondência. Falsos positivos são mitigados pelo horário de início/fim passado para o objeto LogChecker, mas é melhor ficar seguro e usar regexes únicas.
  6. Para cada estágio, a função get_logs() é chamada, portanto, certifique-se de considerar as chamadas de API se for assim que você recupera seus logs.

Fazendo requisições HTTP programaticamente

Embora seja preferível fazer requisições usando o formato YAML, frequentemente testes automatizados exigem fazer muitas requisições dinâmicas. Nesse caso, é recomendado fazer uso do framework py.test para produzir casos de teste que possam ser executados como parte do todo. Geralmente, fazer uma requisição HTTP é simples:

  1. crie uma instância da classe HttpUA()
  2. crie uma instância da classe Input() fornecendo quaisquer parâmetros que você não queira que sejam padrão
  3. forneça a instância da classe input para HttpUA.send_request()

Para alguns exemplos, veja os testes de integração http

Baixar ferramenta