Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2023-48223 — Prova de conceito demonstrando confusão de algoritmo JWT na biblioteca fast-jwt. Inclui servidor vulnerável, script de forjamento de token e correção de verificação para educação em segurança. | Kitploit
Ferramentas/GitHubGitHub/lucastran05/cve-2023-48223
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHublucastran05/cve-2023-48223

CVE-2023-48223

Prova de conceito demonstrando confusão de algoritmo JWT na biblioteca fast-jwt. Inclui servidor vulnerável, script de forjamento de token e correção de verificação para educação em segurança.

Ver Repositório
52há 5 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2023-48223 PoC (Confusão de Algoritmo fast-jwt)

Este repositório demonstra a confusão de algoritmo JWT em fast-jwt quando a verificação do token não bloqueia algoritmos permitidos.

Configuração do Ambiente

Requisitos

  • Node.js 18 ou superior
  • npm
  • OpenSSL (deve estar disponível no PATH do terminal)

1) Instalar dependências

A partir da raiz do projeto, execute:

npm install

2) Gerar chaves RSA

O aplicativo espera estes arquivos:

  • keys/private.pem
  • keys/public.pem

Execute um dos seguintes conjuntos de comandos.

PowerShell (Windows):

New-Item -ItemType Directory -Path keys -Force | Out-Null
openssl genrsa -out keys/private.pem 2048
openssl rsa -in keys/private.pem -RSAPublicKey_out -out keys/public.pem

Linux/macOS/Git Bash:

mkdir -p keys
openssl genrsa -out keys/private.pem 2048
openssl rsa -in keys/private.pem -RSAPublicKey_out -out keys/public.pem

3) Iniciar o servidor

node server.js

Saída esperada:

Server running at http://localhost:3000

Execução Rápida (Fluxo do PoC)

1) Obter um token normal

curl http://localhost:3000/generateToken

2) Forjar um token de administrador

node sign.js

Copie o token impresso.

3) Chamar o endpoint de administrador com o token forjado

node checkAdmin.js <JWT_TOKEN>

Se o ataque for bem-sucedido, a resposta contém Welcome Admin!.

Por que Isto é Vulnerável

Em server.js, o verificador não restringe algoritmos:

const verifySync = createVerifier({
  key: publicKey,
});

Sem uma lista de permissões de algoritmos, o servidor pode aceitar um token HS256 malicioso assinado usando a chave pública como segredo HMAC.

Explicação de Como Simular a Biblioteca Vulnerável (para incluir no relatório)

Nas demonstrações de CVE do grupo, o objeto vulnerável é a biblioteca (não pode ser executada de forma independente). Portanto, é necessário usar um aplicativo simulado para reproduzir como o sistema real chama a API dessa biblioteca. Neste repositório, o arquivo server.js é a camada do aplicativo simulado.

  • Endpoint /generateToken: esta rota chama o createSigner do fast-jwt com RS256 para gerar um token válido para um usuário comum (admin=false). O objetivo é criar um token baseline "normal" para comparação com o token forjado.
  • Endpoint /admin: esta rota recebe um token Bearer e, em seguida, chama o createVerifier do fast-jwt para verificar o token e decidir os direitos de admin de acordo com payload.admin. O ponto intencionalmente vulnerável está no fato de que o verificador não bloqueia algoritmos, levando à confusão de algoritmo.

Fluxo de código PoC complementar:

  • sign.js: simula um atacante que chama createSigner com HS256 e usa a chave pública como segredo para assinar um token forjado (admin=true).
  • checkAdmin.js: envia uma requisição para /admin com o token forjado para provar que o servidor aceita o token forjado na configuração vulnerável.

Resumindo, o grupo não reescreveu as funções da biblioteca. O grupo apenas usou a API original da biblioteca vulnerável (createSigner, createVerifier) dentro de um aplicativo simulado para recriar o contexto de exploração correto.

Correção

Restringir a verificação para RS256:

const verifySync = createVerifier({
  key: publicKey,
  algorithms: ["RS256"],
});

Nota de Segurança

Este projeto é destinado apenas ao aprendizado de segurança em um ambiente de laboratório controlado.

Baixar ferramenta