Pular para o conteúdo
Skillpedia
Testes35 mil · #6214

testing-api-authentication-weaknesses

Ensina seu agente de IA a testar o código e achar erros antes dos usuários e construir APIs e sistemas de back-end.

O que ela faz

Esta ferramenta verifica se a segurança de autenticação de APIs (os sistemas que permitem que diferentes softwares conversem entre si) está fraca. Ela procura por falhas que poderiam permitir que pessoas não autorizadas acessem informações.

Quando usar

  • ✓Antes de colocar uma API nova no ar.
  • ✓Para testar se senhas fracas são aceitas.
  • ✓Para ver se informações sensíveis vazam em URLs ou logs.

Exemplo do que pedir para a IA

“Verifique a segurança da autenticação da minha API.”

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/testing-api-authentication-weaknesses/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/testing-api-authentication-weaknesses/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta tenta diferentes métodos para acessar a API, como usar senhas comuns ou tokens inválidos, para ver se encontra alguma brecha de segurança.

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 testing-api-authentication-weaknesses

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/testing-api-authentication-weaknesses/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.

Testando Fraquezas de Autenticação de API

Quando Usar

  • Avaliando mecanismos de autenticação de API REST para vulnerabilidades de bypass antes da implantação em produção
  • Testando a implementação de tokens JWT para fraquezas comuns (nenhum algoritmo, confusão de chave, expiração ausente)
  • Avaliando se todos os endpoints da API impõem autenticação ou se alguns estão expostos não intencionalmente
  • Testando mecanismos de geração, armazenamento e rotação de chaves de API para previsibilidade ou vazamento
  • Validando o gerenciamento de sessão, incluindo expiração de token, revogação e segurança de token de atualização

Não use sem autorização por escrito. Testes de autenticação envolvem tentativas de contornar controles de segurança.

Pré-requisitos

  • Autorização por escrito especificando a API alvo e os mecanismos de autenticação em escopo
  • Credenciais de teste válidas para pelo menos duas funções de usuário (usuário regular, administrador)
  • Burp Suite Professional com extensões relacionadas a JWT (JSON Web Tokens, JWT Editor)
  • Python 3.10+ com requests, PyJWT e jwt bibliotecas
  • Listas de palavras para teste de credenciais (listas de palavras de autenticação SecLists)
  • Documentação da API ou especificação OpenAPI

Fluxo de Trabalho

Etapa 1: Identificação do Mecanismo de Autenticação

import requests
import json

BASE_URL = "https://target-api.example.com/api/v1"

# Probe the API to identify authentication mechanisms
auth_indicators = {
    "jwt_bearer": False,
    "api_key_header": False,
    "api_key_query": False,
    "basic_auth": False,
    "oauth2": False,
    "session_cookie": False,
    "custom_token": False,
}

# Test 1: Check unauthenticated access
resp = requests.get(f"{BASE_URL}/users/me")
print(f"Unauthenticated: {resp.status_code}")
if resp.status_code == 200:
    print("[CRITICAL] Endpoint accessible without authentication")

# Test 2: Check WWW-Authenticate header
if "WWW-Authenticate" in resp.headers:
    scheme = resp.headers["WWW-Authenticate"]
    print(f"Auth scheme advertised: {scheme}")
    if "Bearer" in scheme:
        auth_indicators["jwt_bearer"] = True
    elif "Basic" in scheme:
        auth_indicators["basic_auth"] = True

# Test 3: Login and examine tokens
login_resp = requests.post(f"{BASE_URL}/auth/login",
    json={"username": "testuser@example.com", "password": "TestPass123!"})

if login_resp.status_code == 200:
    login_data = login_resp.json()
    # Check for JWT tokens
    for key in ["token", "access_token", "jwt", "id_token"]:
        if key in login_data:
            token = login_data[key]
            if token.count('.') == 2:
                auth_indicators["jwt_bearer"] = True
                print(f"JWT found in response field: {key}")
    # Check for refresh tokens
    for key in ["refresh_token", "refresh"]:
        if key in login_data:
            print(f"Refresh token found in field: {key}")
    # Check for session cookies
    for cookie in login_resp.cookies:
        print(f"Cookie set: {cookie.name} = {cookie.value[:20]}...")
        if "session" in cookie.name.lower():
            auth_indicators["session_cookie"] = True

print(f"\nAuthentication mechanisms detected: {[k for k,v in auth_indicators.items() if v]}")

Etapa 2: Descoberta de Endpoints Não Autenticados

# Test all endpoints without authentication
endpoints = [
    ("GET", "/users"),
    ("GET", "/users/me"),
    ("GET", "/users/1"),
    ("GET", "/admin/users"),
    ("GET", "/admin/settings"),
    ("GET", "/health"),
    ("GET", "/metrics"),
    ("GET", "/debug"),
    ("GET", "/actuator"),
    ("GET", "/actuator/env"),
    ("GET", "/swagger.json"),
    ("GET", "/api-docs"),
    ("GET", "/graphql"),
    ("POST", "/graphql"),
    ("GET", "/config"),
    ("GET", "/internal/status"),
    ("GET", "/.env"),
    ("GET", "/status"),
    ("GET", "/info"),
    ("GET", "/version"),
]

print("Unauthenticated Endpoint Scan:")
for method, path in endpoints:
    try:
        resp = requests.request(method, f"{BASE_URL}{path}", timeout=5)
        if resp.status_code not in (401, 403):
            content_preview = resp.text[:100] if resp.text else "empty"
            print(f"  [OPEN] {method} {path} -> {resp.status_code}: {content_preview}")
    except requests.exceptions.RequestException:
        pass

Etapa 3: Análise de Token JWT

import base64
import json
import hmac
import hashlib

def decode_jwt_parts(token):
    """Decodifica partes do JWT (cabeçalho e payload) sem verificação."""
    parts = token.split('.')
    if len(parts) != 3:
        return None, None

    def pad_base64(s):

…
Perguntas frequentes

Preciso de permissão para usar esta ferramenta?

Sim, é essencial ter autorização por escrito antes de testar qualquer API, pois isso envolve tentar burlar as proteções de segurança.

O que é 'autenticação'?

É o processo de verificar se um usuário ou sistema é quem diz ser, geralmente pedindo um nome de usuário e senha, ou um token especial.

O que são 'tokens JWT'?

São um tipo de 'crachá' digital usado para autenticação. Esta ferramenta verifica se esses crachás são fáceis de falsificar ou roubar.

Detalhes

Descrição original do autor

Tests API authentication mechanisms for weaknesses including broken token validation, missing authentication on endpoints, weak password policies, credential stuffing susceptibility, token leakage in URLs or logs, and session management flaws. The tester evaluates JWT implementation, API key handling, OAuth flows, and session token entropy to identify authentication bypasses. Maps to OWASP API2:20

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#6214
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