jwt自动化测试,放入请求的URL、jwt和请求参数,自动化测试jwt,先原始访问,再未授权访问,再jwt的alg改为none测试,最后再jwt爆破测试。
之前由于技术受限,没能力只能写到上面的流程,下面的新版流程才是我心目中的最终版本。
源码里的是老版本,新版本去releases下载,https://github.com/qingchenhh/jwt_sec/releases/tag/1.0
测试流程如下:
1)发送原始请求。
2)发送未授权测试请求。
3)修改alg为none(CVE-2015-2951),发送测试。
->和原始请求进行判断如果成功,则对jwt中的参数进行SQL注入、命令注入等测试。
4)未验证签名导致的越权测试。
->和原始请求进行判断如果成功,则对jwt中的参数进行SQL注入、命令注入等测试。
5)修改非对称密码算法为对称密码算法(CVE-2016-10555)
6)JWKS公钥注入--伪造密钥(CVE-2018-0114)
7)空签名(CVE-2020-28042)
->和原始请求进行判断如果成功,则对jwt中的参数进行SQL注入、命令注入等测试。
8)如果jwt中的header有kid值,尝试对kid进行文件读取、SQL注入、命令注入等测试。
如:
{ "typ": "JWT", "kid": "/etc/passwd", "alg": "HS256"}
{ "typ": "JWT", "kid":"';select 'Mw==' from jwt_keys --"}
{ "typ": "JWT", "kid": "/path/to/key_file|whoami", "alg": "HS256"}
9)爆破密钥,字典默认使用jwt.secrets.list,可选择。
->和原始请求进行判断如果成功,则对jwt中的参数进行SQL注入、命令注入等测试。