一次完整的Jwt伪造漏洞实战案例

admin 2024年12月20日10:39:32评论47 views字数 2150阅读7分10秒阅读模式

一次完整的Jwt伪造漏洞实战案例

本文章由团队师傅[Tai]授权发布

某次漏洞挖掘遇到了任意用户登录漏洞,这次的漏洞案例是由于jwt存在弱密钥,攻击者可以伪造jwt,从而获取非授权访问权限。此外站点还存在弱口令,可以通过弱口令登录druid后台,查看敏感信息。

首先通过微信搜索小程序,找到目标。

一次完整的Jwt伪造漏洞实战案例

点击进入小程序,点击我的-微信登录

观察数据包,可以看到服务器生成了一个jwt值

一次完整的Jwt伪造漏洞实战案例

这边就直接尝试爆破该Jwt值

一次完整的Jwt伪造漏洞实战案例

爆破发现其使用了JJWT,且原始密钥为abcdefghijklmnopqrstuvwxyz
解密该jwt,发现其中有个user_id字段
一次完整的Jwt伪造漏洞实战案例
python脚本遍历user_id的值,范围为1-4103
根据不同的user_id,用密钥再生成不同的获取jwt值
然后在/system/api/getUserInfo接口上获取jwt用户信息。
key ="abcdefghijklmnopqrstuvwxyz"secret = base64.b64decode(key[:len(key) - (len(key) % 4)])  # Base64 解码密钥
此处使用的Python生成脚本如下:
一次完整的Jwt伪造漏洞实战案例
注意,服务器是通过判断user_key来判断jwt是否在有效期,如果爆破的时候服务器返回jwt过期,请重新进入小程序刷新一个jwt在遍历user_id

之后成功遍历出所有用户的信息

一次完整的Jwt伪造漏洞实战案例

在用户中发现了测试账号

一次完整的Jwt伪造漏洞实战案例

尝试登录这个账户,先清空小程序缓存,重新进入小程序,点击我的,进行抓包抓包

一次完整的Jwt伪造漏洞实战案例

修改返回包的jwt为测试账户的jwt

一次完整的Jwt伪造漏洞实战案例

包放出去,可以看到成功登录该测试账号,存在任意用户登录漏洞

一次完整的Jwt伪造漏洞实战案例

然后是druid弱口令的挖掘

目录爆破该路径,注意请求头要带上jwt,否则服务器会响应401,爆破出了/sysyem路径,如下:

一次完整的Jwt伪造漏洞实战案例

https://xxxx/system/

接着就发现了druid的后台

https://xxxx/system/druid/login.html

同样,访问的时候请求头也要带上jwt

一次完整的Jwt伪造漏洞实战案例

使用弱口令admin/123456登录

一次完整的Jwt伪造漏洞实战案例

后面还扫出了spring一些端点的信息泄漏,但是并没有发现有价值的信息,此外还发现了swagger接口文档,由于站点敏感,没有继续对接口测试

之后又发现该域名8081端口还开了个系统,一眼看上去是若依系统

一次完整的Jwt伪造漏洞实战案例

从浏览器的URL路径提取插件findsomething中找到了一些接口

拿小程序搞到的jwt,放到如下接口爆破,可以看到这个系统用户的信息,包括账号和密文的密码

GET /prod-api/system/user/getInfo HTTP/1.1Host: xxx:8081source-client: miniapptenant-id: 1001Authorization: {{file:line(E:YakitYakityakit-projectstemptmp297600343.txt)}}

一次完整的Jwt伪造漏洞实战案例

可以证明这些jwt对该系统有效,但是没有具体的密码登录,现在只能调用该系统里接口获取数据,非常不方便;于是我找到了如下接口,里面显示了该系统的初始化密码为Eedssrcpt2024!

注:数据包里jwt随便填一个有效的就行

GET/prod-api/system/config/2 HTTP/1.1Host: xxn:8081tenant-id: 1001Authorization: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjozNTU4LCJ1c2VyX2tleSI6IjFiMDBkNTg3LTUyOGQtNGEwMS05NDY0LTQ5YzJkY2YyY2ViZiIsImRlcHRfaWQiOm51bGwsInRlbmFudC1pZCI6MTAwMSwidXNlcm5hbWUiOiJcdTVmYWVcdTRmZTFcdTc1MjhcdTYyMzdfODY1MCJ9.89FqNollbb7u2blR3PDDnHdbs5XStPjR9l5iQXwXlsaXBU7n7YKDh8ZZQMXWbcoUlRnG1m7nIgnLoZ_ajfxH-A

一次完整的Jwt伪造漏洞实战案例

于是随便找了个用户名尝试登录

一次完整的Jwt伪造漏洞实战案例

使用初始密码Eedssrcpt2024!成功进入后台

一次完整的Jwt伪造漏洞实战案例

到此渗透测试结束

每个初学挖洞的小白都有一个美梦:是否可以在我学习挖洞技能的时候,有位师傅手把手指导,不仅教会我各种技术,还能带着我一起接项目挣钱,让我的技能和钱包同时“升级打怪”。

    还真别说,现在这个天降大饼的美梦来了!FreeBuf知识大陆帮会《安全渗透感知大家族》,正好为你提供了这样的机会。在这里,你既能学到知识,又能做项目赚钱,还能在项目实践过程中与大佬们交流思路、夯实基础

一次完整的Jwt伪造漏洞实战案例

SRC漏洞挖掘出洞课程,是由团队内部师傅根据实际挖洞经历整合的适合挖掘漏洞但是缺乏思路、刚接触学习漏洞挖掘不出漏洞的师傅们的漏洞挖掘教程。

第一期课程价格199,这价格还要什么自行车?课程正在持续更新中~

一次完整的Jwt伪造漏洞实战案例

致远A8,又称致远互联A8协同管理软件,是面向中型、大型、集团型组织(集团版OA)的数字化协同运营中台。A8版本的系统小版本较多,本次分析用的是致远A8 V7 SP1版本源码。

一次完整的Jwt伪造漏洞实战案例

END

关注Code4th安全团队

了解更多安全相关内容~

原文始发于微信公众号(Code4th安全团队):一次完整的Jwt伪造漏洞实战案例

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月20日10:39:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一次完整的Jwt伪造漏洞实战案例https://cn-sec.com/archives/3520901.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息