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

Une bibliothèque Python pure pour identifier l'utilisation de secrets cryptographiques connus ou très faibles sur diverses plateformes. Le projet est conçu pour être à la fois un répertoire 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 permettant de les identifier.
Savoir quand un « mauvais secret » a été utilisé revient généralement à examiner un produit cryptographique dans lequel le secret a été utilisé : par exemple, un cookie signé avec un algorithme de hachage à clé. Les choses peuvent se compliquer lorsque l'on plonge dans les particularités d'implémentation propres à chaque plateforme, ce que cette bibliothèque vise à atténuer.
Consultez notre article de blog complet sur le blog Black Lantern Security !
Inspiré par Blacklist3r, avec le souhait d'étendre les plateformes supportées 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, URLs 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/générateur par rapport à une liste de clés machine connues. |
| ASPNET_Resource | Vérifie les URLs 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 patchées (2017+) de Telerik UI pour un Telerik.Upload.ConfigurationHashKey connu. |
| Telerik_EncryptionKey | Vérifie les versions patchées (2017+) de Telerik UI pour un Telerik.Web.UI.DialogParametersEncryptionKey connu. |
| Flask_SignedCookies | Vérifie la faiblesse du mot de passe de signature des cookies Flask. Enveloppe pour flask-unsign. |
| Peoplesoft_PSToken | Peut vérifier un PS_TOKEN Peoplesoft pour un mot de passe de signature faible/connu. |
| Django_SignedCookies | Vérifie les cookies de session de django (en mode signed_cookie) pour un django secret_key connu. |
| Rails_SecretKeyBase | Vérifie les cookies de session signés ou chiffrés Ruby on Rails (de plusieurs versions majeures) pour un secret_key_base connu. |
| Generic_JWT | Vérifie les JWT pour des secrets HMAC ou clés privées RSA connus. |
| Jsf_viewstate | Vérifie les 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 URLs symfony "_fragment" pour une clé HMAC connue. Opère sur l'URL complète, y compris le hachage. |
| Express_SignedCookies_ES | Vérifie le middleware express-session d'express.js pour les cookies signés et les cookies de session pour 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 pour un secret connu. |
| Laravel_SignedCookies | Vérifie les cookies 'laravel_session' pour un laravel 'APP_KEY' connu. |
| ASPNET_Compressedviewstate | Vérifie un extrait de code personnalisé de Viewstate compressé autrefois populaire et vulnérable à l'exécution de code à distance (RCE). |
| Rack2_SignedCookies | Vérifie les cookies signés 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 cookies 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. |
Les modules actifs vont plus loin que la détection passive. Ils utilisent un préfiltrage basé sur YARA pour identifier une cible en direct (à 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 ne disposez pas encore d'un 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 GlobalProtect de PAN-OS 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 avons un package pypi, vous pouvez donc simplement faire pip install badsecrets pour utiliser la bibliothèque.
La meilleure façon d'utiliser Badsecrets est simplement d'exécuter badsecrets après avoir effectué 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 consultée manuellement sans installation pip :
#### Sans installation pip :```bash
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 fait le pip install, faites simplement git clone du dépôt et cd dans le répertoire badsecrets :```
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
Les commandes dans la section d'exemple ci-dessous supposent que vous êtes dans ce répertoire.
Si vous utilisez le module Badsecrets [BBOT](https://github.com/blacklanternsecurity/bbot), vous n'avez rien d'autre à faire - BBOT installera le package pour vous.
### cli.py
Bad secrets inclut un [exemple CLI](https://github.com/blacklanternsecurity/badsecrets/blob/dev/badsecrets/examples/cli.py) pour faciliter la vérification manuelle des secrets. Comme mentionné ci-dessus, il est également accessible en exécutant simplement `badsecrets`, après une installation réussie via pip.