Oh! JUN
[WebGoat] JWT - 2 (HashCat 활용하여 비밀 키 알아내기) 본문
[WebGoat] JWT - 2 (HashCat 활용하여 비밀 키 알아내기)
Kwon Oh! JUN 2023. 12. 2. 18:06해당 문제는 [Payload]의 'username' 을 'WebGoat'로 변경시켜서 JWT를 제출해야합니다.
사전에[Header]에서 알고리즘이 'none'이 아니면
JWT는 [Header/Payload]값을 base64 인코딩 시키고
'비밀키'를 사용하여 암호화된 값을 [Signature]라고 했습니다.
[Payload]의 'username'을 변경시키면 '비밀키'와 [Header/Payload]의 암호화 과정에서
다른 [Signature]값이 나와 무결성을 해치기 때문에 정상적으로 제출할 수 없습니다.
따라서
공격자가 '비밀키'를 알고 있다면 'username'을 변경시켜도 무결성을 해치지 않습니다.
HashCat 설치하기
https://hashcat.net/hashcat/ hashcat - advanced password recovery Download Name Version Date Download Signature hashcat binaries v6.2.6 2022.09.02 Download PGP hashcat sources v6.2.6 2022.09.02 Download PGP Signing key on PGP keyservers: RSA, 2048-bit. Key
securitystudy.tistory.com
'비밀키'를 알아내기 위해서 '사전 대입 공격'을 실행할건데
그 전에 'HashCat'을 사용해서 공격을 실행할 것 입니다.
JWT.IO
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
jwt.io
문제에서 제시한 JWT 토큰을 가져와서 위의 링크에 붙여넣어보면
[Header/Payload]가 구분되고 '비밀키'를 입력하여 [signature]을 확인할 수 있습니다.
다음으로 'hashcat'을 실행하기 위해 C:\hashcat 위치에
'jwt.txt' 토큰값과 'google-10000-english.txt' 사전 대입 공격에 사용할 파일을 생성해줍니다.
https://github.com/first20hours/google-10000-english/blob/master/google-10000-english.txt
hashcat -a 3 -m 16500 jwt.txt google-10000-english.txt
*16500 : JMT 해시 모드
jwt.txt의 JWT 토큰에 JMT 해시 모드로 googole-10000-english.txt 사전 대입 공격을 실행시킵니다.
'비밀키'는 'business' 인것을 확인했습니다!!
'비밀키'에 business 입력해주면 [Signature]가 변경됩니다.
변경된 [Header/Payload/Signature] 을 입력해주면 성공하게 됩니다.
[WebGoat] JWT tokens - 1
1. 소개 JWT는 "JSON Web Token"의 약자입니다. JWT는 웹 애플리케이션에서 사용자 인증과 데이터 교환을 안전하게 처리하기 위한 토큰 기반의 인증 방식입니다. 2. JWT 구조 JWT의 구조는 [Header/Payload/Signa
securitystudy.tistory.com
두 번째 방법은 이전에 했던 공격과 동일합니다.
알고리즘을 'none'에 대한 취약점 조치가 되어있지 않아서
이전 문제와 동일하게 설정해서 해결할 수 있었습니다.
'웹 해킹 > Broken Authentication' 카테고리의 다른 글
[WebGoat] JWT - 3 (Refresh Token) (0) | 2023.12.03 |
---|---|
[Tool] HashCat 설치하기 (1) | 2023.12.02 |
[Tool] JSON Web Token Attack 플러그인 설치하기 (0) | 2023.12.02 |
[WebGoat] JWT tokens - 1 (0) | 2023.12.02 |
[WebGoat] Authentication Bypasses (0) | 2023.12.01 |