
Uma biblioteca para detectar segredos conhecidos em muitos frameworks web

Uma biblioteca Python pura para identificar o uso de segredos criptográficos conhecidos ou muito fracos em uma variedade de plataformas. O projeto é projetado para ser tanto um repositório de vários "segredos conhecidos" (por exemplo, chaves de máquina ASP.NET encontradas em exemplos de tutoriais), como para fornecer uma camada de abstração agnóstica de linguagem para identificar seu uso.
Saber quando um 'segredo ruim' foi usado geralmente é uma questão de examinar algum produto criptográfico no qual o segredo foi usado: por exemplo, um cookie assinado com um algoritmo de hash com chave. As coisas podem se complicar quando você mergulha nas peculiaridades individuais de implementação que cada plataforma oferece, o que esta biblioteca pretende aliviar.
Confira nosso post completo no blog no blog Black Lantern Security!
Inspirado por Blacklist3r, com o desejo de expandir as plataformas suportadas e remover as dependências de linguagem e sistema operacional.
Os módulos passivos analisam produtos criptográficos (cookies, tokens, URLs assinados, etc.) que você já possui. Eles funcionam offline tentando descriptografar ou verificar o produto contra um banco de dados de segredos conhecidos.
| Nome | Descrição |
|---|---|
| ASPNET_Viewstate | Verifica o viewstate/gerador contra uma lista de chaves de máquina conhecidas. |
| ASPNET_Resource | Verifica URLs criptografadas WebResource.axd e ScriptResource.axd contra uma lista de chaves de máquina conhecidas. Útil quando __VIEWSTATE não está presente em uma página. |
| Telerik_HashKey | Verifica versões corrigidas (2017+) do Telerik UI para um Telerik.Upload.ConfigurationHashKey conhecido. |
| Telerik_EncryptionKey | Verifica versões corrigidas (2017+) do Telerik UI para um Telerik.Web.UI.DialogParametersEncryptionKey conhecido. |
| Flask_SignedCookies | Verifica uma senha de assinatura de cookie Flask fraca. Wrapper para flask-unsign |
| Peoplesoft_PSToken | Pode verificar um PS_TOKEN do Peoplesoft para uma senha de assinatura ruim/fraca. |
| Django_SignedCookies | Verifica cookies de sessão do django (quando no modo signed_cookie) para um django secret_key conhecido. |
| Rails_SecretKeyBase | Verifica cookies de sessão assinados ou criptografados do Ruby on Rails (de vários lançamentos principais) para um secret_key_base conhecido. |
| Generic_JWT | Verifica JWTs para segredos HMAC conhecidos ou chaves privadas RSA. |
| Jsf_viewstate | Verifica ambas as implementações Mojarra e Myfaces do Java Server Faces (JSF) para uso de chaves secretas conhecidas ou fracas. |
| Symfony_SignedURL | Verifica URLs "_fragment" do symfony para uma chave HMAC conhecida. Opera na URL completa, incluindo o hash. |
| Express_SignedCookies_ES | Verifica o middleware express-session do express.js para cookies assinados e cookies de sessão para um 'session secret' conhecido. |
| Express_SignedCookies_CS | Verifica o middleware cookie-session do express.js para cookies assinados e cookies de sessão para um segredo conhecido. |
| Laravel_SignedCookies | Verifica cookies 'laravel_session' para um laravel 'APP_KEY' conhecido. |
| ASPNET_Compressedviewstate | Verifica um trecho de código de Viewstate comprimido personalizado que já foi popular e vulnerável a RCE. |
| Rack2_SignedCookies | Verifica cookies assinados do Rack 2.x para chaves secretas conhecidas. |
| Yii2_SignedCookies | Verifica cookies assinados do framework Yii2 para chaves de validação de cookie conhecidas. |
| Shiro_RememberMe | Verifica cookies rememberMe do Apache Shiro para chaves de criptografia AES conhecidas. |
| LTPA_Token | Verifica cookies LtpaToken e LtpaToken2 do IBM WebSphere para chaves de criptografia LTPA conhecidas. |
Os módulos ativos vão um passo além da detecção passiva. Eles usam pré-filtragem baseada em YARA para identificar um alvo ao vivo (com base nos cabeçalhos de resposta HTTP, cookies e conteúdo do corpo), depois forjam produtos criptográficos com chaves conhecidas e os enviam ao alvo para confirmar se a chave é aceita. Isso os torna úteis para casos onde você ainda não possui um token para analisar, mas suspeita que o alvo possa estar usando segredos padrão ou bem conhecidos.
Os módulos ativos são ativados por padrão no modo URL (--url). Use --passive-only para desativá-los.
| Nome | Descrição |
|---|---|
| Shiro_RememberMe_Key | Forja cookies rememberMe do Apache Shiro com chaves AES conhecidas e testa se o alvo os aceita (RCE por desserialização). |
| GlobalProtect_DefaultMasterKey | Testa portais PAN-OS GlobalProtect para uso da chave mestra de criptografia padrão. |
| LTPA_Token_Key | Forja cookies LtpaToken2 do IBM WebSphere com chaves LTPA conhecidas e testa se o alvo concede autenticação (bypass de autenticação). |
Temos um pacote pypi, então você pode apenas fazer pip install badsecrets para usar a biblioteca.
A melhor maneira de usar Badsecrets é simplesmente executar badsecrets após fazer um pip install:```
pip install badsecrets
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
Internamente, está usando o exemplo `cli.py`. A CLI também pode ser acessada manualmente sem uma instalação via pip:
#### Sem instalação via pip:```bash
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
python ./badsecrets/examples/cli.py eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
Para usar os exemplos, após fazer o pip install, basta git clone do repositório e cd para o diretório badsecrets:```
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
Os comandos na seção de exemplo abaixo pressupõem que você esteja neste diretório.
Se você estiver usando o módulo Badsecrets [BBOT](https://github.com/blacklanternsecurity/bbot), não precisa fazer mais nada - o BBOT instalará o pacote para você.
### cli.py
O Bad secrets inclui uma [CLI de exemplo](https://github.com/blacklanternsecurity/badsecrets/blob/dev/badsecrets/examples/cli.py) para conveniência ao verificar segredos manualmente. Conforme mencionado acima, também é acessível apenas executando `badsecrets`, após uma instalação bem-sucedida do pip.
#### Uso```
usage: badsecrets [-h] [-nc] [-j] [-u URL] [-nh] [-c FILE_OR_MODULE:KEYS]
[-p PROXY] [-a USER_AGENT] [-H HEADER] [-d] [-t TIMEOUT]
[-P] [-l]
[product ...]
Check cryptographic products against badsecrets library
positional arguments:
product Cryptographic product to check for known secrets