Pular para o conteúdo
Skillpedia
Diversos35 mil · #6018

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

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/performing-api-fuzzing-with-restler/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/performing-api-fuzzing-with-restler/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-restler

Ou 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.md
Conteú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

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#6018
Licença
Apache-2.0
Atualizada em
31/08/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas