🐍 JSON Web Tokens के परीक्षण, समायोजन और क्रैकिंग के लिए एक टूलकिट
jwt_tool.py JWT (JSON Web Tokens) को मान्य करने, जाली बनाने, स्कैन करने और छेड़छाड़ करने के लिए एक टूलकिट है।

इसकी कार्यक्षमता में शामिल हैं:
यह टूल pentesters के लिए लिखा गया है, जिन्हें उपयोग में आने वाले टोकन की मजबूती और ज्ञात हमलों के प्रति उनकी संवेदनशीलता की जाँच करने की आवश्यकता होती है। कुछ JWT लाइब्रेरियों में मौजूद संभावित कमजोरियों की गहराई से जाँच करने में मदद के लिए छेड़छाड़, साइनिंग और सत्यापन के कई विकल्प उपलब्ध हैं।
यह CTF चैलेंजर्स के लिए भी सफल रहा है - क्योंकि CTFs फिलहाल JWTs में रुचि रखते हैं।
यह डेवलपर्स के लिए भी उपयोगी हो सकता है जो परियोजनाओं में JWTs का उपयोग कर रहे हैं, लेकिन जाली टोकन का उपयोग करते समय स्थिरता और ज्ञात भेद्यताओं के लिए परीक्षण करना चाहते हैं।
यह टूल मूल रूप से Python 3 (संस्करण 3.6+) में सामान्य लाइब्रेरियों का उपयोग करके लिखा गया है, हालाँकि विभिन्न क्रिप्टोग्राफ़िक फ़ंक्शन (और सामान्य सुंदरता/पठनीयता) के लिए कुछ सामान्य Python लाइब्रेरियों की स्थापना की आवश्यकता होती है।
(इस टूल का एक पुराना Python 2.x संस्करण उन लोगों के लिए legacy branch पर उपलब्ध है जिन्हें इसकी आवश्यकता है, हालाँकि इसे अब समर्थित या अद्यतन नहीं किया जाएगा)
jwt_tool के लिए पसंदीदा उपयोग official Dockerhub-hosted jwt_tool docker image के साथ है।
इसे चलाने के लिए आधार कमांड इस प्रकार है:
jwt_tool चलाने के लिए आधार कमांड:
docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool
उपरोक्त कमांड का उपयोग करके आप सामान्य रूप से किसी भी अन्य तर्क को जोड़ सकते हैं।
ध्यान दें कि आपकी वर्तमान कार्यशील निर्देशिका में स्थानीय फ़ाइलें डॉकर कंटेनर की /tmp निर्देशिका में मैप की जाएंगी, इसलिए आप उन्हें अपने तर्कों में उस निरपेक्ष पथ का उपयोग करके उपयोग कर सकते हैं।
यानी
/tmp/localfile.txt
स्थापना केवल jwt_tool.py फ़ाइल डाउनलोड करने (या git clone रेपो) जैसी है।
(यदि आप इसे अपने $PATH में जोड़ना चाहते हैं और कहीं से भी कॉल करना चाहते हैं तो फ़ाइल को chmod भी करें।)
$ git clone https://github.com/ticarpi/jwt_tool
$ python3 -m pip install -r requirements.txt
पहली बार चलाने पर टूल एक कॉन्फ़िग फ़ाइल, कुछ उपयोगिता फ़ाइलें, लॉगफ़ाइल, और विभिन्न प्रारूपों में Public और Private keys का एक सेट उत्पन्न करेगा।
jwtconf.ini में "jwkloc" मान के रूप में संग्रहीत किया जाना चाहिए।Windows cmd/Powershell में टूटे हुए रंगों को ठीक करने के लिए: jwt_tool.py में नीचे दी गई दो पंक्तियों को अनकम्मेंट करें (प्रत्येक पंक्ति की शुरुआत से "# " हटाएँ)
आपको colorama भी स्थापित करना होगा: python3 -m pip install colorama
# import colorama
# colorama.init()
पहला तर्क स्वयं JWT होना चाहिए (जब तक कि इसे हेडर या कुकी मान में प्रदान न किया गया हो)। कोई अतिरिक्त तर्क प्रदान न करने पर समीक्षा के लिए डिकोड किए गए टोकन मान दिखाई देंगे।
$ python3 jwt_tool.py <JWT>
या Docker आधार कमांड:
$ docker run -it --network "host" --rm -v "${PWD}:/tmp" -v "${HOME}/.jwt_tool:/root/.jwt_tool" ticarpi/jwt_tool
टूलकिट टोकन को मान्य करेगा और हेडर और payload मानों को सूचीबद्ध करेगा।
कई अतिरिक्त तर्क आपको सीधे उपयुक्त फ़ंक्शन पर ले जाएंगे और आपको आपके परीक्षणों में उपयोग के लिए तैयार टोकन लौटाएंगे।
उदाहरण के लिए, मौजूदा टोकन के साथ छेड़छाड़ करने के लिए निम्नलिखित चलाएँ:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -T
कई विकल्पों को विकल्प सेट करने के लिए अतिरिक्त मानों की आवश्यकता होती है।
उदाहरण के लिए, एक विशेष प्रकार का एक्सप्लॉइट चलाने के लिए आपको eXploit (-X) विकल्प चुनना होगा और भेद्यता का चयन करना होगा (यहाँ alg:none एक्सप्लॉइट के लिए "a" का उपयोग करते हुए):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -X a
टोकन सत्यापित करने जैसे कुछ विकल्पों के लिए अतिरिक्त पैरामीटर/फ़ाइलें प्रदान करने की आवश्यकता होती है (यहाँ PEM प्रारूप में Public Key प्रदान करते हुए):
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw -V -pk public.pem
सभी मोड अब टोकन को सीधे किसी एप्लिकेशन पर भेजने की अनुमति देते हैं।
आपको निर्दिष्ट करने की आवश्यकता है:
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -rh "Origin: null" -cv "Welcome" -M erअनुरोध से विभिन्न प्रतिक्रियाएँ प्रदर्शित होती हैं:
यहाँ JWT कार्यान्वयन के बुनियादी मूल्यांकन का एक त्वरित रन-थ्रू है। यदि इन विकल्पों से कोई सफलता नहीं मिलती है तो नई भेद्यताओं (या zero-days!) की खोज के लिए अन्य मोड और विकल्पों में गहराई से जाएँ।
एप्लिकेशन में अपेक्षित claims/मानों का अंदाजा लगाने के लिए टोकन मान पढ़ें:
$ python3 jwt_tool.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.aqNCvShlNT9jBFTPBpHDbt2gBB1MyHiisSDdp8SQvgw
सामान्य गलत कॉन्फ़िगरेशन की खोज के लिए प्रदान किए गए टोकन को सीधे एप्लिकेशन के विरुद्ध एक Playbook Scan चलाएँ:
$ python3 jwt_tool.py -t https://www.ticarpi.com/ -rc "jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpbiI6InRpY2FycGkifQ.bsSwqj2c2uI9n7-ajmi3ixVGhPUiY7jO9SUn9dm15Po;anothercookie=test" -M pb