[PentesterLab] JWT

쥬스몬·2022년 3월 15일
0

PentesterLab

목록 보기
10/20

PentesterLab의 Json Web Token 문제에 대한 접근 방법을 기록

이번 문제는 JWT를 사용하는 웹사이트에서 admin으로 권한 상승을 해야하는 문제이다.

프록시로 패킷을 확인해보면 Cookie 헤더의 auth값으로 JWT가 들어있다. 일반적으로 JWT의 형태는 아래와 같다.
Base64(Header).Base64(Data).Base64(Signature)

JWT 값을 base64 디코딩하면 아래와 같이 표현된다.

Data 부분의 login값만 admin으로 변경하여 base64로 다시 인코딩해주고 auth값에 전달하였더니 불가능하다😂

JWT 헤더에는 사용되는 보안 메커니즘에 대한 정보가 포함돼있다.
{"alg":"HS256","typ":"JWS"}

헤더에 서명한다고해서 공격자가 헤더를 변조하고 서명에 사용되는 알고리즘을 변경하는 것을 막을 수 없으며, JWT는 무결성을 위해 여러가지 서명 알고리즘을 사용할 수 있다.(RSA, 타원곡선암호, HMAC, None)

None 알고리즘을 사용할 경우 Signature를 확인하지 않는 점을 이용하여 아래와같은 JWT를 생성하여 auth 값으로 전달한다.
{"alg":"HS256","typ":"JWS"}.{"login":"admin","iat":"1647316591"}.

profile
블로그 이사 (https://juicemon-code.github.io/)

0개의 댓글

관련 채용 정보