Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2023-48223 — Prova di concetto che dimostra la confusione dell'algoritmo JWT nella libreria fast-jwt. Include server vulnerabile, script per il forging di token e fix di verifica per l'educazione sulla sicurezza. | Kitploit
Strumenti/GitHubGitHub/lucastran05/cve-2023-48223
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneLab e Pratica
GitHublucastran05/cve-2023-48223

CVE-2023-48223

Prova di concetto che dimostra la confusione dell'algoritmo JWT nella libreria fast-jwt. Include server vulnerabile, script per il forging di token e fix di verifica per l'educazione sulla sicurezza.

Vedi Repository
525 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2023-48223 PoC (Confusione algoritmo fast-jwt)

Questo repository dimostra la confusione degli algoritmi JWT in fast-jwt quando la verifica del token non blocca gli algoritmi consentiti.

Configurazione dell'ambiente

Requisiti

  • Node.js 18 o superiore
  • npm
  • OpenSSL (deve essere disponibile nel PATH del terminale)

1) Installare le dipendenze

Dalla radice del progetto, esegui:

npm install

2) Generare le chiavi RSA

L'app si aspetta questi file:

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

Esegui uno dei seguenti set di comandi.

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) Avviare il server

node server.js

Output previsto:

Server running at http://localhost:3000

Esecuzione rapida (Flusso PoC)

1) Ottenere un token normale

curl http://localhost:3000/generateToken

2) Forgiare un token admin

node sign.js

Copia il token stampato.

3) Chiamare l'endpoint admin con il token forgiato

node checkAdmin.js <JWT_TOKEN>

Se l'attacco ha successo, la risposta contiene Welcome Admin!.

Perché è vulnerabile

In server.js, il verificatore non limita gli algoritmi:

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

Senza una lista bianca di algoritmi, il server potrebbe accettare un token HS256 malevolo firmato usando la chiave pubblica come segreto HMAC.

Spiegazione della simulazione della libreria vulnerabile (da includere nel report)

Nelle demo CVE del gruppo, l'oggetto vulnerabile è la libreria (non può essere eseguita autonomamente). Pertanto, è necessaria un'applicazione simulata per replicare il modo in cui un sistema reale chiama l'API di quella libreria. In questo repo, il file server.js è il livello applicativo simulato.

  • Endpoint /generateToken: questa route chiama createSigner di fast-jwt con RS256 per generare un token valido per un utente normale (admin=false). Lo scopo è creare un token baseline "normale" da confrontare con il token contraffatto.
  • Endpoint /admin: questa route riceve un Bearer token, quindi chiama createVerifier di fast-jwt per verificare il token e decide i diritti di amministrazione in base a payload.admin. Il punto intenzionalmente vulnerabile è che il verificatore non blocca gli algoritmi, portando alla confusione degli algoritmi.

Codice di supporto del flusso PoC:

  • sign.js: simula un attaccante che chiama createSigner con HS256 e usa la chiave pubblica come segreto per firmare un token contraffatto (admin=true).
  • checkAdmin.js: invia una richiesta a /admin con il token contraffatto per dimostrare che il server accetta il token falso nella configurazione vulnerabile.

In sintesi, il gruppo non ha riscritto le funzioni della libreria. Il gruppo ha semplicemente utilizzato le API originali della libreria vulnerabile (createSigner, createVerifier) all'interno di un'applicazione simulata per riprodurre il contesto di sfruttamento.

Correzione

Limitare la verifica a RS256:

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

Nota di sicurezza

Questo progetto è solo per l'apprendimento della sicurezza in un ambiente di laboratorio controllato.

Scarica lo strumento