performing-api-fuzzing-with-restler
Faz seu agente testar APIs de forma automática para encontrar erros. Ele envia muitas requisições diferentes para descobrir falhas que poderiam ser exploradas por invasores.
O que ela faz
Esta ferramenta ajuda a encontrar falhas de segurança em APIs (serviços online que aplicativos usam para se comunicar). Ela testa automaticamente a API com muitas combinações de dados para ver se algo quebra.
Quando usar
- ✓Testar a segurança de uma API antes de colocá-la no ar.
- ✓Verificar se uma sequência específica de comandos na API causa problemas.
- ✓Procurar por erros que indicam que a API pode ser invadida.
Exemplo do que pedir para a IA
“Teste a segurança da minha API usando a especificação OpenAPI e procure por erros.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta usa um programa chamado RESTler para entender como a API funciona a partir de um arquivo de descrição (OpenAPI/Swagger). Depois, ela envia muitos dados diferentes para a API, incluindo dados maliciosos, para encontrar vulnerabilidades.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill performing-api-fuzzing-with-restlerOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/performing-api-fuzzing-with-restler/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Realizando Fuzzing de API com RESTler
Quando Usar
- Realizando testes de segurança automatizados de APIs REST usando suas especificações OpenAPI/Swagger
- Descobrindo bugs que só se manifestam através de sequências específicas de chamadas de API (testes com estado)
- Encontrando respostas de Erro Interno do Servidor 500 que indicam exceções não tratadas ou condições de falha
- Testando a validação de entrada da API através de fuzzing de parâmetros com payloads malformados, de limite e de injeção
- Executando testes de regressão de segurança contínuos em pipelines de CI/CD para alterações de API
Não use contra ambientes de produção sem autorização explícita e monitoramento. O RESTler cria e exclui recursos agressivamente durante o fuzzing.
Pré-requisitos
- Autorização por escrito especificando a API alvo e o escopo de teste aceitável
- Python 3.12+ e runtime .NET 8.0 instalados
- RESTler baixado de https://github.com/microsoft/restler-fuzzer
- Especificação OpenAPI/Swagger (v2 ou v3) para a API alvo
- Credenciais de autenticação da API (tokens, chaves de API ou credenciais OAuth)
- Ambiente de teste/staging isolado (o RESTler pode criar milhares de recursos por hora)
Fluxo de Trabalho
Passo 1: Instalação e Configuração do RESTler
# Clone and build RESTler
git clone https://github.com/microsoft/restler-fuzzer.git
cd restler-fuzzer
# Build RESTler
python3 ./build-restler.py --dest_dir /opt/restler
# Verify installation
/opt/restler/restler/Restler --help
# Alternative: Use pre-built release
# Download from https://github.com/microsoft/restler-fuzzer/releases
Passo 2: Compilar a Especificação da API
# Compile the OpenAPI spec into a RESTler fuzzing grammar
/opt/restler/restler/Restler compile \
--api_spec /path/to/openapi.yaml
# Output directory structure:
# Compile/
# grammar.py - Generated fuzzing grammar
# grammar.json - Grammar in JSON format
# dict.json - Custom dictionary for fuzzing values
# engine_settings.json - Engine configuration
# config.json - Compilation config
Dicionário personalizado para fuzzing direcionado (dict.json):
{
"restler_fuzzable_string": [
"fuzzstring",
"' OR '1'='1",
"\" OR \"1\"=\"1",
"<script>alert(1)</script>",
"../../../etc/passwd",
"${7*7}",
"{{7*7}}",
"a]UNION SELECT 1,2,3--",
"\"; cat /etc/passwd; echo \"",
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
],
"restler_fuzzable_int": [
"0",
"-1",
"999999999",
"2147483647",
"-2147483648"
],
"restler_fuzzable_bool": ["true", "false", "null", "1", "0"],
"restler_fuzzable_datetime": [
"2024-01-01T00:00:00Z",
"0000-00-00T00:00:00Z",
"9999-12-31T23:59:59Z",
"invalid-date"
],
"restler_fuzzable_uuid4": [
"00000000-0000-0000-0000-000000000000",
"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
],
"restler_custom_payload": {
"/users/{userId}": ["1", "0", "-1", "admin", "' OR 1=1--"],
"/orders/{orderId}": ["1", "0", "999999999"]
}
}
Passo 3: Configurar Autenticação
# authentication_token.py - RESTler authentication module
import requests
import json
import time
class AuthenticationProvider:
def __init__(self):
self.token = None
self.token_expiry = 0
self.auth_url = "https://target-api.example.com/api/v1/auth/login"
self.credentials = {
"email": "fuzzer@test.com",
"password": "FuzzerPass123!"
}
def get_token(self):
"""Get or refresh authentication token."""
current_time = time.time()
if self.token and current_time < self.token_expiry - 60:
return self.token
resp = requests.post(self.auth_url, json=self.credentials)
if resp.status_code == 200:
data = resp.json()
self.token = data["access_token"]
self.token_expiry = current_time + 3600 # Assume 1-hour TTL
return self.token
else:
raise Exception(f"Authentication failed: {resp.status_code}")
def get_auth_header(self):
"""Return the authentication header for RESTler."""
token = self.get_token()
return f"Authorization: Bearer {token}"
# Export the token refresh command for RESTler
auth = AuthenticationProvider()
print(auth.get_auth_header())
Configurações do motor para autenticação (engine_settings.json):
…
Perguntas frequentes
Preciso de permissão para usar esta ferramenta?
Sim, você precisa de autorização escrita para testar uma API, especialmente se ela estiver em produção. A ferramenta pode criar e excluir muitos dados rapidamente.
O que é 'fuzzing'?
Fuzzing é uma técnica de teste onde se envia dados aleatórios ou inesperados para um programa para ver se ele se comporta de forma incorreta ou falha.
O que são 'bugs stateful'?
São falhas que só aparecem quando você realiza uma série de ações na API, uma depois da outra, e não quando testa cada ação isoladamente.
Detalhes
Descrição original do autor
Uses Microsoft RESTler to perform stateful REST API fuzzing: compiles an OpenAPI/Swagger spec into a RESTler grammar, configures authentication, and runs test/fuzz-lean/fuzz modes that generate request sequences exercising producer-consumer dependencies, then flags 500 errors, auth bypasses, resource leaks, and injection bugs. Use when fuzzing REST APIs for stateful bugs or running RESTler-based a
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #6018
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
dashboard-builder
Ajuda seu agente a criar painéis de monitoramento úteis. Ele transforma dados em gráficos que respondem a perguntas importantes sobre o sistema.
affaan-m/ECC
dev-team
Simula uma equipe de desenvolvimento colaborativa, onde diferentes papéis respondem a um problema juntos. É útil para obter múltiplas perspectivas sem trocar de agente manualmente.
affaan-m/ECC
ecc-council
Faz seu agente reunir um conselho de quatro vozes para tomar decisões difíceis. É útil quando há várias opções boas e é preciso debater antes de escolher.
affaan-m/ECC