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

Una biblioteca pura de Python para identificar el uso de secretos criptográficos conocidos o muy débiles en una variedad de plataformas. El proyecto está diseñado tanto para ser 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 independiente del lenguaje para identificar su uso.
Saber cuándo se utilizó un 'secreto malo' suele ser cuestión de examinar algún producto criptográfico en el que se usó el secreto: por ejemplo, una cookie firmada con un algoritmo hash con clave. Las cosas pueden complicarse cuando se profundiza en las peculiaridades de implementación individuales que cada plataforma ofrece, algo que esta biblioteca pretende aliviar.
¡Visita nuestro artículo completo en el blog de Black Lantern Security!
Inspirado por Blacklist3r, con el deseo de expandir las plataformas compatibles y eliminar las dependencias del lenguaje y del sistema operativo.
Los módulos pasivos analizan productos criptográficos (cookies, tokens, URLs firmadas, etc.) que ya posees. Funcionan sin conexión al intentar descifrar o verificar el producto contra una base de datos de secretos conocidos.
| Nombre | Descripción |
|---|---|
| ASPNET_Viewstate | Verifica el viewstate/generador contra una lista de claves de máquina conocidas. |
| ASPNET_Resource | Verifica 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 | Verifica versiones parcheadas (2017+) de Telerik UI en busca de un Telerik.Upload.ConfigurationHashKey conocido. |
| Telerik_EncryptionKey | Verifica versiones parcheadas (2017+) de Telerik UI en busca de un Telerik.Web.UI.DialogParametersEncryptionKey conocido. |
| Flask_SignedCookies | Verifica si hay una contraseña débil en la firma de cookies de Flask. Envoltorio para flask-unsign. |
| Peoplesoft_PSToken | Puede verificar un PS_TOKEN de Peoplesoft en busca de una contraseña de firma débil/conocida. |
| Django_SignedCookies | Verifica las cookies de sesión de Django (cuando están en modo signed_cookie) en busca de un secret_key conocido de Django. |
| Rails_SecretKeyBase | Verifica 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 | Verifica JWTs en busca de secretos HMAC conocidos o claves privadas RSA. |
| Jsf_viewstate | Verifica las implementaciones de Mojarra y Myfaces de Java Server Faces (JSF) para detectar el uso de claves secretas conocidas o débiles. |
| Symfony_SignedURL | Verifica las URLs "_fragment" de Symfony en busca de una clave HMAC conocida. Opera sobre la URL completa, incluido el hash. |
| Express_SignedCookies_ES | Verifica 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 | Verifica el middleware cookie-session de Express.js en busca de cookies firmadas y cookies de sesión con un secreto conocido. |
| Laravel_SignedCookies | Verifica las cookies 'laravel_session' en busca de un 'APP_KEY' conocido de Laravel. |
| ASPNET_Compressedviewstate | Verifica un fragmento de código de Viewstate comprimido personalizado, una vez popular, vulnerable a RCE. |
| Rack2_SignedCookies | Verifica las cookies firmadas de Rack 2.x en busca de claves secretas conocidas. |
| Yii2_SignedCookies | Verifica las cookies firmadas del framework Yii2 en busca de claves de validación de cookies conocidas. |
| Shiro_RememberMe | Verifica las cookies rememberMe de Apache Shiro en busca de claves de cifrado AES conocidas. |
| LTPA_Token | Verifica las cookies LtpaToken y LtpaToken2 de IBM WebSphere en busca de claves de cifrado LTPA conocidas. |
Los módulos activos van un paso más allá de la detección pasiva. Utilizan un prefiltrado basado en YARA para identificar un objetivo en vivo (basado en encabezados 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 en casos donde aún no tienes un token para analizar, pero sospechas que el objetivo puede estar usando secretos predeterminados o bien 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 GlobalProtect de PAN-OS para detectar el uso de la clave maestra de cifrado predeterminada. |
| LTPA_Token_Key | Forja cookies LtpaToken2 de IBM WebSphere con claves LTPA conocidas y prueba si el objetivo concede autenticación (bypass de autenticación). |
Tenemos un paquete en pypi, así que puedes simplemente ejecutar pip install badsecrets para usar la biblioteca.
La mejor manera de usar Badsecrets es ejecutando badsecrets después de hacer un pip install:```
pip install badsecrets
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
En el fondo, utiliza el ejemplo `cli.py`. La CLI también se puede acceder manualmente sin una instalación pip:
#### Sin instalación pip:```bash
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 clona el repositorio con git clone y navega al directorio badsecrets con cd:```
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 usando el módulo Badsecrets [BBOT](https://github.com/blacklanternsecurity/bbot), no necesitas hacer nada más - BBOT instalará el paquete por ti.
### cli.py
Bad secrets incluye un [CLI de ejemplo](https://github.com/blacklanternsecurity/badsecrets/blob/dev/badsecrets/examples/cli.py) por conveniencia al verificar secretos manualmente. Como se mencionó anteriormente, también es accesible simplemente ejecutando `badsecrets`, después de una instalación exitosa con pip.