[JWT Hacking Challenge] 2. 취약점 분석 실습
작성자 정보
- za9uar 작성
- 작성일
본문
※ 목차
1. [JWT Hacking Challenge] 1. 환경 구축 실습
2. [JWT Hacking Challenge] 2. 취약점 분석 실습
0. 사전 준비 ⛵️
Postman 준비
환경 구축 실습 편에서 준비한 JWT-attacks.postman_collection.json 파일을 Import 한다.
1. None 알고리즘 사용 취약점
The alg=none signature-bypass vulnerability (CVE-2015-2951)
1.1. 취약점 테스트 ⚔️
Postman 항목에 none-obtain-token을 선택하고 Send를 날려준다.
JWT가 반환되는데 None 알고리즘은 Singature를 검증하지 않기 때문에 변조가 가능하다.
JWT는 Base64로 Encoding 되어 있는 [HEADER], [PAYLOAD]를 변조하여 테스트할 것이다.
HEADER:
{
"alg": "HS256", ----- None으로 변경
"typ": "JWT"
}
PAYLOAD:
{
"account": "Bob",
"role": "User", ----- Admin으로 변경
"iat": 1710832512,
"aud": "https://127.0.0.1/jwt/none"
}
Postman의 none-send-token을 열고 변조한 값 + Signature(빈칸)을 전달한다.
role이 Admin으로 변조된 채로 JWT가 정상 처리된 것을 볼 수 있다.
1.2. 대응 방안 ⛏️
JWT의 None 알고리즘을 사용하지 않는다. (코드 단 제거)
1.3 조치 결과 ⭐️
invalid algorithm 에러 출력
2. None 알고리즘 사용 취약점
2.1. 취약점 테스트 ⚔️
Postman 항목에 none-obtain-token을 선택하고 Send를 날려준다.
2.2. 대응 방안 ⛏️
2.3 조치 결과 ⭐️
Ref:
https://velog.io/@thelm3716/jwt-test-env
https://velog.io/@thelm3716/JWTvul
관련자료
-
다음