
Una librería para detectar secretos conocidos en muchos frameworks web.

Una librería de python puro para identificar el uso de secretos criptográficos conocidos o muy débiles en una variedad de plataformas. El proyecto está diseñado para ser tanto un repositorio de varios "secretos conocidos" (por ejemplo, claves de máquina de ASP.NET encontradas en ejemplos de tutoriales), como para proporcionar una capa de abstracción agnóstica al lenguaje para identificar su uso.
Saber cuándo se utilizó un 'mal secreto' suele ser cuestión de examinar algún producto criptográfico en el que se usó el secreto: por ejemplo, una cookie que está firmada con un algoritmo de hashing con clave. Las cosas pueden complicarse cuando se profundiza en las peculiaridades de implementación individuales que proporciona cada plataforma, lo cual esta librería pretende aliviar.
¡Consulta nuestra publicación de blog completa en el blog de Black Lantern Security!
Inspirado por Blacklist3r, con el deseo de ampliar las plataformas soportadas y eliminar las dependencias de lenguaje y sistema operativo.
Los módulos pasivos analizan productos criptográficos (cookies, tokens, URLs firmadas, etc.) que ya posees. Funcionan sin conexión intentando descifrar o verificar el producto contra una base de datos de secretos conocidos.
| Nombre | Descripción |
|---|---|
| ASPNET_Viewstate | Comprueba el viewstate/generator contra una lista de claves de máquina conocidas. |
| ASPNET_Resource | Comprueba las URLs cifradas de WebResource.axd y ScriptResource.axd contra una lista de claves de máquina conocidas. Útil cuando __VIEWSTATE no está presente en una página. |
| Telerik_HashKey | Comprueba versiones parcheadas (2017+) de Telerik UI en busca de un Telerik.Upload.ConfigurationHashKey conocido |
| Telerik_EncryptionKey | Comprueba versiones parcheadas (2017+) de Telerik UI en busca de un Telerik.Web.UI.DialogParametersEncryptionKey conocido |
| Flask_SignedCookies | Comprueba si hay una contraseña débil de firma de cookies de Flask. Envoltorio para flask-unsign |
| Peoplesoft_PSToken | Puede comprobar un PS_TOKEN de peoplesoft en busca de una contraseña de firma mala/débil |
| Django_SignedCookies | Comprueba las cookies de sesión de django (cuando está en modo signed_cookie) en busca de un secret_key de django conocido |
| Rails_SecretKeyBase | Comprueba las cookies de sesión firmadas o cifradas de Ruby on Rails (de múltiples versiones principales) en busca de un secret_key_base conocido |
| Generic_JWT | Comprueba JWTs en busca de secretos HMAC conocidos o claves privadas RSA |
| Jsf_viewstate | Comprueba tanto las implementaciones Mojarra como Myfaces de Java Server Faces (JSF) en busca del uso de claves secretas conocidas o débiles |
| Symfony_SignedURL | Comprueba las URLs "_fragment" de symfony en busca de una clave HMAC conocida. Opera sobre la URL completa, incluyendo el hash |
| Express_SignedCookies_ES | Comprueba el middleware express-session de express.js en busca de cookies firmadas y cookies de sesión con un 'session secret' conocido |
| Express_SignedCookies_CS | Comprueba el middleware cookie-session de express.js en busca de cookies firmadas y cookies de sesión con un secreto conocido |
| Laravel_SignedCookies | Comprueba las cookies 'laravel_session' en busca de un 'APP_KEY' de laravel conocido |
| ASPNET_Compressedviewstate | Comprueba un Viewstate comprimido personalizado que fue popular en su momento fragmento de código vulnerable a RCE |
| Rack2_SignedCookies | Comprueba las cookies firmadas de Rack 2.x en busca de claves secretas conocidas |
| Yii2_SignedCookies | Comprueba las cookies firmadas del framework Yii2 en busca de claves de validación de cookies conocidas |
| Shiro_RememberMe | Comprueba las cookies rememberMe de Apache Shiro en busca de claves de cifrado AES conocidas |
| LTPA_Token | Comprueba las cookies LtpaToken y LtpaToken2 de IBM WebSphere en busca de claves de cifrado LTPA conocidas |
| NextAuth | Comprueba las cookies de sesión JWE de NextAuth.js / Auth.js en busca de un NEXTAUTH_SECRET / AUTH_SECRET conocido o débil |
Los módulos activos van un paso más allá de la detección pasiva. Utilizan un prefiltrado basado en YARA para tomar la huella de un objetivo en vivo (basándose en cabeceras de respuesta HTTP, cookies y contenido del cuerpo), luego forjan productos criptográficos con claves conocidas y los envían al objetivo para confirmar si la clave es aceptada. Esto los hace útiles para casos en los que aún no tienes un token para analizar pero sospechas que el objetivo puede estar usando secretos por defecto o ampliamente conocidos.
Los módulos activos están habilitados por defecto en modo URL (--url). Usa --passive-only para deshabilitarlos.
| Nombre | Descripción |
|---|---|
| Shiro_RememberMe_Key | Forja cookies rememberMe de Apache Shiro con claves AES conocidas y prueba si el objetivo las acepta (RCE por deserialización) |
| GlobalProtect_DefaultMasterKey | Prueba los portales PAN-OS GlobalProtect en busca del uso de la clave de cifrado maestra por defecto |
| LTPA_Token_Key | Forja cookies LtpaToken2 de IBM WebSphere con claves LTPA conocidas y prueba si el objetivo concede la autenticación (elusión de autenticación) |
Tenemos un paquete en pypi, así que puedes simplemente hacer pip install badsecrets para hacer uso de la librería.
La mejor manera de usar Badsecrets es simplemente ejecutando badsecrets después de hacer un pip install:
pip install badsecrets
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
Internamente, utiliza el ejemplo cli.py. También se puede acceder a la CLI manualmente sin una instalación de pip:
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
python ./badsecrets/examples/cli.py eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
Para usar los ejemplos, después de hacer el pip install simplemente haz git clone del repositorio y cd al directorio badsecrets:
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
Los comandos en la sección de ejemplo a continuación asumen que estás en este directorio.
Si estás utilizando el módulo BBOT de Badsecrets, no necesitas hacer nada más - BBOT instalará el paquete por ti.