
Una libreria per rilevare segreti noti attraverso molti framework web.

Una libreria pura in python per identificare l'uso di segreti crittografici noti o molto deboli su una varietà di piattaforme. Il progetto è progettato per essere sia un repository di vari "segreti noti" (ad esempio, chiavi macchina ASP.NET trovate negli esempi dei tutorial), sia per fornire un livello di astrazione indipendente dal linguaggio per identificarne l'uso.
Sapere quando è stato utilizzato un 'bad secret' è solitamente una questione di esaminare un prodotto crittografico in cui il segreto è stato utilizzato: ad esempio, un cookie firmato con un algoritmo di hashing con chiave. Le cose possono complicarsi quando si esaminano le particolarità delle singole implementazioni fornite da ciascuna piattaforma, cosa che questa libreria mira ad alleviare.
Dai un'occhiata al nostro post sul blog completo sul blog di Black Lantern Security!
Ispirato a 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 decifrare 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 cifrati 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 patchate (2017+) di Telerik UI per una Telerik.Upload.ConfigurationHashKey nota |
| Telerik_EncryptionKey | Verifica le versioni patchate (2017+) di Telerik UI per una Telerik.Web.UI.DialogParametersEncryptionKey nota |
| Flask_SignedCookies | Verifica la presenza di una password debole per la firma dei cookie Flask. Wrapper per flask-unsign |
| Peoplesoft_PSToken | Può verificare un PS_TOKEN di peoplesoft per una password di firma errata/debole |
| Django_SignedCookies | Verifica i cookie di sessione di django (in modalità signed_cookie) per una secret_key django nota |
| Rails_SecretKeyBase | Verifica i cookie di sessione firmati o cifrati di Ruby on Rails (da diverse release principali) per una secret_key_base nota |
| Generic_JWT | Verifica i JWT per segreti HMAC noti o chiavi private RSA |
| Jsf_viewstate | Verifica entrambe le implementazioni Mojarra e Myfaces di Java Server Faces (JSF) per l'uso di chiavi segrete note o deboli |
| Symfony_SignedURL | Verifica gli URL "_fragment" di symfony 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 una 'APP_KEY' laravel nota |
| ASPNET_Compressedviewstate | Verifica la presenza di un Viewstate compresso personalizzato un tempo popolare frammento di codice vulnerabile a RCE |
| Rack2_SignedCookies | Verifica i cookie firmati di Rack 2.x per chiavi segrete note |
| Yii2_SignedCookies | Verifica i cookie firmati del framework Yii2 per chiavi di validazione dei cookie note |
| Shiro_RememberMe | Verifica i cookie rememberMe di Apache Shiro per chiavi di cifratura AES note |
| LTPA_Token | Verifica i cookie LtpaToken e LtpaToken2 di IBM WebSphere per chiavi di cifratura LTPA note |
| NextAuth | Verifica i cookie di sessione JWE di NextAuth.js / Auth.js per un NEXTAUTH_SECRET / AUTH_SECRET noto o debole |
I moduli attivi vanno oltre il rilevamento passivo. Utilizzano un prefiltraggio basato su YARA per identificare un target attivo (in base agli header di risposta HTTP, ai cookie e al contenuto del body), quindi forzano 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 ben noti.
I moduli attivi sono abilitati per impostazione predefinita in modalità URL (--url). Usa --passive-only per disabilitarli.
| Nome | Descrizione |
|---|---|
| Shiro_RememberMe_Key | Forza i cookie rememberMe di Apache Shiro con chiavi AES note e verifica se il target le accetta (deserialization RCE) |
| GlobalProtect_DefaultMasterKey | Verifica i portali PAN-OS GlobalProtect per l'uso della chiave di cifratura master predefinita |
| LTPA_Token_Key | Forza i cookie LtpaToken2 di IBM WebSphere con chiavi LTPA note e verifica se il target concede l'autenticazione (auth bypass) |
Abbiamo un pacchetto pypi, quindi puoi semplicemente eseguire pip install badsecrets per utilizzare la libreria.
Il modo migliore per usare Badsecrets è semplicemente eseguire badsecrets dopo aver fatto un pip install:
pip install badsecrets
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
Sotto il cofano, utilizza l'esempio cli.py. La CLI può anche essere accessibile manualmente senza un'installazione pip:
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
python ./badsecrets/examples/cli.py eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
Per utilizzare gli esempi, dopo aver eseguito il pip install è sufficiente eseguire git clone del repository e cd nella directory badsecrets:
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
I comandi nella sezione di esempio riportata di seguito presuppongono che tu sia in questa directory.
Se stai utilizzando il modulo BBOT di Badsecrets, non devi fare altro - BBOT installerà il pacchetto per te.
Bad secrets include una CLI di esempio per comodità quando si controllano manualmente i secret. Come menzionato sopra, è anche accessibile semplicemente eseguendo badsecrets, dopo un'installazione pip riuscita.
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 ...]