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

testing-oauth2-implementation-flaws

Ajuda seu agente a testar a segurança do sistema de login OAuth 2.0. Ele procura por falhas que podem permitir que invasores roubem contas ou acessem informações indevidas. Importante para proteger sistemas de login.

O que ela faz

Esta ferramenta verifica se sistemas que usam OAuth 2.0 e OpenID Connect (métodos comuns de login) têm falhas de segurança. Ela procura por maneiras de roubar informações de login ou obter acesso indevido a contas.

Quando usar

  • ✓Ao testar a segurança de sistemas de login que usam OAuth 2.0 ou OpenID Connect.
  • ✓Quando você suspeita que o processo de login pode ser enganado para dar acesso a quem não deveria.
  • ✓Para verificar se as URLs de redirecionamento após o login estão sendo validadas corretamente.

Exemplo do que pedir para a IA

“Verifique a segurança do sistema de login da aplicação X usando OAuth 2.0.”

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-oauth2-implementation-flaws/SKILL.md

Mensagem pronta para colar

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

A ferramenta simula diferentes tipos de ataques, como tentar redirecionar o usuário para um site malicioso ou roubar o código de acesso. Ela usa ferramentas como Burp Suite para analisar o tráfego de rede e identificar 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 testing-oauth2-implementation-flaws

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/testing-oauth2-implementation-flaws/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 Falhas na Implementação do OAuth2

Quando Usar

  • Avaliar o fluxo de código de autorização do OAuth 2.0 para fraquezas na validação de URI de redirecionamento
  • Testar aplicações cliente OAuth para proteção CSRF (uso do parâmetro state) e aplicação de PKCE
  • Avaliar o armazenamento, transmissão e gerenciamento do ciclo de vida de tokens em implementações OAuth
  • Testar escalonamento de escopo onde clientes solicitam mais permissões do que o autorizado
  • Avaliar implementações OpenID Connect para validação de ID token e uso de nonce

Não use sem autorização por escrito. Testes OAuth podem resultar em roubo de token ou acesso não autorizado.

Pré-requisitos

  • Autorização por escrito especificando o provedor OAuth e as aplicações cliente no escopo
  • Cliente OAuth de teste registrado com o servidor de autorização
  • Burp Suite Professional para interceptar redirecionamentos OAuth e fluxos de token
  • Python 3.10+ com as bibliotecas requests e oauthlib
  • Ferramentas de desenvolvedor do navegador para observar cadeias de redirecionamento OAuth
  • Conhecimento dos tipos de concessão OAuth 2.0 em uso (código de autorização, implícito, credenciais de cliente)

Fluxo de Trabalho

Etapa 1: Reconhecimento do Fluxo OAuth

import requests
import urllib.parse
import re
import hashlib
import base64
import secrets

AUTH_SERVER = "https://auth.example.com"
CLIENT_ID = "test-client-id"
REDIRECT_URI = "https://app.example.com/callback"
SCOPE = "openid profile email"

# Discover OAuth endpoints
well_known = requests.get(f"{AUTH_SERVER}/.well-known/openid-configuration")
if well_known.status_code == 200:
    config = well_known.json()
    print("OAuth/OIDC Configuration:")
    print(f"  Authorization: {config.get('authorization_endpoint')}")
    print(f"  Token: {config.get('token_endpoint')}")
    print(f"  UserInfo: {config.get('userinfo_endpoint')}")
    print(f"  JWKS: {config.get('jwks_uri')}")
    print(f"  Supported grants: {config.get('grant_types_supported')}")
    print(f"  Supported scopes: {config.get('scopes_supported')}")
    print(f"  PKCE methods: {config.get('code_challenge_methods_supported')}")
    auth_endpoint = config['authorization_endpoint']
    token_endpoint = config['token_endpoint']
else:
    # Try common paths
    for path in ["/authorize", "/oauth/authorize", "/oauth2/authorize", "/auth"]:
        resp = requests.get(f"{AUTH_SERVER}{path}", allow_redirects=False)
        if resp.status_code in (302, 400):
            print(f"Authorization endpoint found: {AUTH_SERVER}{path}")
            auth_endpoint = f"{AUTH_SERVER}{path}"
            break

Etapa 2: Teste de Validação de URI de Redirecionamento

# Testar a rigidez da validação de redirect_uri
REDIRECT_BYPASS_PAYLOADS = [
    # Variações de open redirect
    REDIRECT_URI,                                          # Legítimo
    "https://evil.com",                                    # Domínio diferente
    "https://app.example.com.evil.com/callback",          # Subdomínio do atacante
    "https://app.example.com@evil.com/callback",          # Confusão de autoridade de URL
    f"{REDIRECT_URI}/../../../evil.com",                  # Travessia de diretório
    f"{REDIRECT_URI}?next=https://evil.com",              # Injeção de parâmetro
    f"{REDIRECT_URI}#https://evil.com",                   # Injeção de fragmento
    f"{REDIRECT_URI}%23evil.com",                         # Fragmento codificado
    "https://app.example.com/callback/../../evil",        # Caminho relativo
    "https://APP.EXAMPLE.COM/callback",                   # Variação de maiúsculas/minúsculas
    "https://app.example.com/Callback",                   # Variação de maiúsculas/minúsculas do caminho
    "https://app.example.com/callback/",                  # Barra final
    "https://app.example.com/callback?",                  # Ponto de interrogação final
    "http://app.example.com/callback",                    # Downgrade HTTP
    "https://app.example.com:443/callback",               # Porta explícita
    "https://app.example.com:8443/callback",              # Porta diferente
    f"{REDIRECT_URI}/.evil.com",                          # Segmento de ponto
    "https://app.example.com/callbackevil",               # Correspondência de prefixo de caminho
    "javascript://app.example.com/callback%0aalert(1)",   # Protocolo JavaScript
]

print("=== Testando Validação de URI de Redirecionamento ===\n")
for redirect in REDIRECT_BYPASS_PAYLOADS:
    params = {
        "response_type": "code",
        "client_id": CLIENT_ID,
        "redirect_uri": redirect,
        "scope": SCOPE,
        "state": secrets.token_urlsafe(32),
    }
    resp = requests.get(auth_endpoint, params=params, allow_redirects=False)


…
Perguntas frequentes

O que é OAuth 2.0 e OpenID Connect?

São padrões que permitem que você use uma conta (como Google ou Facebook) para fazer login em outros aplicativos sem precisar criar um novo cadastro para cada um.

O que é Burp Suite?

É uma ferramenta usada por profissionais de segurança para testar a segurança de aplicações web, interceptando e modificando o tráfego de rede.

Preciso de permissão para usar esta ferramenta?

Sim, é crucial ter autorização por escrito antes de testar qualquer sistema, pois esses testes podem levar ao roubo de tokens ou acesso não autorizado.

Detalhes

Descrição original do autor

Tests OAuth 2.0 and OpenID Connect implementations for authorization code interception, redirect URI manipulation, CSRF in OAuth flows, token leakage, scope escalation, and PKCE bypass, using Burp Suite Professional and the EsPReSSO extension to probe the authorization server, client, and token handling. Use when assessing OAuth2/OIDC flows or SSO systems for misconfigurations enabling account tak

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

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