
다양한 JWT 라이브러리에서의 알고리즘 혼동 공격 데모
JSON 웹 토큰(JWT) 라이브러리에서의 알고리즘 혼동 공격 데모입니다. JWT는 종종 쿠키에 사용되어 사용자 세션을 인증하므로 이 공격은 매우 중요합니다. Node 모듈 [email protected]을 사용하여 취약점을 시연했습니다.
이 프로젝트는 또한 프런트엔드가 API 호출 외에는 거의 전적으로 LLM으로 작성되었기 때문에 좋은 바이브 코딩 활동이었습니다.
JWT의 형식은 다음과 같습니다.
b64(header).b64(payload).b64(signature)
이 경우:
header = (algorithm, type)
payload = (username, role)
당시 다양한 JWT 라이브러리는 알고리즘으로 서명할 수 있었지만 알고리즘을 강제하지 않고 JWT 헤더의 내용에 의존하여 사용자가 자신의 암호화 방식을 결정할 수 있도록 했습니다. 이는 여러 가지 익스플로잇을 가능하게 하지만, 이 경우 사용된 방법은 다음과 같습니다.
로그인 페이지에서 아무 사용자로 인증하세요. 먼저 등록해야 합니다.
홈 페이지에 도착하면 유효한 관리자 세션이 있는 경우에만 클릭할 수 있는 버튼이 있습니다. 그런 다음 익스플로잇을 실행하여 이 JWT를 위조해야 합니다.
마지막으로, 원래 JWT를 위조된 JWT로 로컬 저장소에서 교체하고 새로 고침 후 버튼을 클릭할 수 있게 되며 플래그를 획득할 수 있습니다!