ctfshow-jwt 345-250

网络安全-web入门  ·  2024-01-09

签名算法可被修改为none,JWT支持将算法设定为"None"。如果"alg"字段设为"None",那么签名会被置空,这样任何token都是有效的。

  1. 打开burpsuite,抓包,可以看到是jwt

  2. 发送到repeater

  3. 通过jwt.io网站,可以发现alg,也就是加密算法是None

  4. 第一部分:对 JSON 的头部做 base64 编码处理得到第二部分:对 JSON 类型的 payload 做 base64 编码处理得到第三部分:分别对头部和载荷做base64编码,并使用.拼接起来使用头部声明的加密方式,对base64编码前两部分合并的结果加盐加密处理,作为JWT

  5. 通过以上内容可知,我们可以先把jwt用base64解密,把user改成admin

  6. 在进行base64加密,看是否会显示admin的内容

  7. 放进repeater中,并把路径改成 /admin/发送,得到flag

346.web346

未校验签名(攻击签名不使用签名认证)

某些服务端并未校验JWT签名,可以尝试修改payload后然后直接请求token或者直接删除signature再次请求查看其是否还有效。

  1. 打开题目,抓包,发送到repeater里

  2. 插件识别到jwt,发现有加密,利用工具解密

  3. 利用jwt-tools解密

  4. 把以下图片中分别改成None和admin

  5. 利用命令开始修改

  6. HS256修改成None

  7. sub=user修改成sub=admin

  8. 得到新的jwt,放入burpsuite中

  9. 发现没有flag,需要把签名置空

签名算法可被修改为none,JWT支持将算法设定为"None"。如果"alg"字段设为"None",那么签名会被置空,这样任何token都是有效的。



  1. 置空后,发现flag

347.web347

暴力破解密钥(攻击签名知道密钥实现重组)

针对是对称加密算法(非对称没有用)

非对称要使用方法:获取源码或者公钥私钥文件

某些签名算法,例如HS256(HMAC+SHA-256),会像密码一样使用一个任意的、独立的字符串作为秘密密钥。这个秘钥如被轻易猜到或暴力破解,则攻击者能以任意的头部和载荷值来创建JWT,然后用密钥重新给令牌签名。

  1. 打开题目抓包,发送到repeater

  2. 利用工具ctf_tools工具,爆破密钥

  3. 密钥为123456,验证密钥,密钥正确

  4. 使用jwt.io网站解析jwt,把密钥放进去,把sub改成admin

  5. 放入包中,得到flag

348.web348

  1. 步骤和上一题一致,密钥爆破,爆破为aaab

  2. 按照上题步骤得到flag

349.web349

📎app.js

  1. 通过泄露的源码可以知道,jwt是用私钥加密,公钥解密,那我们通过路径下载私钥,利用私钥进行payload进行加密,然后发包得到flag

  1. 下载private.key

  2. 下载PyJWT,jwt

  3. 使用脚本,生成jwt

import jwt
public = open('private.key', 'r').read()
payload={"user":"admin"}
print(jwt.encode(payload, key=public, algorithm='RS256'))

  1. 因为泄露的js代码中是用post发送,所以发送数据包时要改成post发送

  2. 发送,发现flag

350.web350

  1. 通过源码可以看到,只规定了加密时private.key为RS256加密,而解密时的public.key没有规定,则为任意加密,那我们用HS256,原因是HS256为对称加密,加解密公用一个密钥。

  2. 写一个python脚本,利用public.key进行HS256加密

var jwt =require('jsonwebtoken');

var fs =require('fs');
var privateKey = fs.readFileSync('./public.key');
var token = jwt.sign({ user:'admin'}, privateKey,{ algorithm:'HS256'});
console.log(token)

  1. 抓包,发送到repeater中,改成POST方法,jwt换成加密后的,发送,发现flag

<br/>

 
评论
sageee博客. All Rights Reserved. Theme Jasmine by Kent Liao.