
Una libreria per rilevare segreti noti attraverso molti framework web.

Una libreria pura Python per identificare l'uso di segreti crittografici noti o molto deboli su diverse piattaforme. Il progetto è pensato sia come repository di vari "segreti noti" (ad esempio, chiavi ASP.NET machine keys trovate negli esempi dei tutorial), sia per fornire un livello di astrazione indipendente dal linguaggio per identificarne l'uso.
Sapere quando è stato usato un 'bad secret' di solito consiste nell'esaminare un prodotto crittografico in cui il segreto è stato impiegato: ad esempio, un cookie firmato con un algoritmo di hashing con chiave. Le cose possono complicarsi quando si esaminano le singole stranezze implementative di ciascuna piattaforma, cosa che questa libreria mira a semplificare.
Leggi il nostro post completo sul blog del Black Lantern Security Blog!
Ispirato da Blacklist3r, con il desiderio di espandere le piattaforme supportate e rimuovere le dipendenze da linguaggio e sistema operativo.
I moduli passivi analizzano prodotti crittografici (cookie, token, URL firmati, ecc.) che già possiedi. Funzionano offline tentando di decrittare o verificare il prodotto rispetto a un database di segreti noti.
| Nome | Descrizione |
|---|---|
| ASPNET_Viewstate | Verifica il viewstate/generator rispetto a un elenco di chiavi macchina note. |
| ASPNET_Resource | Verifica gli URL crittografati di WebResource.axd e ScriptResource.axd rispetto a un elenco di chiavi macchina note. Utile quando __VIEWSTATE non è presente in una pagina. |
| Telerik_HashKey | Verifica le versioni (2017+) corrette di Telerik UI per un Telerik.Upload.ConfigurationHashKey noto |
| Telerik_EncryptionKey | Verifica le versioni (2017+) corrette di Telerik UI per un Telerik.Web.UI.DialogParametersEncryptionKey noto |
| Flask_SignedCookies | Verifica la presenza di una password di firma debole per i cookie di Flask. Wrapper per flask-unsign |
| Peoplesoft_PSToken | Può verificare un PS_TOKEN di Peoplesoft per una password di firma debole/nota |
| Django_SignedCookies | Verifica i cookie di sessione di Django (in modalità signed_cookie) per un django secret_key noto |
| Rails_SecretKeyBase | Verifica i cookie di sessione firmati o crittografati di Ruby on Rails (di più versioni principali) per un secret_key_base noto |
| Generic_JWT | Verifica i JWT per segreti HMAC noti o chiavi private RSA |
| Jsf_viewstate | Verifica sia le implementazioni Mojarra che Myfaces di Java Server Faces (JSF) per l'uso di chiavi segrete note o deboli |
| Symfony_SignedURL | Verifica gli URL symfony "_fragment" per una chiave HMAC nota. Opera sull'URL completo, incluso l'hash |
| Express_SignedCookies_ES | Verifica il middleware express-session di express.js per cookie firmati e cookie di sessione per un 'session secret' noto |
| Express_SignedCookies_CS | Verifica il middleware cookie-session di express.js per cookie firmati e cookie di sessione per un segreto noto |
| Laravel_SignedCookies | Verifica i cookie 'laravel_session' per un laravel 'APP_KEY' noto |
| ASPNET_Compressedviewstate | Verifica un frammento di codice di viewstate compresso personalizzato, un tempo popolare, vulnerabile a RCE |
| Rack2_SignedCookies | Verifica i cookie firmati Rack 2.x per chiavi segrete note |
| Yii2_SignedCookies | Verifica i cookie firmati del framework Yii2 per chiavi di validazione cookie note |
| Shiro_RememberMe | Verifica i cookie rememberMe di Apache Shiro per chiavi di crittografia AES note |
| LTPA_Token | Verifica i cookie LtpaToken e LtpaToken2 di IBM WebSphere per chiavi di crittografia LTPA note |
I moduli attivi vanno oltre la rilevazione passiva. Usano un pre-filtraggio basato su YARA per identificare un target live (basandosi su intestazioni di risposta HTTP, cookie e contenuto del corpo), poi forgiano prodotti crittografici con chiavi note e li inviano al target per confermare se la chiave viene accettata. Questo li rende utili nei casi in cui non si dispone già di un token da analizzare ma si sospetta che il target possa utilizzare segreti predefiniti o noti.
I moduli attivi sono abilitati per impostazione predefinita in modalità URL (--url). Usa --passive-only per disabilitarli.
| Nome | Descrizione |
|---|---|
| Shiro_RememberMe_Key | Forgia cookie rememberMe di Apache Shiro con chiavi AES note e verifica se il target li accetta (RCE da deserializzazione) |
| GlobalProtect_DefaultMasterKey | Testa i portali PAN-OS GlobalProtect per l'uso della chiave di crittografia master predefinita |
| LTPA_Token_Key | Forgia cookie LtpaToken2 di IBM WebSphere con chiavi LTPA note e verifica se il target concede l'autenticazione (bypass di autenticazione) |
Abbiamo un pacchetto su pypi, quindi puoi semplicemente eseguire pip install badsecrets per utilizzare la libreria.
Il modo migliore per usare Badsecrets è eseguire badsecrets dopo un pip install:```
pip install badsecrets
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
Sotto il cofano, utilizza l'esempio `cli.py`. È anche possibile accedere manualmente alla CLI senza un'installazione pip:
#### Senza installazione pip:```bash
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
python ./badsecrets/examples/cli.py eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
Per usare gli esempi, dopo aver eseguito pip install, basta fare git clone del repo e cd nella directory badsecrets:```
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
I comandi nella sezione degli esempi qui sotto presuppongono che tu sia in questa directory.
Se stai utilizzando il modulo Badsecrets [BBOT](https://github.com/blacklanternsecurity/bbot), non devi fare altro - BBOT installerà il pacchetto per te.
### cli.py
Bad secrets include un [CLI di esempio](https://github.com/blacklanternsecurity/badsecrets/blob/dev/badsecrets/examples/cli.py) per comodità quando si controllano manualmente i segreti. Come menzionato sopra, è anche accessibile semplicemente eseguendo `badsecrets`, dopo un'installazione pip riuscita.
#### Utilizzo```
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