
Demo des Algorithmenverwirrungsangriffs auf verschiedene JWT-Bibliotheken
Demonstration des Algorithmus-Verwechslungsangriffs auf Json Web Token (JWT)-Bibliotheken. JWTs
werden oft in Cookies verwendet, um eine Benutzersitzung zu bestätigen, daher ist dieser Angriff kritisch.
Das Node-Modul [email protected] wurde verwendet, um die Schwachstelle zu demonstrieren.
Dieses Projekt war auch eine schöne Vibe-Coding-Aktivität, da die Benutzeroberfläche bis auf die API-Aufrufe fast vollständig mit LLMs erstellt wurde.
Das Format eines JWT ist wie folgt:
b64(header).b64(payload).b64(signature)
In unserem Fall:
header = (algorithm, type)
payload = (username, role)
Damals konnten die verschiedenen JWT-Bibliotheken mit einem Algorithmus signieren, aber sie erzwangen keinen Algorithmus und verließen sich stattdessen auf den Inhalt des Headers des JWT, sodass der Benutzer seine eigene Verschlüsselung wählen konnte. Dies ermöglicht viele Exploits, aber der in diesem Fall verwendete ist der folgende:
Melden Sie sich auf der Anmeldeseite als ein beliebiger Benutzer an. Sie müssen sich zuerst registrieren.
Sobald Sie auf der Startseite sind, gibt es eine Schaltfläche, die nur angeklickt werden kann, wenn Sie eine gültige Admin-Sitzung haben. Sie müssen dann den Exploit ausführen, um dieses JWT zu fälschen.
Schließlich ersetzen Sie das ursprüngliche JWT durch das gefälschte JWT im lokalen Speicher, und nach einer Aktualisierung sollte die Schaltfläche anklickbar sein und die Flagge gehört Ihnen!