
A library for detecting known secrets across many web frameworks एक लाइब्रेरी जो कई वेब फ्रेमवर्क्स में ज्ञात सीक्रेट्स का पता लगाने के लिए है
mkdir -p ~/ctools/ cd ~/ctools/ git clone https://github.com/irsdl/crapsecrets/ cd ~/ctools/crapsecrets pip3 install -r requirements.txt export PYTHONPATH=$(pwd):$PYTHONPATH python3 ./crapsecrets/examples/cli.py -u http://update.microsoft.com/ -r python3 ./crapsecrets/examples/cli.py -u http://update.microsoft.com/ -mrd 5 python3 ./crapsecrets/examples/cli.py -mrd 5 -avsk -fvsp -u http://update.microsoft.com/ python3 ./crapsecrets/examples/cli.py -mrd 5 -avsk -fvsp -mkf ./local/aspnet_machinekeys_local.txt -u python3 ./crapsecrets/examples/cli.py -mrd 5 -avsk -fvsp -mkf ./local/aspnet_machinekeys_local.txt -mkf ./crapsecrets/resources/aspnet_machinekeys.txt -u
## Viewstate के लिए टिप्स
- लंबे रीडायरेक्ट प्रतिक्रियाओं के विश्लेषण की अनुमति देने के लिए `-mrd 5` का उपयोग करके कमांड चलाएँ।
- सत्यापन और एन्क्रिप्शन कुंजियों के रूप में सभी कुंजी संयोजनों को आज़माने के लिए `--allviewstatekeys` या `-avsk` का उपयोग करें।
- जब URL में .aspx गायब हो तो डिफ़ॉल्ट पृष्ठों का एक सेट आज़माने के लिए `--findviewstatepage` या `-fvsp` का उपयोग करें।
## सामान्य परिवर्तन:
- requests के बजाय httpx का उपयोग करता है (परिवर्तन मुख्य रूप से AI द्वारा न्यूनतम परीक्षण के साथ किए गए हैं, इसलिए वे गलत हो सकते हैं)।
- रीडायरेक्शन में गहराई जोड़ता है (मैन्युअल रीडायरेक्ट के लिए `--max-redirect-depth` तर्क)।
- अतिरिक्त हेडर का समर्थन करता है।
- अनुरोध टाइमआउट को `--timeout` या `-t` तर्क का उपयोग करके सेट किया जा सकता है।
## Viewstate परिवर्तन:
- कुछ तार्किक परिवर्तन शामिल हैं।
- एन्क्रिप्टेड .NET 4.0 viewstates में सत्यापन कुंजी के लिए AES और 3DES की संभावना दिखाता है।
- पथ से cookieless मान हटाता है।
- .aspx के बाद पैरामीटर हटाता है।
- एकाधिक स्लैश और बैकस्लैश वर्ण हटाता है।
- सबडायरेक्ट्रीज़ में एप्लिकेशन नामों का उपयोग करने के लिए .NET4.5 तर्क में सुधार करता है।
- "MAC is not enabled" का पता लगाता है।
- लंबे रीडायरेक्ट को संभालता है जब कोई प्रतिक्रिया होती है (यह तब होता है जब रीडायरेक्ट का अनुसरण करने के लिए -r का उपयोग नहीं किया जाता है)।
- किसी अन्य ASPX पृष्ठ पर रीडायरेक्ट को संभालता है (यह तब होता है जब रीडायरेक्ट का अनुसरण करने के लिए -r का उपयोग किया जाता है)।
- जब रीडायरेक्ट के बजाय Server.Transfer का उपयोग किया जाता है तो इसे संभालता है (जनरेटर लक्ष्य से भिन्न होता है)।
- पता लगाता है कि MaxPageStateFieldLength का उपयोग किया गया है और हमारे पास __VIEWSTATEFIELDCOUNT है।
- प्रतिक्रिया में asp.net_sessionid और __antixsrftoken कुकीज़ की जाँच करने के अलावा कुछ पूर्वनिर्धारित ViewStateUserKey का समर्थन करता है।
- ASPNET4.5 में 3DES के लिए डिक्रिप्शन कुंजियों को सही ढंग से पहचानता है।
- aspnet_machinekeys.txt में सभी स्ट्रिंग्स को एक बार सत्यापन कुंजी के रूप में और एक बार डिक्रिप्शन कुंजी के रूप में जाँचने का विकल्प जोड़ना। जब हम `--allviewstatekeys` फ्लैग का उपयोग करते हैं, तो टूल सभी संभावित एन्क्रिप्शन कुंजियों को खोजने का प्रयास करता है और डेटा को डिक्रिप्ट करने के लिए प्रत्येक को यादृच्छिक क्रम में आज़माता है। चूँकि इतनी सारी कुंजियों का परीक्षण किया जाता है, किसी एकल रन पर अमान्य कुंजी से टकराने की संभावना होती है। हालाँकि, टूल हर संभावित कुंजी को सूचीबद्ध करेगा जिसका वह पता लगाता है। टूल को दो बार चलाने से, आप वैध एन्क्रिप्शन कुंजी खोजने की संभावना को काफी बढ़ा देते हैं, क्योंकि दोनों रनों में एक ही कुंजी दिखना लगभग 100% गारंटी है कि यह सही है।
- जब दिए गए URL में .aspx शामिल नहीं है तो डिफ़ॉल्ट पृष्ठों की एक सरणी का उपयोग करना: `["default.aspx", "index.aspx", "main.aspx", "home.aspx" , "start.aspx", "welcome.aspx", "default2.aspx"]` - यह परीक्षण समय को काफी बढ़ाता है लेकिन संभावित रूप से अधिक निष्कर्षों की ओर ले जा सकता है।
- यह machinekeys के लिए संसाधन फ़ाइल के रूप में `-mkf` या `--machinekeyfile` का उपयोग कर सकता है ताकि हम स्थानीय संस्करण का उपयोग कर सकें यदि इसमें संवेदनशील कुंजियाँ हों।
- यह viewstate को पार्स करते समय अधिक ऑब्जेक्ट्स का समर्थन करने के लिए python viewstate लाइब्रेरी के अनुकूलित संस्करण का उपयोग कर रहा है।
- सत्यापन कुंजी न मिलने पर भी डिक्रिप्शन कुंजी की जाँच करने के लिए `-evsd` या `--enable-viewstate-decryption` तर्क जोड़ा गया। यह तब उपयोगी हो सकता है जब सत्यापन कुंजी सूची में मूल से थोड़ी भिन्न हो।
- इसके हैश कोड की पहचान करके `__VIEWSTATEGENERATOR` की गणना करता है। यह वास्तविक पथ और ऐप पथ को जल्दी खोजने का भी प्रयास करता है यदि `__VIEWSTATEGENERATOR` और URL प्रदान किए गए हों। यह संभावित रूप से प्रदर्शन बढ़ा सकता है, खासकर जब URL से पहचान योग्य डिफ़ॉल्ट ASPX पृष्ठ गायब हो।
- उपयोगकर्ता `-nt` या `--num-threads` विकल्प के साथ उपयोग करने के लिए थ्रेड्स की संख्या निर्दिष्ट कर सकते हैं (केवल viewstate मॉड्यूल पर लागू)। डिफ़ॉल्ट 1 है जो अधिकांश मामलों में आश्चर्यजनक रूप से 10 से तेज़ है!
- इसे बिना एक्सटेंशन वाली फ़ाइलों का समर्थन करना चाहिए लेकिन हमें त्रुटियों को ठीक करने की आवश्यकता होगी क्योंकि वे रिपोर्ट की जाती हैं।
- यह IsolateApps का समर्थन करता है (.NET40 लीगेसी के लिए उपयोगी)। यह तब होता है जब सत्यापन या डिक्रिप्शन कुंजियों के बाद ",IsolateApps" होता है।
- यह https://soroush.me/blog/2019/07/iis-application-vs-folder-detection-during-blackbox-testing/ के आधार पर सक्रिय रूप से परीक्षण करके apppaths की संख्या कम करता है। इसे `-dap` या `--disable-active-path-check` द्वारा अक्षम किया जा सकता है।
- प्रतिक्रिया बॉडी में __VIEWSTATE_KEY की जाँच करें और इसे viewstatekey के रूप में भी उपयोग करें।
- सत्र आईडी या फिर एंटी-XSRF टोकन के आधार पर viewstate कुंजी में सार्वजनिक IP पता जोड़ें।
- यह __VIEWSTATE गायब होने पर __EVENTVALIDATION का उपयोग करता है।
- यह "aspnet_resource.py" नामक नए मॉड्यूल के अंतर्गत `/WebResource.axd?d=` या `/ScriptResource.axd?d=` से एन्क्रिप्टेड संसाधन मानों का उपयोग करता है। यह वहाँ भी IsolateApps सुविधा का समर्थन करता है। यह तब उपयोगी होता है जब __VIEWSTATE और __EVENTVALIDATION गायब हों।
## TODO:
- viewstate की गणना करते समय सामान्य पृष्ठों और निर्देशिकाओं के लिए एक शब्दकोश जोड़ें।
- IsolateByAppId के लिए समर्थन लागू करें (संभवतः असंभव क्योंकि इसके लिए रजिस्ट्री से एक गुप्त कुंजी की आवश्यकता होती है जो हमारे पास नहीं होनी चाहिए!)
- त्रुटि होने पर पुनः प्रयास के लिए समर्थन जोड़ें।
- requests को httpx से बदलने के कारण होने वाली त्रुटियों का परीक्षण करें।
- requests से httpx में रूपांतरण और AI के उपयोग के कारण कुछ विफल परीक्षण हैं। उन्हें प्रोजेक्ट के रूट में `pytest` चलाकर देखा जा सकता है। हालाँकि उनमें से कुछ को ठीक कर दिया गया है, फिर भी परीक्षणों में कुछ त्रुटियाँ हैं जिन्हें भविष्य में संबोधित करने की आवश्यकता है। मुझे तुलना के लिए मूल रेपो पर भी pytest चलाने की आवश्यकता है!```
FAILED tests/all_modules_test.py::test_carve_all_cookies - AssertionError: assert 2 == 7
FAILED tests/examples_blacklist3r_test.py::test_examples_blacklist3r_offline - AssertionError: assert 'Did not find viewstate in repsonse from URL' in 'Did not find viewstate in response...
FAILED tests/examples_cli_test.py::test_example_cli_hashcat_telerikhashkey - AssertionError: assert 'Module: [Te...ture Command' not in '\x1b[32m\n ...y_file>]\n\n'
FAILED tests/examples_cli_test.py::test_example_cli_hashcat_telerikhashkey_invalid2 - AssertionError: assert 'Known Secret Found!' in '\x1b[32m\n __ ) | ...
FAILED tests/examples_symfony_signedurl_test.py::test_symfony_brute_success - AssertionError: assert 'Found Symfony Secret! [50c8215b436ebfcc1d568effb624a40e]' in 'Target appears to be ...
FAILED tests/examples_telerik_knownkey_test.py::test_fullrun_PBKDF2 - KeyError: "'additional_matcher' is not a valid Pattern"
FAILED tests/examples_telerik_knownkey_test.py::test_badoutput_PBKDF1_MS - KeyError: "'additional_matcher' is not a valid Pattern"
FAILED tests/examples_telerik_knownkey_test.py::test_fullrun_asyncupload_earlydetection - KeyError: "'additional_matcher' is not a valid Pattern"
FAILED tests/examples_telerik_knownkey_test.py::test_fullrun_asyncupload_success - KeyError: "'additional_matcher' is not a valid Pattern"
FAILED tests/examples_telerik_knownkey_test.py::test_fullrun_asyncupload_PBKDF1_MS - KeyError: "'additional_matcher' is not a valid Pattern"
यह सॉफ़्टवेयर पूर्ण रूप से शैक्षणिक अनुसंधान और प्रभावी रक्षात्मक तकनीकों के विकास के उद्देश्यों के लिए बनाया गया है, और इसका उद्देश्य सिस्टम पर हमला करना नहीं है, सिवाय उन मामलों के जहां स्पष्ट रूप से अधिकृत किया गया हो। प्रोजेक्ट अनुरक्षक सॉफ़्टवेयर के दुरुपयोग के लिए ज़िम्मेदार या उत्तरदायी नहीं हैं। ज़िम्मेदारी से उपयोग करें।
यह सॉफ़्टवेयर एक व्यक्तिगत प्रोजेक्ट है और किसी भी कंपनी से संबंधित नहीं है, जिसमें प्रोजेक्ट स्वामी और योगदानकर्ताओं के नियोक्ता शामिल हैं।

विभिन्न प्लेटफ़ॉर्म पर ज्ञात या बहुत कमज़ोर क्रिप्टोग्राफ़िक रहस्यों के उपयोग की पहचान करने के लिए एक शुद्ध पायथन लाइब्रेरी। यह प्रोजेक्ट विभिन्न "ज्ञात रहस्यों" (उदाहरण के लिए, ट्यूटोरियल में उदाहरणों में पाए जाने वाले ASP.NET मशीन कुंजियाँ) का भंडार होने के साथ-साथ उनके उपयोग की पहचान करने के लिए एक भाषा-अज्ञेयवादी अमूर्त परत प्रदान करने के लिए डिज़ाइन किया गया है।
यह जानना कि 'खराब रहस्य' का उपयोग कब किया गया था, आमतौर पर उस क्रिप्टोग्राफ़िक उत्पाद की जाँच करने का मामला है जिसमें रहस्य का उपयोग किया गया था: उदाहरण के लिए, एक कुकी जो कुंजीयुक्त हैशिंग एल्गोरिथ्म के साथ हस्ताक्षरित है। जब आप प्रत्येक प्लेटफ़ॉर्म द्वारा प्रदान की जाने वाली व्यक्तिगत कार्यान्वयन विशिष्टताओं में गहराई से उतरते हैं तो चीज़ें जटिल हो सकती हैं, जिसे यह लाइब्रेरी कम करने का लक्ष्य रखती है।
ब्लैक लैंटर्न सिक्योरिटी ब्लॉग पर हमारी पूरी ब्लॉग पोस्ट देखें!
Blacklist3r से प्रेरित, समर्थित प्लेटफ़ॉर्म का विस्तार करने और भाषा और ऑपरेटिंग सिस्टम निर्भरताओं को हटाने की इच्छा के साथ।
| नाम | विवरण |
|---|---|
| ASPNET_Viewstate | ज्ञात मशीन कुंजियों की सूची के विरुद्ध viewstate/generator की जाँच करता है। |
| Telerik_HashKey | ज्ञात Telerik.Upload.ConfigurationHashKey के लिए Telerik UI के पैच किए गए (2017+) संस्करणों की जाँच करता है |
| Telerik_EncryptionKey | ज्ञात Telerik.Web.UI.DialogParametersEncryptionKey के लिए Telerik UI के पैच किए गए (2017+) संस्करणों की जाँच करता है |
| Flask_SignedCookies | कमज़ोर Flask कुकी हस्ताक्षर पासवर्ड की जाँच करता है। flask-unsign के लिए रैपर |
| Peoplesoft_PSToken | खराब/कमज़ोर हस्ताक्षर पासवर्ड के लिए peoplesoft PS_TOKEN की जाँच कर सकता है |
| Django_SignedCookies | ज्ञात django secret_key के लिए django के सत्र कुकीज़ (signed_cookie मोड में होने पर) की जाँच करता है |
| Rails_SecretKeyBase | ज्ञात secret_key_base के लिए Ruby on Rails के हस्ताक्षरित या एन्क्रिप्टेड सत्र कुकीज़ (कई प्रमुख रिलीज़ से) की जाँच करता है |
| Generic_JWT | ज्ञात HMAC रहस्यों या RSA निजी कुंजियों के लिए JWT की जाँच करता है |
| Jsf_viewstate | ज्ञात या कमज़ोर गुप्त कुंजियों के उपयोग के लिए Java Server Faces (JSF) के Mojarra और Myfaces दोनों कार्यान्वयनों की जाँच करता है |
| Symfony_SignedURL | ज्ञात HMAC कुंजी के लिए symfony "_fragment" URL की जाँच करता है। हैश सहित पूर्ण URL पर कार्य करता है |
| Express_SignedCookies_ES | ज्ञात 'session secret' के लिए express.js express-session मिडलवेयर के हस्ताक्षरित कुकीज़ और सत्र कुकीज़ की जाँच करता है |
| Express_SignedCookies_CS | ज्ञात रहस्य के लिए express.js cookie-session मिडलवेयर के हस्ताक्षरित कुकीज़ और सत्र कुकीज़ की जाँच करता है |
| Laravel_SignedCookies | ज्ञात laravel 'APP_KEY' के लिए 'laravel_session' कुकीज़ की जाँच करता है |
| ASPNET_Vstate | एक बार लोकप्रिय कस्टम संपीड़ित Viewstate कोड स्निपेट की जाँच करता है जो RCE के लिए संवेदनशील है |
| Rack2_SignedCookies | ज्ञात गुप्त कुंजियों के लिए Rack 2.x हस्ताक्षरित कुकीज़ की जाँच करता है |
हमारे पास एक pypi पैकेज है, इसलिए आप लाइब्रेरी का उपयोग करने के लिए बस pip install badsecrets कर सकते हैं।
Badsecrets का उपयोग करने का सबसे अच्छा तरीका pip install करने के बाद बस badsecrets चलाना है:```
pip install badsecrets
badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
हुड के नीचे, यह `cli.py` उदाहरण का उपयोग कर रहा है। CLI को pip इंस्टॉलेशन के बिना भी मैन्युअल रूप से एक्सेस किया जा सकता है:
#### pip इंस्टॉलेशन के बिना:```bash
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
python ./badsecrets/examples/cli.py eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
उदाहरणों का उपयोग करने के लिए, pip install करने के बाद बस रिपो को git clone करें और badsecrets डायरेक्टरी में cd करें:```
git clone https://github.com/blacklanternsecurity/badsecrets.git
cd badsecrets
नीचे दिए गए उदाहरण अनुभाग में दिए गए कमांड मानते हैं कि आप इस निर्देशिका में हैं।
यदि आप Badsecrets [BBOT](https://github.com/blacklanternsecurity/bbot) मॉड्यूल का उपयोग कर रहे हैं, तो आपको कुछ और करने की आवश्यकता नहीं है - BBOT आपके लिए पैकेज इंस्टॉल कर देगा।
### cli.py
Bad secrets में मैन्युअल रूप से सीक्रेट्स की जांच करने की सुविधा के लिए एक [उदाहरण CLI](https://github.com/blacklanternsecurity/badsecrets/blob/dev/badsecrets/examples/cli.py) शामिल है। जैसा कि ऊपर बताया गया है, सफल pip इंस्टॉल के बाद इसे केवल `badsecrets` निष्पादित करके भी एक्सेस किया जा सकता है।
#### उपयोग```
usage: badsecrets [-h] [-nc] [-u URL] [-nh] [-c CUSTOM_SECRETS] [-p PROXY] [-a USER_AGENT] [product ...]
Check cryptographic products against badsecrets library
positional arguments:
product Cryptographic product to check for known secrets
options:
-h, --help show this help message and exit
-nc, --no-color Disable color message in the console
-u URL, --url URL Use URL Mode. Specified the URL of the page to access and attempt to check for secrets
-nh, --no-hashcat Skip the check for compatable hashcat commands when secret isn't found
-c CUSTOM_SECRETS, --custom-secrets CUSTOM_SECRETS
include a custom secrets file to load along with the default secrets
-p PROXY, --proxy PROXY
In URL mode, Optionally specify an HTTP proxy
-a USER_AGENT, --user-agent USER_AGENT
In URL mode, Optionally set a custom user-agent
इसमें एक URL मोड है, जो किसी लक्ष्य से कनेक्ट होगा और क्रिप्टोग्राफ़िक उत्पादों के लिए carve करने का प्रयास करेगा तथा मिलने वाले किसी भी उत्पाद को सभी मॉड्यूल के विरुद्ध जाँचेगा।
* URL मोड```bash
badsecrets --url http://example.com/contains_bad_secret.html
आप इस मोड में --user-agent "user-agent string" के साथ एक कस्टम यूज़र-एजेंट या --proxy http://127.0.0.1 के साथ एक प्रॉक्सी भी सेट कर सकते हैं।
उदाहरण आउटपुट:```bash $ badsecrets eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo
__ ) | |
__ \ | _ | __| _ \ | | _ \ | |
| | ( | ( | _ \ __/ ( | / | _ \
__/ _,| _,| ____/ _| _| _| _| _| ____/
v0.3.337
Known Secret Found!
Detecting Module: Generic_JWT
Product Type: JSON Web Token (JWT) Product: eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo Secret Type: HMAC/RSA Key Location: manual Secret: 1234 Details: {'Issuer': 'Issuer', 'Username': 'BadSecrets', 'exp': 1593133483, 'iat': 1466903083, 'jwt_headers': {'alg': 'HS256'}}
* Hashcat
डिफ़ॉल्ट रूप से, जब कोई सीक्रेट नहीं मिलता है, तो प्रदान किए गए उत्पाद को संभावित hashcat मैचों के लिए जाँचा जाएगा। यदि कोई मैच होता है, तो लगभग पूरा hashcat कमांड तैयार किया जाएगा (संभावित रूप से) जो उत्पाद को hashcat के माध्यम से क्रैक करने के लिए उपयुक्त हो सकता है। यह आपको उन कुंजियों को प्राप्त करने में मदद कर सकता है जो ज्ञात नहीं हो सकती हैं, लेकिन कमज़ोर हैं और फिर भी क्रैक करने योग्य हैं। सभी मॉड्यूल hashcat आउटपुट उत्पन्न करने में सक्षम नहीं हैं। इस व्यवहार को `--no-hashcat` विकल्प के साथ अक्षम किया जा सकता है।```
badsecrets eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.qvkcSLMQPAQdEuRFv0h3aQIRpTfaI57GjXLOWI_6NaE
उदाहरण आउटपुट:```
__ ) | |
__ \ | _ | __| _ \ | | _ \ | |
| | ( | ( | _ \ __/ ( | / | _ \
__/ _,| _,| ____/ _| _| _| _| _| ____/
v0.3.337
No secrets found :(
Potential matching hashcat commands:
Module: [Flask_SignedCookies] Flask Signed Cookie Command: [hashcat -m 29100 -a 0 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.qvkcSLMQPAQdEuRFv0h3aQIRpTfaI57GjXLOWI_6NaE <dictionary_file>] Module: [Generic_JWT] JSON Web Token (JWT) Algorithm: HS256 Command: [hashcat -m 16500 -a 0 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.qvkcSLMQPAQdEuRFv0h3aQIRpTfaI57GjXLOWI_6NaE <dictionary_file>]
* कस्टम सीक्रेट सूचियाँ
अतिरिक्त सीक्रेट वाली एक फ़ाइल निर्दिष्ट करना संभव है। जब जाँच की जाती है, तो इन्हें डिफ़ॉल्ट सूचियों में जोड़ा जाएगा। यह `-c` / `--custom-secrets` फ़्लैग के साथ पूरा किया जाता है। प्रदान किया गया मान एक मान्य फ़ाइल होना चाहिए। प्रदान की गई फ़ाइल पर 100k आकार की सीमा है।```
badsecrets eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.vKxsE0u-TrpoMQ5zmBv1_I-NXSgouq6iZJWMHbHSmgY -c test.txt
उदाहरण आउटपुट:```
__ ) | |
__ \ | _ | __| _ \ | | _ \ | |
| | ( | ( | _ \ __/ ( | / | _ \
__/ _,| _,| ____/ _| _| _| _| _| ____/
v0.3.337
Including custom secrets list [test.txt]
Known Secret Found!
Detecting Module: Generic_JWT
Product Type: JSON Web Token (JWT) Product: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.vKxsE0u-TrpoMQ5zmBv1_I-NXSgouq6iZJWMHbHSmgY Secret Type: HMAC/RSA Key Location: manual Secret: fake123 Details: {'sub': '1234567890', 'name': 'John Doe', 'iat': 1516239022, 'jwt_headers': {'alg': 'HS256', 'typ': 'JWT'}}
### blacklist3r.py
*नोट: यह अब पुराना हो चुका है, क्योंकि `cli.py` अब machinekeys/generator मानों को संभालने में सक्षम है। इसे संदर्भ के लिए शामिल रखा जाएगा।*
*उदाहरण: `badsecrets KLox5XeGYfb7Lo8zFzr1YepUagXuixcxX55lpFht+rrW6VGheZi831vdusH6DCMfxIhsLG1EPU3OuPvqN2XBc/fj0ew15TQ1zBmmKWJVns4= AAAAAAAA`*
Bad secrets में एक [पूर्ण रूप से कार्यशील CLI उदाहरण](https://github.com/blacklanternsecurity/badsecrets/blob/dev/badsecrets/examples/blacklist3r.py) शामिल है, जो [blacklist3r](https://github.com/NotSoSecure/Blacklist3r) की कार्यक्षमता को python badsecrets/examples/blacklist3r में दोहराता है।```bash
python ./badsecrets/examples/blacklist3r.py --url http://vulnerablesite/vulnerablepage.aspx
python ./badsecrets/examples/blacklist3r.py --viewstate /wEPDwUJODExMDE5NzY5ZGQMKS6jehX5HkJgXxrPh09vumNTKQ== --generator EDD8C9AE
Telerik हैश कुंजियों (Telerik.Upload.ConfigurationHashKey) और एन्क्रिप्शन कुंजियों (Telerik.Web.UI.DialogParametersEncryptionKey) की पहचान करने के लिए पूर्ण रूप से कार्यात्मक CLI उदाहरण, जो Telerik DialogHandler इंस्टेंस के साथ Post-2017 संस्करणों (CVE-2017-9248 के लिए पैच किए गए) में उपयोग होती हैं, साथ ही संस्करण ब्रूट-फोर्सिंग / एक्सप्लॉइटेशन DialogParameters मान उत्पन्न करने के लिए।
वर्तमान में, यह Telerik के "पैच किए गए" संस्करणों के लिए कार्यशील एक्सप्लॉइट URL बनाने में सक्षम एकमात्र उपकरण प्रतीत होता है।```bash python ./badsecrets/examples/telerik_knownkey.py --url http://vulnerablesite/Telerik.Web.UI.DialogHandler.aspx
वैकल्पिक रूप से `--machine-keys` के साथ ASP.NET MachineKeys शामिल करें (इससे brute-forcing का समय काफी बढ़ जाएगा)
*अपडेट: यह उपयोगिता अब, `Telerik.Web.UI.DialogHandler.aspx` एंडपॉइंट के अतिरिक्त, `Telerik.Web.UI.WebResource.axd` एंडपॉइंट के माध्यम से उपयोग में आने वाली ज्ञात `Telerik.AsyncUpload.ConfigurationEncryptionKey` कुंजियों का भी पता लगाएगी।*```bash
python ./badsecrets/examples/telerik_knownkey.py --url http://vulnerablesite/Telerik.Web.UI.WebResource.axd
पिप इंस्टॉल के साथ, अब इसे सीधे telerik-knownkey कमांड के माध्यम से चलाया जा सकता है```bash
python telerik-knownkey --url http://vulnerablesite/Telerik.Web.UI.WebResource.axd
### symfony_knownkey.py
जब "\_fragment" URL सक्षम होते हैं, तो Symfony ज्ञात गुप्त कुंजी का ब्रूट-फोर्स पता लगाना, भले ही हैश वाला कोई उदाहरण URL न मिल सके। [प्रासंगिक ब्लॉग पोस्ट](https://www.ambionics.io/blog/symfony-secret-fragment)।```bash
python ./badsecrets/examples/symfony_knownkey.py --url https://localhost/
पिप इंस्टॉल के साथ, अब इसे सीधे symfony-knownkey कमांड के माध्यम से चलाया जा सकता है```bash
python symfony-knownkey --url http://vulnerablesite/Telerik.Web.UI.WebResource.axd
## BBOT मॉड्यूल
Badsecrets का उपयोग करने के सर्वोत्तम तरीकों में से एक, विशेष रूप से `ASPNET_Viewstate` और `Jsf_viewstate` मॉड्यूल के लिए, Badsecrets [BBOT](https://github.com/blacklanternsecurity/bbot) मॉड्यूल के साथ है। यह आपको सबडोमेन एन्यूमरेशन के साथ मिलकर हजारों सिस्टमों पर आसानी से जांच करने की अनुमति देगा।```
bbot -f subdomain-enum -m badsecrets -t evil.corp

जांचें कि कोई टोकन या अन्य क्रिप्टोग्राफिक उत्पाद किसी ज्ञात कुंजी के साथ उत्पन्न किया गया था या नहीं```python from badsecrets import modules_loaded
Django_SignedCookies = modules_loaded["django_signedcookies"] ASPNET_Viewstate = modules_loaded["aspnet_viewstate"] Flask_SignedCookies = modules_loaded["flask_signedcookies"] Peoplesoft_PSToken = modules_loaded["peoplesoft_pstoken"] Telerik_HashKey = modules_loaded["telerik_hashkey"] Telerik_EncryptionKey = modules_loaded["telerik_encryptionkey"] Rails_SecretKeyBase = modules_loaded["rails_secretkeybase"] Generic_JWT = modules_loaded["generic_jwt"] Jsf_viewstate = modules_loaded["jsf_viewstate"] Symfony_SignedURL = modules_loaded["symfony_signedurl"] Express_SignedCookies_ES = modules_loaded["express_signedcookies_es"] Express_SignedCookies_CS = modules_loaded["express_signedcookies_cs"] Laravel_SignedCookies = modules_loaded["laravel_signedcookies"] ASPNET_Vstate = modules_loaded["aspnet_vstate"] Rack2_SignedCookies = modules_loaded["rack2_signedcookies"]
x = ASPNET_Viewstate() print(f"###{str(x.class.name)}###") r = x.check_secret("AgF5WuyVO11CsYJ1K5rjyuLXqUGCITSOapG1cYNiriYQ6VTKochMpn8ws4eJRvft81nQIA==","EDD8C9AE") if r: print(r) else: print("KEY NOT FOUND :(")
x = Telerik_HashKey()
print(f"###{str(x.class.name)}###")
r = x.check_secret("vpwClvnLODIx9te2vO%2F4e06KzbKkjtwmNnMx09D1Dmau0dPliYzgpqB9MnEqhPNe3fWemQyH25eLULJi8KiYHXeHvjfS1TZAL2o5Gku1gJbLuqusRXZQYTNlU2Aq4twXO0o0CgVUTfknU89iw0ceyaKjSteOhxGvaE3VEDfiKDd8%2B9j9vD3qso0mLMqn%2Btxirc%2FkIq5oBbzOCgMrJjkaPMa2SJpc5QI2amffBJ%2BsAN25VH%2BwabEJXrjRy%2B8NlYCoUQQKrI%2BEzRSdBsiMOxQTD4vz2TCjSKrK5JEeFMTyE7J39MhXFG38Bq%2FZMDO%2FETHHdsBtTTkqzJ2odVArcOzrce3Kt2%2FqgTUPW%2BCjFtkSNmh%2FzlB9BhbxB1kJt1NkNsjywvP9j7PvNoOBJsa8OwpEyrPTT3Gm%2BfhDwtjvwpvN7l7oIfbcERGExAFrAMENOOt4WGlYhF%2F8c9NcDv0Bv3YJrJoGq0rRurXSh9kcwum9nB%2FGWcjPikqTDm6p3Z48hEnQCVuJNkwJwIKEsYxJqCL95IEdX3PzR81zf36uXPlEa3YdeAgM1RD8YGlwlIXnrLhvMbRvQW0W9eoPzE%2FjP68JGUIZc1TwTQusIWjnuVubFTEUMDLfDNk12tMwM9mfnwT8lWFTMjv9pF70W5OtO7gVN%2BOmCxqAuQmScRVExNds%2FF%2FPli4oxRKfgI7FhAaC%2Fu1DopZ6vvBdUq1pBQE66fQ9SnxRTmIClCpULUhNO90ULTpUi9ga2UtBCTzI8z6Sb6qyQ52NopNZMFdrn9orzdP8oqFeyYpF%2BQEtbp%2F5AMENkFkWUxHZn8NoSlO8P6G6ubSyDdY4QJPaFS4FxNhhm85WlZC9xfEZ1AGSSBOu9JJVYiKxXnL1yYLqrlWp5mfBHZeUBwEa%2FMjGxZEVYDhXo4PiU0jxN7fYmjaobp3DSgA5H3BcFuNG5d8CUnOlQcEie5b%2BUHOpI9zAk7qcuEUXbaZ5Mvh0t2jXCRALRKYDyBdbHlWAFo10dTIM6L3aSTM5uEz9%2FalXLXoWlMo7dTDpuO5bBfTq7YkoPExL3g3JJX47UhuLq85i3%2Bzxfvd7r%2Fmid69kbD3PnX%2Bj0QxaiShhyOZg6jl1HMeRRXvZap3FPCIfxbCf7j2TRqB5gYefBIIdGYjrdiL6HS8SbjXcROMwh2Fxnt505X4jmkmDcGmneU3z%2B84TSSFewcSpxGEGvHVkkU4OaT6vyFwsxCmdrR187tQZ7gn3ZkAiTps%2FfOPcL5QWXja06Z%2FHT3zboq6Hj9v9NBHzpC1eAK0YN8r4V2UMI3P0%2FsIPQYXhovoeLjJwq6snKZTX37ulE1mbS1uOY%2BZrvFYbLN5DdNL%2B%2Bl%2F%2BcWIpc0RSYBLo19xHpKeoeLjU2sxaYzK%2B92D4zKANdPPvsHPqJD1Y%2FBwCL%2FfZKaJfRK9Bj09ez1Z1ixTEKjIRCwuxijnJGq33faZchbwpMPpTfv43jEriGwXwoqOo9Mbj9ggPAil7O81XZxNT4vv4RoxXTN93V100rt3ClXauL%2BlNID%2BseN2CEZZqnygpTDf2an%2FVsmJGJJcc0goW3l43mhx2U79zeuT94cFPGpvITEbMtjmuNsUbOBuw6nqm5rAs%2FxjIsDRqfQxGQWfS0kuwuU6RRmiME2Ps0NrBENIbZzcbgw6%2BRIwClWkvEG%2BK%2FPdcAdfmRkAPWUNadxnhjeU2jNnzI1yYNIOhziUBPxgFEcAT45E7rWvf8ghT08HZvphzytPmD%2FxuvJaDdRgb6a30TjSpa7i%2BEHkIMxM5eH1kiwhN6xkTcBsJ87epGdFRWKhTGKYwCbaYid1nRs7%2BvQEU7MRYghok8KMTueELipohm3otuKo8V4a7w4TgTSBvPE%2BLPLJRwhM8KcjGlcpzF1NowRo6zeJJhbdPpouUH2NJzDcp7P4uUuUB9Cxt9B986My6zDnz1eyBvRMzj7TABfmfPFPoY3RfzBUzDm%2FA9lOGsM6d9WZj2CH0WxqiLDGmP1Ts9DWX%2FsYyqEGK5R1Xpnp7kRIarPtYliecp50ZIH6nqSkoCBllMCCE6JN%2BdoXobTpulALdmQV0%2Bppv%2FAjzIJrTHgX7jwRGEAeRgAxTomtemmIaH5NtV7xt8XS%2BqwghdJl1D06%2FWhpMtJ1%2FoQGoJ0%2F7ChYyefyAfsiQNWsO66UNVyl71RVPwATnbRO5K5mtxn0M2wuXXpAARNh6pQTcVX%2FTJ4jmosyKwhI6I870NEOsSaWlKVyOdb97C3Bt0pvzq8BagV5FMsNtJKmqIIM0HRkMkalIyfow9iS%2B5xGN5eKM8NE4E6hO4CvmpG%2BH2xFHTSNzloV0FjLdDmj5UfMjhUuEb3rkKK1bGAVaaherp6Ai6N4YJQzh%2FDdpo6al95EZN2OYolzxitgDgsWVGhMvddyQTwnRqRY04hdVJTwdhi4TiCPbLJ1Wcty2ozy6VDs4w77EOAQ5JnxUmDVPA3vXmADJZR0hIJEsuxXfYg%2BRIdV4fzGunV4%2B9jpiyM9G11iiesURK82o%2BdcG7FaCkkun2K2bvD6qGcL61uhoxNeLVpAxjrRjaEBrXsexZ9rExpMlFD8e3NM%2B0K0LQJvdEvpWYS5UTG9cAbNAzBs%3DpDsPXFGf2lEMcyGaK1ouARHUfqU0fzkeVwjXU9ORI%2Fs%3D")
if r:
print(r)
else:
print("KEY NOT FOUND :(")
x = Flask_SignedCookies() print(f"###{str(x.class.name)}###") r = x.check_secret("eyJoZWxsbyI6IndvcmxkIn0.XDtqeQ.1qsBdjyRJLokwRzJdzXMVCSyRTA") if r: print(r) else: print("KEY NOT FOUND :(")
x = Peoplesoft_PSToken() print(f"###{str(x.class.name)}###") r = x.check_secret("qAAAAAQDAgEBAAAAvAIAAAAAAAAsAAAABABTaGRyAk4AdQg4AC4AMQAwABSpxUdcNT67zqSLW1wY5/FHQd1U6mgAAAAFAFNkYXRhXHicHYfJDUBQAESfJY5O2iDWgwIsJxHcxdaApTvFGX8mefPmAVzHtizta2MSrCzsXBxsnOIt9yo6GvyekZqJmZaBPCUmVUMS2c9MjCmJKLSR/u+laUGuzwdaGw3o") if r: print(r) else: print("KEY NOT FOUND :(")
x = Django_SignedCookies() print(f"###{str(x.class.name)}###") r = x.check_secret(".eJxVjLsOAiEURP-F2hAuL8HSfr-BAPciq4ZNlt3K-O9KsoU2U8w5My8W4r7VsHdaw4zswoCdfrsU84PaAHiP7bbwvLRtnRMfCj9o59OC9Lwe7t9Bjb2OtbMkAEGQtQjekykmJy9JZIW-6CgUaCGsA6eSyV65s1Qya_xGKZrY-wPVYjdw:1ojOrE:bfOktjgLlUykwCIRIpvaTZRQMM3-UypscEN57ECtXis") if r: print(r) else: print("KEY NOT FOUND :(")
x = Rails_SecretKeyBase() print(f"###{str(x.class.name)}###") r = x.check_secret("dUEvRldLekFNcklGZ3ZSbU1XaHJ0ZGxsLzhYTHlNTW43T3BVN05kZXE3WUhQOVVKbVA3Rm5WaSs5eG5QQ1VIRVBzeDFNTnNpZ0xCM1FKbzFZTEJISzhaNzFmVGYzME0waDFURVpCYm5TQlJFRmRFclYzNUZhR3VuN29PMmlkVHBrRi8wb3AwZWgvWmxObkFOYnpkeHR1YWpWZ3lnN0Y4ZW9xSk9LNVlQd0U4MmFsbWtLZUI5VzkzRkM4YXBFWXBWLS15L00xME1nVFp2ZTlmUWcxZVlpelpnPT0=--7efe7919a5210cfd1ac4c6228e3ff82c0600d841") if r: print(r) else: print("KEY NOT FOUND :(")
x = Generic_JWT() print(f"###{str(x.class.name)}###") r = x.check_secret("eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo") if r: print(r) else: print("KEY NOT FOUND :(")
x = Telerik_EncryptionKey() print(f"###{str(x.class.name)}###") r = x.check_secret("owOnMokk%2F4N7IMo6gznRP56OYIT34dZ1Bh0KBbXlFgztgiNNEBYrgWRYDBkDlX8BIFYBcBztC3NMwoT%2FtNF%2Ff2nCsA37ORIgfBem1foENqumZvmcTpQuoiXXbMWW8oDjs270y6LDAmHhCRsl4Itox4NSBwDgMIOsoMhNrMigV7o7jlgU16L3ezISSmVqFektKmu9qATIXme63u4IKk9UL%2BGP%2Fk3NPv9MsTEVH1wMEf4MApH5KfWBX96TRIc9nlp3IE5BEWNMvI1Gd%2BWXbY5cSY%2Buey2mXQ%2BAFuXAernruJDm%2BxK8ZZ09TNsn5UREutvNtFRrePA8tz3r7p14yG756E0vrU7uBz5TQlTPNUeN3shdxlMK5Qzw1EqxRZmjhaRpMN0YZgmjIpzFgrTnT0%2Bo0f6keaL8Z9TY8vJN8%2BEUPoq%2F7AJiHKm1C8GNc3woVzs5mJKZxMUP398HwGTDv9KSwwkSpHeXFsZofbaWyG0WuNldHNzM%2FgyWMsnGxY6S086%2F477xEQkWdWG5UE%2FowesockebyTTEn3%2B%2FqiVy%2FIOxXvMpvrLel5nVY%2FSouHp5n2URRyRsfo%2B%2BOXJZo7yxKQoYBSSkmxdehJqKJmbgxNp5Ew8m89xAS5g99Hzzg382%2BxFp8yoDVZMOiTEuw0J%2B4G6KizqRW9cis%2FELd0aDE1V7TUuJnFrX%2BlCLOiv100tKpeJ0ePMOYrmvSn0wx7JhswNuj%2BgdKqvCnMSLakGWiOHxu5m9Qqdm3s5sk7nsaxMkh8IqV%2BSzB9A2K1kYEUlY40II1Wun67OSdLlYfdCFQk4ED0N%2BV4kES%2F1xpGiaPhxjboFiiV%2BkvCyJfkuotYuN%2B42CqFyAyepXPA%2BR5jVSThT6OIN2n1UahUnrD%2BwKKGMA9QpVPTSiGLen2KSnJtXISbrl2%2BA2AnQNH%2BMEwYVNjseM0%2BAosbgVfNde2ukMyugo%2FRfrRM27cbdVlE0ms0uXhlgKAYJ2ZN54w1tPWhpGxvZtB0keWpZan0YPh8CBgzsAIMa04HMYLCtgUTqxKqANoKXSy7VIJUzg3fl%2F2WUELjpXK9gRcgexNWDNB1E0rHd9PUo0PvpB4fxSrRpb1LRryipqsuoJ8mrpOVrVMvjracBvtoykK3GrN%2FDUlXkSG%2FAeBQN7HwDJ9QPi3AtEOohp78Op3nmbItXo7IJUSjzBNzUYR8YPj6Ud7Fje9LZSwMBngvgx%2BOKy6HsV4ofOAU2%2FK1%2BfxI0KkCeoSso9NJHWgBD7ijfXUa1Hrc%2FuNU3mTlSSVp3VStQrJbQCkr4paaHYWeeO4pRZCDSBNUzs9qq3TDePwpEQc4QROrw5htdniRk26lFIFm%2Fzk2nC77Pg%2BrkRC1W%2BlRv0lyXsmXVBCe8F1szpWXHCxHNAJwKH%2FBb%2BV1k6AXFXVWPW5vADbXUvRu0s6KLaqu6a0KCB7dt3K2Ni%2FI6O%2FmISYXzknbMrwwakNfajbRF2ibodgR9R9xvoCoCXa3ka7%2Fejr%2BmsZ2HvPKUAffd2fNIWCQrejfpuIoOWiYx6ufN8E41HetCbYfvsI6JQfPOEdOYWI2px%2BLdfO3Nybq99%2BRSQOhjNZakBP54ozlCUfwgpLOmTBwsswZexv1RK5MIi8%2FWtjlJ%2FKjkYxdkFUlwggGS2xDwzcyl2%2FakNCQ5YmxjU8cRY7jZQRMo%2F8uTw5qa2MNZPaQGI18uRgr0i%2FTX3t57fJYCpMLXSaUKIdO7O%2FCQhIyGTS6KrPN%2B3%2FgUb%2BPQ1viGhpnWfGEYF9vhIlK57z8G8G82UQ3DpttD7M8mQ0KsmCOq75ECx9CWrWGk51vADlm%2BLEZ5oWjVMs%2FThki40B7tL7gzFrBuQksWXYeubMzZfFo4ZQ49di4wupHG5kRsyL2fJUzgpaLDP%2BSe6%2FjCnc52C7lZ3Ls0cHJVf9HRwDNXWM%2B4h8donNy5637QWK%2BV7mlH%2FL4xBZCfU9l6sIz%2FWHMtRaQprEem6a%2FRwPRDBiP65I2EwZLKGY8I%2F1uXJncwC8egLu82JY9maweI0VmJSmRcTf0evxqqe7vc9MqpsUlpSVNh4bFnxVIo5E4PGX70kVaTFe0vu1YdGKmFX5PLvkmWIf%2FnwfgPMqYsa0%2F09trboJ5LGDEQRXSBb7ldG%2FwLdOiqocYKAb91SMpn1fXVPBgkPM27QZxHnSAmWVbJR2%2FIhO%2BIVNzkgFAJlptiEPPPTxuBh%2BTT7CaIQE3oZbbJeQKvRkrt4bawTCOzciU%2F1zFGxubTJTSyInjQ8%2F1tVo7KjnxPKqGSfwZQN%2FeWL6R%2FpvCb%2BE6D4pdyczoJRUWsSNXNnA7QrdjgGNWhyOMiKvkDf3RD4mrXbul18WYVTsLyp0hvQsbdwBWOh7VlwfrWdy%2BklsttFi%2B%2BadKR7DbwjLTcxvdNpTx1WJhXROR8jwW26VEYSXPVqWnYvfyZo4DojKHMSDMbAakbuSJdkGP1d5w0AYbKlAcVQOqp9hbAvfwwLy4ErdIsOg0YEeCcnQVRAXwaCI9JvWWmM%2FzYJzE3X45A6lU9Pe7TAbft810MYh7lmV6Keb5HI6qXFiD%2B8khBZqi%2FsK6485k0a86aWLxOb4Eqnoc41x%2BYPv5CWfvP6cebsENo%3D%2BIUg0f64C4y77N4FZ6C82m5wMpvDQIHqx0ZFIHLhwMg%3D") if r: print(r) else: print("KEY NOT FOUND :(")
x = Jsf_viewstate() print(f"###{str(x.class.name)}###") r = x.check_secret("wHo0wmLu5ceItIi+I7XkEi1GAb4h12WZ894pA+Z4OH7bco2jXEy1RSCWwjtJcZNbWPcvPqL5zzfl03DoeMZfGGX7a9PSv+fUT8MAeKNouAGj1dZuO8srXt8xZIGg+wPCWWCzcX6IhWOtgWUwiXeSojCDTKXklsYt+kzlVbk5wOsXvb2lTJoO0Q==") if r: print(r) else: print("KEY NOT FOUND :(")
x = Symfony_SignedURL() print(f"###{str(x.class.name)}###") r = x.check_secret("https://localhost/_fragment?_path=_controller%3Dsystem%26command%3Did%26return_value%3Dnull&_hash=Xnsvx/yLVQaimEd1CfepgH0rEXr422JnRSn/uaCE3gs=") if r: print(r) else: print("KEY NOT FOUND :(")
x = Express_SignedCookies_ES() print(f"###{str(x.class.name)}###") r = x.check_secret("s%3A8FnPwdeM9kdGTZlWvdaVtQ0S1BCOhY5G.qys7H2oGSLLdRsEq7sqh7btOohHsaRKqyjV4LiVnBvc") if r: print(r) else: print("KEY NOT FOUND :(")
x = Express_SignedCookies_CS() print(f"###{str(x.class.name)}###") r = x.check_secret("foo=eyJ1c2VybmFtZSI6IkJib3RJc0xpZmUifQ==","zOQU7v7aTe_3zu7tnVuHi1MJ2DU") if r: print(r) else: print("KEY NOT FOUND :(")
x = Laravel_SignedCookies() print(f"###{str(x.class.name)}###") r = x.check_secret("eyJpdiI6IlhlNTZ2UjZUQWZKVHdIcG9nZFkwcGc9PSIsInZhbHVlIjoiRlUvY2grU1F1b01lSXdveXJ0T3N1WGJqeVVmZlNRQjNVOWxiSzljL1Z3RDhqYUdDbjZxMU9oSThWRzExT0YvUmthVzVKRE9kL0RvTEw1cFRhQkphOGw4S2loV1ZrMkkwTHd4am9sZkJQd2VCZ3R0VlFSeFo3ay9wTlBMb3lLSG8iLCJtYWMiOiJkMmU3M2ExNDc2NTc5YjAwMGMwMTdkYTQ1NThkMjRkNTY2YTE4OTg2MzY5MzE5NGZmOTM4YWVjOGZmMWU4NTk2IiwidGFnIjoiIn0%3D") if r: print(r) else: print("KEY NOT FOUND :(")
x = ASPNET_Vstate() print(f"###{str(x.class.name)}###") r = x.check_secret("H4sIAAAAAAAEAPvPyJ/Cz8ppZGpgaWpgZmmYAgAAmCJNEQAAAA==") if r: print(r) else: print("KEY NOT FOUND :(")
x = Rack2_SignedCookies() print(f"###{str(x.class.name)}###") r = x.check_secret("BAh7B0kiD3Nlc3Npb25faWQGOgZFVG86HVJhY2s6OlNlc3Npb246OlNlc3Npb25JZAY6D0BwdWJsaWNfaWRJIkU5YmI3ZDUyODUyNTAwMDYzMGE2NjMxYTA5MjBlMjYzMzFmOGE0MjBhNTdhYWIxNzVkZTFmM2FjMDQ3NmI1NDQzBjsARkkiCmNvdW50BjsARmkG--3a983fbc58911c5266d7748a6a55165f74d412f4") if r: print(r) else: print("KEY NOT FOUND :(")
#### Carve
check_secret के ऊपर अमूर्तता की एक अतिरिक्त परत, जो एक python httpx.response ऑब्जेक्ट या एक स्ट्रिंग स्वीकार करता है```python
import httpx
from badsecrets import modules_loaded
Telerik_HashKey = modules_loaded["telerik_hashkey"]
x = Telerik_HashKey()
# Create an HTTP client that ignores certificate errors
with httpx.Client() as client:
res = client.get("http://example.com/", verify=False)
r_list = x.carve(requests_response=res)
print(r_list)
telerik_dialogparameters_sample = """
Sys.Application.add_init(function() {
$create(Telerik.Web.UI.RadDialogOpener, {"_dialogDefinitions":{"ImageManager":{"SerializedParameters":"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","Width":"770px","Height":"588px","Title":"Image Manager"}
"""
r_list = x.carve(body=telerik_dialogparameters_sample)
print(r_list)
from badsecrets.base import check_all_modules
tests = [ "yJrdyJV6tkmHLII2uDq1Sl509UeDg9xGI4u3tb6dm9BQS4wD08KTkyXKST4PeQs00giqSA==", "eyJoZWxsbyI6IndvcmxkIn0.XDtqeQ.1qsBdjyRJLokwRzJdzXMVCSyRTA", "vpwClvnLODIx9te2vO%2F4e06KzbKkjtwmNnMx09D1Dmau0dPliYzgpqB9MnEqhPNe3fWemQyH25eLULJi8KiYHXeHvjfS1TZAL2o5Gku1gJbLuqusRXZQYTNlU2Aq4twXO0o0CgVUTfknU89iw0ceyaKjSteOhxGvaE3VEDfiKDd8%2B9j9vD3qso0mLMqn%2Btxirc%2FkIq5oBbzOCgMrJjkaPMa2SJpc5QI2amffBJ%2BsAN25VH%2BwabEJXrjRy%2B8NlYCoUQQKrI%2BEzRSdBsiMOxQTD4vz2TCjSKrK5JEeFMTyE7J39MhXFG38Bq%2FZMDO%2FETHHdsBtTTkqzJ2odVArcOzrce3Kt2%2FqgTUPW%2BCjFtkSNmh%2FzlB9BhbxB1kJt1NkNsjywvP9j7PvNoOBJsa8OwpEyrPTT3Gm%2BfhDwtjvwpvN7l7oIfbcERGExAFrAMENOOt4WGlYhF%2F8c9NcDv0Bv3YJrJoGq0rRurXSh9kcwum9nB%2FGWcjPikqTDm6p3Z48hEnQCVuJNkwJwIKEsYxJqCL95IEdX3PzR81zf36uXPlEa3YdeAgM1RD8YGlwlIXnrLhvMbRvQW0W9eoPzE%2FjP68JGUIZc1TwTQusIWjnuVubFTEUMDLfDNk12tMwM9mfnwT8lWFTMjv9pF70W5OtO7gVN%2BOmCxqAuQmScRVExNds%2FF%2FPli4oxRKfgI7FhAaC%2Fu1DopZ6vvBdUq1pBQE66fQ9SnxRTmIClCpULUhNO90ULTpUi9ga2UtBCTzI8z6Sb6qyQ52NopNZMFdrn9orzdP8oqFeyYpF%2BQEtbp%2F5AMENkFkWUxHZn8NoSlO8P6G6ubSyDdY4QJPaFS4FxNhhm85WlZC9xfEZ1AGSSBOu9JJVYiKxXnL1yYLqrlWp5mfBHZeUBwEa%2FMjGxZEVYDhXo4PiU0jxN7fYmjaobp3DSgA5H3BcFuNG5d8CUnOlQcEie5b%2BUHOpI9zAk7qcuEUXbaZ5Mvh0t2jXCRALRKYDyBdbHlWAFo10dTIM6L3aSTM5uEz9%2FalXLXoWlMo7dTDpuO5bBfTq7YkoPExL3g3JJX47UhuLq85i3%2Bzxfvd7r%2Fmid69kbD3PnX%2Bj0QxaiShhyOZg6jl1HMeRRXvZap3FPCIfxbCf7j2TRqB5gYefBIIdGYjrdiL6HS8SbjXcROMwh2Fxnt505X4jmkmDcGmneU3z%2B84TSSFewcSpxGEGvHVkkU4OaT6vyFwsxCmdrR187tQZ7gn3ZkAiTps%2FfOPcL5QWXja06Z%2FHT3zboq6Hj9v9NBHzpC1eAK0YN8r4V2UMI3P0%2FsIPQYXhovoeLjJwq6snKZTX37ulE1mbS1uOY%2BZrvFYbLN5DdNL%2B%2Bl%2F%2BcWIpc0RSYBLo19xHpKeoeLjU2sxaYzK%2B92D4zKANdPPvsHPqJD1Y%2FBwCL%2FfZKaJfRK9Bj09ez1Z1ixTEKjIRCwuxijnJGq33faZchbwpMPpTfv43jEriGwXwoqOo9Mbj9ggPAil7O81XZxNT4vv4RoxXTN93V100rt3ClXauL%2BlNID%2BseN2CEZZqnygpTDf2an%2FVsmJGJJcc0goW3l43mhx2U79zeuT94cFPGpvITEbMtjmuNsUbOBuw6nqm5rAs%2FxjIsDRqfQxGQWfS0kuwuU6RRmiME2Ps0NrBENIbZzcbgw6%2BRIwClWkvEG%2BK%2FPdcAdfmRkAPWUNadxnhjeU2jNnzI1yYNIOhziUBPxgFEcAT45E7rWvf8ghT08HZvphzytPmD%2FxuvJaDdRgb6a30TjSpa7i%2BEHkIMxM5eH1kiwhN6xkTcBsJ87epGdFRWKhTGKYwCbaYid1nRs7%2BvQEU7MRYghok8KMTueELipohm3otuKo8V4a7w4TgTSBvPE%2BLPLJRwhM8KcjGlcpzF1NowRo6zeJJhbdPpouUH2NJzDcp7P4uUuUB9Cxt9B986My6zDnz1eyBvRMzj7TABfmfPFPoY3RfzBUzDm%2FA9lOGsM6d9WZj2CH0WxqiLDGmP1Ts9DWX%2FsYyqEGK5R1Xpnp7kRIarPtYliecp50ZIH6nqSkoCBllMCCE6JN%2BdoXobTpulALdmQV0%2Bppv%2FAjzIJrTHgX7jwRGEAeRgAxTomtemmIaH5NtV7xt8XS%2BqwghdJl1D06%2FWhpMtJ1%2FoQGoJ0%2F7ChYyefyAfsiQNWsO66UNVyl71RVPwATnbRO5K5mtxn0M2wuXXpAARNh6pQTcVX%2FTJ4jmosyKwhI6I870NEOsSaWlKVyOdb97C3Bt0pvzq8BagV5FMsNtJKmqIIM0HRkMkalIyfow9iS%2B5xGN5eKM8NE4E6hO4CvmpG%2BH2xFHTSNzloV0FjLdDmj5UfMjhUuEb3rkKK1bGAVaaherp6Ai6N4YJQzh%2FDdpo6al95EZN2OYolzxitgDgsWVGhMvddyQTwnRqRY04hdVJTwdhi4TiCPbLJ1Wcty2ozy6VDs4w77EOAQ5JnxUmDVPA3vXmADJZR0hIJEsuxXfYg%2BRIdV4fzGunV4%2B9jpiyM9G11iiesURK82o%2BdcG7FaCkkun2K2bvD6qGcL61uhoxNeLVpAxjrRjaEBrXsexZ9rExpMlFD8e3NM%2B0K0LQJvdEvpWYS5UTG9cAbNAzBs%3DpDsPXFGf2lEMcyGaK1ouARHUfqU0fzkeVwjXU9ORI%2Fs%3D", "qAAAAAQDAgEBAAAAvAIAAAAAAAAsAAAABABTaGRyAk4AdQg4AC4AMQAwABRhZGwcBykRPNQv++kTK0KePPqVVGgAAAAFAFNkYXRhXHicHYc7DkBQAATnIUqVa3jxLRzApxJBrxA18bmdw1l2k9nZG/Bcxxjt4/An3NnYOVlZOMRL7ld0NAQ9IzUTMy0DeUpMqkYkso+ZGFNiKbRW//Pyb0Guzwtozw4Q", ".eJxVjLsOAiEURP-F2hAuL8HSfr-BAPciq4ZNlt3K-O9KsoU2U8w5My8W4r7VsHdaw4zswoCdfrsU84PaAHiP7bbwvLRtnRMfCj9o59OC9Lwe7t9Bjb2OtbMkAEGQtQjekykmJy9JZIW-6CgUaCGsA6eSyV65s1Qya_xGKZrY-wPVYjdw:1ojOrE:bfOktjgLlUykwCIRIpvaTZRQMM3-UypscEN57ECtXis", "eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo", "dUEvRldLekFNcklGZ3ZSbU1XaHJ0ZGxsLzhYTHlNTW43T3BVN05kZXE3WUhQOVVKbVA3Rm5WaSs5eG5QQ1VIRVBzeDFNTnNpZ0xCM1FKbzFZTEJISzhaNzFmVGYzME0waDFURVpCYm5TQlJFRmRFclYzNUZhR3VuN29PMmlkVHBrRi8wb3AwZWgvWmxObkFOYnpkeHR1YWpWZ3lnN0Y4ZW9xSk9LNVlQd0U4MmFsbWtLZUI5VzkzRkM4YXBFWXBWLS15L00xME1nVFp2ZTlmUWcxZVlpelpnPT0=--7efe7919a5210cfd1ac4c6228e3ff82c0600d841", "https://localhost/_fragment?_path=_controller%3Dsystem%26command%3Did%26return_value%3Dnull&_hash=Xnsvx/yLVQaimEd1CfepgH0rEXr422JnRSn/uaCE3gs=", "s%3A8FnPwdeM9kdGTZlWvdaVtQ0S1BCOhY5G.qys7H2oGSLLdRsEq7sqh7btOohHsaRKqyjV4LiVnBvc" ]
for test in tests: r = check_all_modules(test) if r: print(r) else: print("Key not found!")
### सभी मॉड्यूल एक साथ निकालें (Carve करें)```python
import httpx
from badsecrets.base import carve_all_modules
### using python httpx response object
# Create an HTTP client that ignores certificate errors
with httpx.Client(verify=False) as client:
res = client.get("http://example.com/")
r_list = carve_all_modules(requests_response=res)
print(r_list)
### Using string
carve_source_text = """
<html>
<head>
<title>Test</title>
</head>
<body>
<p>Some text</p>
<div class="JWT_IN_PAGE">
<p>eyJhbGciOiJIUzI1NiJ9.eyJJc3N1ZXIiOiJJc3N1ZXIiLCJVc2VybmFtZSI6IkJhZFNlY3JldHMiLCJleHAiOjE1OTMxMzM0ODMsImlhdCI6MTQ2NjkwMzA4M30.ovqRikAo_0kKJ0GVrAwQlezymxrLGjcEiW_s3UJMMCo</p>
</div>
</body>
</html>
"""
r_list = carve_all_modules(body=carve_source_text)
print(r_list)
नए मॉड्यूल के साथ पुल रिक्वेस्ट मिलने से हमें ज्यादा खुशी किसी और चीज़ से नहीं होगी! लेकिन योगदान करने का सबसे आसान तरीका हमारी वर्ड लिस्ट को भरने में मदद करना होगा! यदि आपको सार्वजनिक रूप से उपलब्ध कुंजियाँ मिलती हैं, तो कृपया उन्हें जोड़ने के लिए पुल रिक्वेस्ट सबमिट करके Badsecrets को और अधिक उपयोगी बनाने में हमारी मदद करें।
मॉड्यूल के लिए अनुरोध भी हमेशा बहुत स्वागत योग्य हैं!