Skip to content

Repository files navigation

Simulador de Ataques e Fuzzer de Segurança para APIs

Uma ferramenta acessível, modular e robusta desenvolvida em Python e Playwright para simulação de ataques em APIs. O projeto foi pensado para desenvolvedores iniciantes e entusiastas de segurança (AppSec) que desejam testar a resiliência de suas aplicações contra as principais vulnerabilidades catalogadas no OWASP API Security Top 10.


Funcionalidades Principais

  • Mapeamento Automático de Rotas: Analisa documentações OpenAPI/Swagger (JSON ou YAML), resolve referências $ref recursivamente e identifica parâmetros de rota, query e corpos de requisição (payloads).
  • Motor HTTP com Playwright: Utiliza a API APIRequestContext do Playwright para disparar requisições assíncronas, simulando requisições reais de forma rápida e controlada.
  • Módulos de Varredura:
    • Falta de Rate Limiting: Envia rajadas de requisições simultâneas para verificar se a API bloqueia abusos retornando HTTP 429 Too Many Requests.
    • IDOR (Referência Direta Insegura a Objetos): Altera identificadores em rotas e parâmetros para checar se dados confidenciais são expostos sem autorização.
    • Logic & Input Breaking (Fuzzing de Entrada): Injeta payloads de teste (aspas, SQLi, injeção de comandos) para verificar a ocorrência de erros internos não tratados (HTTP 500) ou vazamentos de pilha (stack traces).
    • Mutador Dinâmico de JSON: Analisa a estrutura esperada no corpo da requisição e aplica variações de teste campo a campo.
  • Relatórios Detalhados: Gera saídas em formato JSON estruturado e relatórios visuais em HTML com sugestões claras de correção.

Estrutura do Projeto

api_fuzzer/
├── core/
│   ├── parser.py       # Leitor e analisador da especificação OpenAPI
│   ├── client.py       # Cliente HTTP baseado em Playwright
│   ├── runner.py       # Orquestrador assíncrono dos testes
│   └── reporter.py     # Gerador de relatórios JSON e HTML
├── modules/
│   ├── base.py         # Classe base para criação de novos módulos
│   ├── rate_limit.py   # Módulo de teste de limite de taxa
│   ├── idor.py         # Módulo de verificação de IDOR
│   └── logic_breaking.py # Módulo de fuzzing e quebra de lógica
└── utils/
    ├── mutator.py      # Gerador de mutações em payloads JSON
    ├── payloads.py     # Coleção de dicionários e vetores de teste
    └── sanitizer.py    # Utilitário para validação e higienização de entradas

Instalação e Configuração

Pré-requisitos

  • Python 3.8 ou superior
  • Pip (gerenciador de pacotes do Python)

Passo a Passo

  1. Clone o repositório e instale as dependências necessárias:

    pip install -r requirements.txt
  2. Instale os navegadores do Playwright (necessário para os testes HTTP e automação):

    playwright install chromium

Como Executar

Módulos CLI (Linha de Comando)

Para rodar uma varredura direta indicando o arquivo OpenAPI e o endereço da API alvo:

python api_fuzzer/main.py --spec mock_openapi.json --target http://localhost:8000

Se a sua API exigir um token de autorização manual, você pode enviá-lo pelo cabeçalho:

python api_fuzzer/main.py --spec mock_openapi.json --target http://localhost:8000 --header "Authorization: Bearer SEU_TOKEN_AQUI"

Painel Web Interativo (Dashboard)

O projeto também conta com uma interface gráfica simples para acompanhar a execução em tempo real e visualizar os relatórios sem precisar do terminal.

  1. Inicie o servidor do painel web:

    python web_app.py
  2. Abra o seu navegador e acesse:

    http://localhost:8080
    

Medidas de Segurança Aplicadas

Pensando em boas práticas de cibersegurança e proteção de dados, o Dashboard Web possui as seguintes proteções integradas:

  • Autenticação JWT em Cookies Seguros: Uso de cookies com as flags HttpOnly, Secure e SameSite=Strict, impedindo a leitura por scripts maliciosos (XSS).
  • Autenticação via API Key: Suporte a integração com esteiras de CI/CD ou automações através do cabeçalho X-API-Key.
  • Bloqueio de Emergência (Kill Switch): Suporte à variável de ambiente SISTEMA_BLOQUEADO para interrupção imediata de acessos à aplicação em situações de risco.
  • Proteção contra Exposição de Código (Source Maps): Bloqueio automático de requisições buscando arquivos de mapas de código (.map, .ts, .tsx, .jsx, .vue, .svelte).
  • Cabeçalhos de Segurança HTTP: Implementação de Content-Security-Policy (CSP), X-Content-Type-Options: nosniff, X-Frame-Options: DENY e Referrer-Policy.
  • Higiene de Armazenamento Local: NENHUM token ou dado pessoal é mantido em localStorage ou sessionStorage.
  • Gestão de Segredos: Todas as credenciais de produção e chaves de criptografia são lidas exclusivamente por variáveis de ambiente (os.environ).

Contribuição

Contribuições são super bem-vindas! Se você encontrou algum problema ou tem sugestões de novos módulos de teste, fique à vontade para abrir uma issue ou enviar um pull request.


Licença

Este projeto é disponibilizado sob a licença MIT. Sinta-se livre para usar, estudar e modificar o código.

About

Simulador de ataques e fuzzer automatizado para APIs RESTful. Desenvolvido em Python e Playwright para testes de segurança (AppSec) e validação de vulnerabilidades do OWASP API Security Top 10 (IDOR, Rate Limiting, Logic Fuzzing) através de especificações OpenAPI com um painel web interativo.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages