JWT tokens - 8. JWT cracking
[ 이론 ]
JWT cracking
SHA-2 기능이 있는 HMAC에서는 비밀키를 사용하여 토큰에 서명하고 확인한다. 이 키를 알아내면 새 토큰을 만들고 서명할 수 있다. 무차별 공격이나 사전 공격이 불가능할만큼 Key가 강력한 것은 매우 중요하다. 토큰이 있으면 Brute Force나 사전 공격을 시작할 수 있다.
[ 문제 ]
Assignment
주어진 토큰에서 비밀 키를 찾아 사용자 이름을 WebGoat로 변경한 새 키를 제출하라.
eyJhbGciOiJIUzI1NiJ9.
eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJhdWQiOiJ3ZWJnb2F0Lm9yZyIsImlhdCI6MTY0NDU3NzA0NCwiZX
hwIjoxNjQ0NTc3MTA0LCJzdWIiOiJ0b21Ad2ViZ29hdC5vcmciLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoidG9tQHdl
YmdvYXQub3JnIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl19.
nuz4hfs6Rth9EI9dwNVWwVud9n_meOZ7pRnfU_eGC5k
[ 풀이 ]
- https://pvxs.medium.com/webgoat-jwt-tokens-4-5-ff5bd88e76f
WebGoat JWT tokens 4 5
WebGoat JWT tokens 4
pvxs.medium.com
- https://jdh5202.tistory.com/885
webgoat jwt tokens 4~5
jwt tokens 4 1 투표 시스템에서 게스트 사용자는 투표할 수 없고 다른 세 사용자는 투표할 수 있다. 투표 재설정은 관리자만 가능하다. 2 투표 사용자를 TOM으로 변경한다. 3. 투표 재설정을 요청한다
jdh5202.tistory.com
이것 저것 시도했지만 결국 실패해서 찾아보았다....
secret key 사전파일 공격이 이 문제의 핵심이다.
https://github.com/first20hours/google-10000-english/blob/master/google-10000-english.txt
kali에서 해당 깃허브 페이지에 들어가 txt 파일을 view raw를 통해 다운 받는다.
HashCat을 사용한다.
마구마구 돌다가 하나 찾아서 멈춘다.
WebWolf에서 Encode 해주는데 여기서 WebGoat로 이름 바꾸고 exp는 만료일을 의미하는데 원본 토큰이 만료될 수 있기 때문에 만료일을 함께 변경한다.
[ Hashcat ]
https://hiseon.me/security/hashcat-tutorial/
Hashcat은 GPU를 기반을 빠르게 패스워드를 크랙할 수 있는 툴로 다양한 암호화 알고리즘을 지원하고 있다. 여러개의 GPU가 존재하다면 분산 처리가 가능하다.
jwt.txt -> the token itself
-m 16500 -> specifies the hash type as a JWT token (해시 유형을 JWT로 지정)
-a 3 -> specifies brute forcing (brute force로 지정)
-w 3 -> specifies a high workload, the machine running HashCat might become unresponsive
(높은 작업 부하로 지정하면 시스템 응답 없음이 될 수 있으니 조심)
google-10000-english.txt --> 단어 사전 파일이다.