
Une bibliothèque pour détecter les secrets connus dans de nombreux frameworks web.

Une bibliothèque purement Python permettant d'identifier l'utilisation de secrets cryptographiques connus ou très faibles sur diverses plateformes. Le projet est conçu à la fois comme un référentiel de divers « secrets connus » (par exemple, les clés machine ASP.NET trouvées dans les exemples de tutoriels), et pour fournir une couche d'abstraction indépendante du langage afin d'identifier leur utilisation.
Savoir quand un « mauvais secret » a été utilisé revient généralement à examiner un produit cryptographique dans lequel le secret a été employé : par exemple, un cookie signé avec un algorithme de hachage à clé. Les choses peuvent se compliquer lorsque l'on se penche sur les particularités de chaque implémentation propre à chaque plateforme, ce que cette bibliothèque vise à atténuer.
Consultez notre article de blog complet sur le blog de Black Lantern Security !
Inspiré par Blacklist3r, avec le désir d'étendre les plateformes prises en charge et de supprimer les dépendances liées au langage et au système d'exploitation.
Les modules passifs analysent les produits cryptographiques (cookies, jetons, URL signées, etc.) que vous possédez déjà. Ils fonctionnent hors ligne en tentant de déchiffrer ou de vérifier le produit par rapport à une base de données de secrets connus.
| Nom | Description |
|---|---|
| ASPNET_Viewstate | Vérifie le viewstate/generator par rapport à une liste de clés machine connues. |
| ASPNET_Resource | Vérifie les URL chiffrées de WebResource.axd et ScriptResource.axd par rapport à une liste de clés machine connues. Utile lorsque __VIEWSTATE n'est pas présent sur une page. |
| Telerik_HashKey | Vérifie les versions corrigées (2017+) de Telerik UI pour une Telerik.Upload.ConfigurationHashKey connue |
| Telerik_EncryptionKey | Vérifie les versions corrigées (2017+) de Telerik UI pour une Telerik.Web.UI.DialogParametersEncryptionKey connue |
| Flask_SignedCookies | Vérifie la présence d'un mot de passe de signature de cookie Flask faible. Enveloppe pour flask-unsign |
| Peoplesoft_PSToken | Peut vérifier un PS_TOKEN Peoplesoft pour un mot de passe de signature mauvais/faible |
| Django_SignedCookies | Vérifie les cookies de session de Django (en mode signed_cookie) pour une secret_key Django connue |
| Rails_SecretKeyBase | Vérifie les cookies de session signés ou chiffrés de Ruby on Rails (de plusieurs versions majeures) pour une secret_key_base connue |
| Generic_JWT | Vérifie les JWT pour des secrets HMAC connus ou des clés privées RSA |
| Jsf_viewstate | Vérifie les deux implémentations Mojarra et Myfaces de Java Server Faces (JSF) pour l'utilisation de clés secrètes connues ou faibles |
| Symfony_SignedURL | Vérifie les URL « _fragment » de Symfony pour une clé HMAC connue. Fonctionne sur l'URL complète, y compris le hash |
| Express_SignedCookies_ES | Vérifie le middleware express-session d'express.js pour les cookies signés et les cookies de session afin de détecter un « session secret » connu |
| Express_SignedCookies_CS | Vérifie le middleware cookie-session d'express.js pour les cookies signés et les cookies de session afin de détecter un secret connu |
| Laravel_SignedCookies | Vérifie les cookies « laravel_session » pour une « APP_KEY » Laravel connue |
| ASPNET_Compressedviewstate | Vérifie un Viewstate compressé personnalisé autrefois populaire extrait de code vulnérable à une RCE |
| Rack2_SignedCookies | Vérifie les cookies signés de Rack 2.x pour des clés secrètes connues |
| Yii2_SignedCookies | Vérifie les cookies signés du framework Yii2 pour des clés de validation de cookie connues |
| Shiro_RememberMe | Vérifie les cookies rememberMe d'Apache Shiro pour des clés de chiffrement AES connues |
| LTPA_Token | Vérifie les cookies LtpaToken et LtpaToken2 d'IBM WebSphere pour des clés de chiffrement LTPA connues |
| NextAuth | Vérifie les cookies de session JWE de NextAuth.js / Auth.js pour un NEXTAUTH_SECRET / AUTH_SECRET connu ou faible |
Les modules actifs vont au-delà de la détection passive. Ils utilisent un préfiltrage basé sur YARA pour établir l'empreinte d'une cible active (à partir des en-têtes de réponse HTTP, des cookies et du contenu du corps), puis forgent des produits cryptographiques avec des clés connues et les envoient à la cible pour confirmer si la clé est acceptée. Cela les rend utiles dans les cas où vous n'avez pas déjà de jeton à analyser mais soupçonnez que la cible utilise des secrets par défaut ou bien connus.
Les modules actifs sont activés par défaut en mode URL (--url). Utilisez --passive-only pour les désactiver.
| Nom | Description |
|---|---|
| Shiro_RememberMe_Key | Forge des cookies rememberMe d'Apache Shiro avec des clés AES connues et teste si la cible les accepte (RCE par désérialisation) |
| GlobalProtect_DefaultMasterKey | Teste les portails PAN-OS GlobalProtect pour l'utilisation de la clé de chiffrement maître par défaut |
| LTPA_Token_Key | Forge des cookies LtpaToken2 d'IBM WebSphere avec des clés LTPA connues et teste si la cible accorde l'authentification (contournement d'authentification) |
Nous disposons d'un paquet pypi, vous pouvez donc simplement exécuter pip install badsecrets pour utiliser la bibliothèque.
La meilleure façon d'utiliser Badsecrets est de simplement exécuter badsecrets après avoir fait un pip install :
pip install badsecrets
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
Sous le capot, il utilise l'exemple cli.py. La CLI peut également être accessible manuellement sans installation via pip :
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
python ./badsecrets/examples/cli.py eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
Pour utiliser les exemples, après avoir effectué le pip install, il suffit de git clone le dépôt et de cd dans le répertoire badsecrets :
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
Les commandes de la section d'exemple ci-dessous supposent que vous êtes dans ce répertoire.
Si vous utilisez le module BBOT Badsecrets, vous n'avez rien d'autre à faire - BBOT installera le package pour vous.