
JSON Web Token(JWT)의 취약점을 크래킹하고 테스트하기 위한 CLI
이 CLI는 침투 테스터, CTF 플레이어 또는 개발자를 위한 것입니다.
JWT를 수정하고, 서명하고, 주입하는 등의 작업을 수행할 수 있습니다.
자세한 내용은 문서를 확인하세요.
문제가 있거나 개선 사항이 있으면 이슈를 보내주세요. 가능한 한 빨리 응답하겠습니다.
즐기세요 :)
문서는 http://myjwt.readthedocs.io 에서 확인할 수 있습니다.
myjwt를 설치하려면 pip를 사용하세요:
pip install myjwt
Docker 이미지에서 myjwt를 실행하려면:
docker run -it docker.pkg.github.com/mbouamama/myjwt/myjwt:latest myjwt
# 워드리스트를 마운트하려면
docker run -v $(pwd)/wordlist:/home/wordlist/ -it docker.pkg.github.com/mbouamama/myjwt/myjwt:latest myjwt
# Windows의 경우
docker run -v %CD%/wordlist:/home/wordlist/ -it docker.pkg.github.com/mbouamama/myjwt/myjwt:latest myjwt
git에서 myjwt를 설치하려면:
git clone https://github.com/mBouamama/MyJWT.git
cd ./MyJWT
pip install -r requirements.txt
python MyJWT/myjwt_cli.py --help
BlackArch에서 myjwt를 설치하려면:
pacman -S myjwt
$ myjwt --help
Usage: myjwt [OPTIONS] JWT
This cli is for pentesters, CTF players, or dev.
You can modify your jwt, sign, inject ,etc...
Full documentation is at http://myjwt.readthedocs.io.
If you see problems or enhancement send an issue.I will respond as soon as possible.
Enjoy :)
All new jwt will be copy to the clipboard.
Options:
--version Show the version and exit.
--full-payload TEXT New payload for your jwt.Json format Required.
-h, --add-header TEXT Add a new key, value to your jwt header, if key
is present old value will be replaced.Format:
key=value.
-p, --add-payload TEXT Add a new key, value to your jwt payload, if
key is present old value will be
replaced.Format: key=value.
--sign TEXT Sign Your jwt with key given.
--verify TEXT verify your key.
-none, --none-vulnerability Check None Alg vulnerability.
--hmac PATH Check RS/HMAC Alg vulnerability.
--bruteforce PATH Bruteforce to guess the secret used to sign the
token.
-r, --crack TEXT regex to iterate all string possibilities to
guess the secret used to sign the token.
--kid TEXT Kid Injection sql
--jku TEXT Jku Header to bypass authentication
--x5u TEXT X5u Header to bypass authentication
--crt TEXT For x5cHeader, force crt file
--key TEXT For jku or x5c Header, force private key to
your key file
--file TEXT For jku Header and x5u Header, force file name
--print Print Decoded JWT
-u, --url TEXT Url to send your jwt.
-m, --method TEXT Method use for send request to url.(Default
GET).
-d, --data TEXT Data send to your url.Format: key=value. if
value = MY_JWT value will be replace by new
jwt.
-c, --cookies TEXT Cookies to send to your url.Format: key=value.
if value = MY_JWT value will be replace by new
jwt.
--help Show this message and exit.
| 옵션 | 유형 | 예제 | 설명 |
|---|---|---|---|
| --ful-payload | JSON | {"user": "admin"} | JWT의 새 페이로드. |
| -h, --add-header | key=value | user=admin | JWT 헤더에 새 키-값을 추가합니다. 키가 이미 있으면 이전 값이 대체됩니다. |
| -p, --add-payload | key=value | user=admin | JWT 페이로드에 새 키-값을 추가합니다. 키가 이미 있으면 이전 값이 대체됩니다. |
| 옵션 | 유형 | 예제 | 설명 |
|---|---|---|---|
| --sign | text | mysecretkey | 키로 JWT 서명 |
| --verify | text | mysecretkey | 키 확인. |
| 옵션 | 유형 | 예제 | 설명 |
|---|---|---|---|
| -none, --none-vulnerability | 없음 | None 알고리즘 취약점 확인. | |
| --hmac | PATH | ./public.pem | RS/HMAC 알고리즘 취약점 확인 및 공개 키로 JWT 서명. |
| --bruteforce | PATH | ./wordlist/big.txt | 토큰 서명에 사용된 비밀을 무차별 대입으로 추측합니다. 모든 비밀번호가 한 줄에 하나씩 저장된 txt 파일을 사용합니다. |
| --crack | REGEX | "[a-z]{4}" | 정규식을 사용하여 토큰 서명에 사용된 비밀을 추측하기 위해 모든 문자열 가능성을 반복합니다. |
| --kid | text | "00; echo /etc/.passwd" | Kid SQL 주입 |
| --jku | text | MYPUBLICIP | Jku 헤더로 인증 우회, jwks 파일 이름을 변경하려면 --file을, 자신의 개인 pem을 사용하려면 --key를 사용하세요. |
| --x5u | text | MYPUBLICIP | jku 또는 x5c 헤더의 경우, jwks 파일 이름을 변경하려면 --file을, 자신의 개인 pem을 사용하려면 --key를 사용하세요. |
| 옵션 | 유형 | 예제 | 설명 |
|---|---|---|---|
| -u, --url | url | http://challenge01.root-me.org/web-serveur/ch59/admin | JWT를 보낼 URL. |
| -m, --method | text | POST | 요청에 사용할 HTTP 메서드 (기본값: GET). |
| -d, --data | key=value | secret=MY_JWT | URL로 보낼 데이터. 형식: key=value. 값이 MY_JWT이면 새 JWT로 대체됩니다. |
| -c, --cookies | key=value | secret=MY_JWT | URL로 보낼 쿠키. 형식: key=value. 값이 MY_JWT이면 새 JWT로 대체됩니다. |