
JSON 웹 토큰 해킹 툴킷
JSON Web Token 해킹 툴킷
JSON Web Token을 테스트, 분석 및 공격하기 위한 고성능 툴킷입니다.
cargo install jwt-hack
brew install jwt-hack
sudo snap install jwt-hack
git clone https://github.com/hahwul/jwt-hack
cd jwt-hack
cargo install --path .
docker pull ghcr.io/hahwul/jwt-hack:latest
docker pull hahwul/jwt-hack:v2.6.0
일반 JWT와 DEFLATE 압축 JWT를 모두 디코딩할 수 있습니다. 이 도구는 압축된 토큰을 자동으로 감지하고 압축을 해제합니다.
jwt-hack decode eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.CHANGED
jwt-hack decode COMPRESSED_JWT_TOKEN
JWE(JSON Web Encryption) 토큰을 디코딩하여 구조를 분석합니다. 이 도구는 JWE 형식(5개 부분)을 자동으로 감지하고 암호화 세부 정보를 표시합니다.
# JWE 토큰 구조 디코딩
jwt-hack decode eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..ZHVtbXlfaXZfMTIzNDU2.eyJ0ZXN0IjoiandlIn0.ZHVtbXlfdGFn
# JWE 헤더, 암호화된 키, IV, 암호문 및 인증 태그를 표시합니다
jwt-hack encode '{"sub":"1234"}' --secret=your-secret
--compress 옵션을 사용하여 JWT 페이로드에 DEFLATE 압축을 적용할 수 있습니다.
jwt-hack encode '{"sub":"1234"}' --secret=your-secret --compress
# 개인 키 사용
ssh-keygen -t rsa -b 4096 -E SHA256 -m PEM -P "" -f RS256.key
jwt-hack encode '{"a":"z"}' --private-key RS256.key --algorithm=RS256
암호화된 JWT 시나리오 테스트를 위한 JWE(JSON Web Encryption) 토큰을 생성합니다.
# 기본 JWE 인코딩
jwt-hack encode '{"sub":"1234", "data":"encrypted"}' --jwe --secret=your-secret
# JWE 토큰은 암호화되며 올바른 키로만 복호화할 수 있습니다
jwt-hack encode '{"sensitive":"data"}' --jwe
제공된 비밀 또는 키를 사용하여 JWT의 서명이 유효한지 확인합니다.
# 비밀 사용 (HS256, HS384, HS512와 같은 HMAC 알고리즘)
jwt-hack verify YOUR_JWT_TOKEN_HERE --secret=your-256-bit-secret
# 개인 키 사용 (RS256, ES256, EdDSA와 같은 비대칭 알고리즘)
jwt-hack verify YOUR_JWT_TOKEN_HERE --private-key path/to/your/RS256_private.key
사전 공격과 무차별 대입 공격은 DEFLATE로 압축된 JWT도 지원합니다.
# 사전 공격
jwt-hack crack -w wordlist.txt JWT_TOKEN
jwt-hack crack -w wordlist.txt COMPRESSED_JWT_TOKEN
# 무차별 대입 공격
jwt-hack crack -m brute JWT_TOKEN --max=4
jwt-hack crack -m brute COMPRESSED_JWT_TOKEN --max=4
jwt-hack payload JWT_TOKEN --jwk-attack evil.com --jwk-trust trusted.com
JWT 토큰에서 일반적인 보안 문제와 취약점을 자동으로 스캔합니다.
# 약한 비밀 감지 및 페이로드 생성을 포함한 전체 스캔
jwt-hack scan JWT_TOKEN
# 더 빠른 결과를 위해 비밀 크래킹 건너뛰기
jwt-hack scan JWT_TOKEN --skip-crack
# 페이로드 생성 건너뛰기
jwt-hack scan JWT_TOKEN --skip-payloads
# 약한 비밀 감지를 위한 사용자 정의 단어 목록 사용
jwt-hack scan JWT_TOKEN -w custom_wordlist.txt
# 비밀 테스트 시도 횟수 제한
jwt-hack scan JWT_TOKEN --max-crack-attempts 50
스캔 명령은 다음을 확인합니다:
자동화 및 통합을 위한 로컬 REST API를 시작합니다. 인증이 필요한 경우 --api-key를 사용하고 요청에 X-API-KEY를 포함하세요.
# API 키 보호와 함께 localhost:3000에서 시작
jwt-hack server --api-key your-api-key
# 예시 요청 (--api-key 설정 시 X-API-KEY를 포함해야 함)
curl -s http://127.0.0.1:3000/health -H 'X-API-KEY: your-api-key'
jwt-hack은 MCP 서버로 실행되어 AI 모델이 표준화된 프로토콜을 통해 JWT 기능과 상호작용할 수 있게 합니다.
# MCP 서버 시작 (stdio를 통해 통신)
jwt-hack mcp
MCP 서버는 다음 도구를 제공합니다:
MCP 서버는 AI 모델과 MCP 클라이언트가 사용하도록 설계되었습니다. 각 도구는 JSON 매개변수를 수락하고 구조화된 응답을 반환합니다.
디코드 도구:
{
"name": "decode",
"arguments": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
인코드 도구:
{
"name": "encode",
"arguments": {
"json": "{\"sub\":\"1234\",\"name\":\"test\"}",
"secret": "mysecret",
"algorithm": "HS256"
}
}
jwt-hack의 MCP 서버를 널리 사용되는 MCP 지원 클라이언트에 연결할 수 있습니다. jwt-hack 바이너리가 시스템에 있고 클라이언트가 접근할 수 있는지 확인하세요.
VSCode
{
"servers": {
"jwt-hack": {
"type": "stdio",
"command": "jwt-hack",
"args": [
"mcp"
]
}
},
"inputs": []
}
Claude Desktop
{
"mcpServers": {
"jwt-hack": {
"command": "jwt-hack",
"args": ["mcp"],
"env": {}
}
}
}
| 알고리즘 | 설명 |
|---|---|
| A128GCM | 128비트 키를 사용한 AES-GCM |
| A256GCM | 256비트 키를 사용한 AES-GCM |
| 알고리즘 | 설명 |
|---|---|
| dir | 공유 대칭 키 직접 사용 |
DEFLATE 압축 지원
jwt-hack툴킷은 JWT에 대한 DEFLATE 압축을 지원합니다.
encode와 함께--compress옵션을 사용하여 압축된 JWT를 생성합니다.decode및crack모드는 압축된 JWT를 자동으로 감지하고 처리합니다.
Urx는 오픈소스 프로젝트이며 ❤️로 만들어졌습니다. 이 프로젝트에 기여하고 싶다면 CONTRIBUTING.md를 확인하고 멋진 내용으로 Pull-Request를 보내주세요.
| 모드 | 설명 | 지원 |
|---|
| Encode | JWT/JWE 인코더 | 비밀 기반 / 키 기반 / 알고리즘 / 사용자 정의 헤더 / DEFLATE 압축 / JWE |
| Decode | JWT/JWE 디코더 | 알고리즘, 발급 시간 확인, DEFLATE 압축, JWE 구조 |
| Verify | JWT 검증기 | 비밀 기반 / 키 기반 (비대칭 알고리즘용) |
| Crack | 비밀 크래커 | 사전 공격 / 무차별 대입 / DEFLATE 압축 |
| Payload | JWT 공격 페이로드 생성기 | none / jku&x5u / alg_confusion (--public-key로 서명) / kid & claim 주입 / claim 변조 / 서명 변형 / JWE 프로브 / x5c / cty |
| Scan | 취약점 스캐너 | 일반적인 JWT 취약점에 대한 자동 보안 검사 |
| Server | API 서버 | API 서버 모드 실행 (http://localhost:3000) |
| MCP | Model Context Protocol 서버 | 표준화된 프로토콜을 통한 AI 모델 통합 |
| 도구 | 설명 | 매개변수 |
|---|
decode | JWT 토큰 디코딩 | token (string) |
encode | JSON을 JWT로 인코딩 | json (string), secret (선택), algorithm (기본값: HS256), no_signature (boolean) |
verify | JWT 서명 검증 | token (string), secret (선택), validate_exp (boolean) |
crack | JWT 토큰 크래킹 | token (string), mode (dict/brute), chars (string), max (number) |
payload | 공격 페이로드 생성 | token (string), target (string), jwk_attack (선택), jwk_protocol (기본값: https), public_key (선택 PEM/서명된 alg-confusion용 경로) |
| 알고리즘 | 설명 | 유형 |
|---|
| HS256 | SHA-256을 사용한 HMAC | 대칭 |
| HS384 | SHA-384를 사용한 HMAC | 대칭 |
| HS512 | SHA-512를 사용한 HMAC | 대칭 |
| RS256 | SHA-256을 사용한 RSASSA-PKCS1-v1_5 | 비대칭 |
| RS384 | SHA-384를 사용한 RSASSA-PKCS1-v1_5 | 비대칭 |
| RS512 | SHA-512를 사용한 RSASSA-PKCS1-v1_5 | 비대칭 |
| ES256 | P-256 및 SHA-256을 사용한 ECDSA | 비대칭 |
| ES384 | P-384 및 SHA-384를 사용한 ECDSA | 비대칭 |
| PS256 | SHA-256을 사용한 RSASSA-PSS | 비대칭 |
| PS384 | SHA-384를 사용한 RSASSA-PSS | 비대칭 |
| PS512 | SHA-512를 사용한 RSASSA-PSS | 비대칭 |
| EdDSA | Edwards-curve 디지털 서명 알고리즘 | 비대칭 |
| none | 디지털 서명 없음 | - |