
SignSaboteur est une extension Burp Suite pour éditer, signer, vérifier divers jetons web signés.
SignSaboteur est une extension Burp Suite pour éditer, signer, vérifier et attaquer des jetons signés. Elle prend en charge différents types de jetons : Django TimestampSigner, ItsDangerous Signer, Express cookie-session middleware, OAuth2 Proxy, Tornado’s signed cookies, Ruby Rails Signed cookies, Ruby Rails Encrypted cookies, Nimbus JOSE + JWT et chaîne signée inconnue.
Vous pouvez trouver plus d'informations sur l'extension sur la page de l'article de blog Portswigger Research - Présentation de SignSaboteur : forger des jetons web signés en toute simplicité.
Elle fournit la détection automatique et l'édition en ligne des jetons dans les requêtes/réponses HTTP et les messages WebSocket, la signature des jetons et l'automatisation des attaques par force brute contre les implémentations de jetons signés.
Elle a été inspirée par l'extension JWT Token de Fraser Winterborn et Dolph Flynn. Le code source original se trouve ici et ici.
./gradlew jarsign-saboteur-1.0.6.jar dans le répertoire build/libsExtensions, le sous-onglet Installed, en cliquant sur Add et en chargeant le fichier JAR
La Vue de la liste de mots permet d'importer des fichiers de listes de secrets et de sels. L'extension possède ses propres listes de dictionnaires pré-construites. La plupart des secrets proviennent de jwt-secrets. En option, Flask-Unsign-Wordlist peut être utilisée. L'extension prend en charge le format de chaînes JSON pour les caractères spéciaux ; pour l'utiliser, mettez la chaîne secrète entre guillemets ".
La Vue de l'éditeur prend en charge un certain nombre de jetons signés : Django, Dangerous, Flask, Express, OAuth2 et Tornado. Elle permet la modification des jetons signés dans la vue des requêtes/réponses HTTP de Burp Suite dans les outils Proxy, History et Repeater.
L'onglet Dangerous peut être utilisé à la fois pour les jetons Flask et Django, qui sont sélectionnés en fonction de la détection d'un jeton Dangerous ou Django.
L'onglet Unknown peut être utilisé pour forcer par force brute des chaînes signées inconnues. Le mode de devinette fonctionne uniquement avec les attaques par force brute Balanced et Deep. Il prend en charge différentes techniques de dérivation de message, notamment :
Un éditeur de texte JSON est fourni pour éditer chaque composant contenant du contenu JSON :
Un éditeur de timestamp est fourni pour éditer chaque composant qui en contient :
Un éditeur hexadécimal est fourni pour tous les jetons signés, à l'exception des signatures Express. REMARQUE L'onglet Express ne prend pas encore en charge la mise à jour automatique de la signature. Veuillez le copier manuellement dans le cookie de signature correspondant.
Signer présente une boîte de dialogue de signature qui peut être utilisée pour mettre à jour la signature en signant le jeton à l'aide d'une clé de la Vue des clés possédant des capacités de signature
Force brute tentera de trouver la clé secrète utilisée pour la génération de la signature. Si une clé secrète est trouvée, une boîte de dialogue sera présentée.
L'option Force brute implémente trois types d'attaques contre les signatures de jetons signés :
L'option Attaque implémente huit attaques d'autorisation bien connues contre les jetons signés :
Ceux-ci sont décrits plus en détail ci-dessous.
Toutes ces attaques peuvent être utilisées ensemble. Veuillez noter que l'extension ne prend pas en charge la modification de la charge utile du jeton en mode Attaque, donc votre charge utile sera remplacée par une nouvelle.
Le format de jeton ID OpenID connect généralement utilisé par les bibliothèques de signature pour stocker les informations sur l'utilisateur authentifié. L'extension générera un espace réservé pour le jeton ID de l'utilisateur admin.
Identique à l'attaque Revendications utilisateur mais le placera dans l'attribut JSON user.
Une autre façon courante de stocker les détails de l'utilisateur est les attributs JSON username et password. L'extension générera un espace réservé pour l'utilisateur admin.
Les informations de session utilisateur authentifié Flask, si stockées côté client, doivent inclure les attributs JSON id, _id, user_id ou _user_id. L'extension générera une session pour le premier utilisateur, généralement admin.
Le framework Express utilise l'attribut JSON passport pour stocker les détails de l'utilisateur. L'extension générera un espace réservé pour l'utilisateur admin.
Certains frameworks peuvent utiliser le wrapper account pour stocker les informations sur l'utilisateur authentifié. Pour l'exploitation, il peut être nécessaire d'utiliser également Revendications authentifiées.
Les Revendications authentifiées implémentent 12 indicateurs d'autorisation bien connus.
L'option Jeton d'accès utilisateur génère un jeton ID OpenID connect JWT signé avec la même clé et le même algorithme de hachage sans aucune dérivation de clé effectuée.