CVE-2019-7644
该关卡给了JWT让我们以管理员身份登录
得到jwt令牌,尝试破解
将level改为admin尝试登录
带着新JWT登录报了异常,在异常中泄露了签名,将签名填入尝试登录,登录成功
弱密码破解
在登录界面进行登录
登录成功,拿到token
使用c-jwt-cracker 工具进行密钥的爆破
成功爆破出密钥是 nwrr,修改身份拿到新的token,替换掉原来的token。
成功拿到flag。
jwt的防御
1、使用适当的复杂对称/非对称密钥。
2、编写一个方案以防万一密钥泄露。
3、将密钥放在安全的地方
4、理想情况下,不允许发送方设置任意签名算法。
5、检查实现是否不接受无签名算法。
6、检查实现是否不接受空签名(即未选中签名)。
7、如果使用JWE,请检查是否在使用安全算法以及这些算法的安全实现。
8、区分verify()和decode()。
9、检查在一个地方生成的令牌是否不能在另一个地方使用以获取未经授权的访问。
10、检查调试模式是否已关闭,并且不能通过简单的技巧将其激活。
11、避免在URL中发送令牌。
12、检查是否在JWS有效负载中放置了机密信息。
13、确保免受重放攻击。
14、确保令牌具有足够短的有效期。
15、确保已实际检查“ exp”。考虑是否需要使特定令牌无效