Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2023-48223 — Preuve de concept démontrant la confusion d'algorithme JWT dans la bibliothèque fast-jwt. Comprend un serveur vulnérable, un script de falsification de jetons et une correction de vérification pour l'éducation à la sécurité. | Kitploit
Outils/GitHubGitHub/lucastran05/cve-2023-48223
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationLabs et Pratique
GitHublucastran05/cve-2023-48223

CVE-2023-48223

Preuve de concept démontrant la confusion d'algorithme JWT dans la bibliothèque fast-jwt. Comprend un serveur vulnérable, un script de falsification de jetons et une correction de vérification pour l'éducation à la sécurité.

Voir le dépôt
48il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2023-48223 PoC (Confusion d'algorithme fast-jwt)

Ce dépôt démontre une confusion d'algorithme JWT dans fast-jwt lorsque la vérification du token ne verrouille pas les algorithmes autorisés.

Configuration de l'environnement

Prérequis

  • Node.js 18 ou plus récent
  • npm
  • OpenSSL (doit être disponible dans le PATH de votre terminal)

1) Installer les dépendances

Depuis la racine du projet, exécutez :

root@kitploit:~
npm install

2) Générer les clés RSA

L'application attend ces fichiers :

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

Exécutez l'un des jeux de commandes suivants.

PowerShell (Windows) :

root@kitploit:~
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 :

root@kitploit:~
mkdir -p keys
openssl genrsa -out keys/private.pem 2048
openssl rsa -in keys/private.pem -RSAPublicKey_out -out keys/public.pem

3) Démarrer le serveur

root@kitploit:~
node server.js

Sortie attendue :

root@kitploit:~
Server running at http://localhost:3000

Exécution rapide (Flux PoC)

1) Obtenir un token normal

root@kitploit:~
curl http://localhost:3000/generateToken

2) Forger un token administrateur

root@kitploit:~
node sign.js

Copiez le token affiché.

3) Appeler le point d'accès administrateur avec le token forgé

root@kitploit:~
node checkAdmin.js <JWT_TOKEN>

Si l'attaque réussit, la réponse contient Welcome Admin!.

Pourquoi c'est vulnérable

Dans server.js, le vérificateur ne restreint pas les algorithmes :

root@kitploit:~
const verifySync = createVerifier({
  key: publicKey,
});

Sans une liste blanche d'algorithmes, le serveur peut accepter un token HS256 malveillant signé en utilisant la clé publique comme secret HMAC.

Explication de la simulation de la bibliothèque vulnérable (pour le rapport)

Dans les démonstrations CVE de notre groupe, l'objet vulnérable est la bibliothèque (elle ne peut pas être exécutée de manière indépendante). Il est donc nécessaire d'utiliser une application simulée pour reproduire la manière dont un système réel appelle l'API de cette bibliothèque. Dans ce dépôt, le fichier server.js est la couche applicative de simulation.

  • Point d'accès /generateToken : cette route appelle createSigner de fast-jwt avec RS256 pour générer un token valide pour un utilisateur normal (admin=false). Le but est de créer un token de base « normal » à comparer avec un token forgé.
  • Point d'accès /admin : cette route reçoit un token Bearer, puis appelle createVerifier de fast-jwt pour vérifier le token et déterminer le privilège admin selon payload.admin. Le point intentionnellement vulnérable se trouve dans le fait que le vérificateur ne verrouille pas les algorithmes, conduisant à une confusion d'algorithme.

Code PoC auxiliaire :

  • sign.js : simule l'attaquant appelant createSigner avec HS256 et utilisant la clé publique comme secret pour signer un token falsifié (admin=true).
  • checkAdmin.js : envoie une requête à /admin avec le token forgé pour prouver que le serveur accepte le token falsifié dans une configuration vulnérable.

En résumé, nous n'avons pas réécrit les fonctions de la bibliothèque. Nous utilisons simplement l'API originale de la bibliothèque vulnérable (createSigner, createVerifier) à l'intérieur de l'application simulée pour reproduire le contexte d'exploitation.

Correction

Restreindre la vérification à RS256 :

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

Note de sécurité

Ce projet est destiné à l'apprentissage de la sécurité dans un environnement de laboratoire contrôlé uniquement.

Télécharger l’outil