一次Jwt伪造漏洞实战案例分析

2024-12-31 18 0

实战

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

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

一次Jwt伪造漏洞实战案例分析插图

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

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

一次Jwt伪造漏洞实战案例分析插图1

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

一次Jwt伪造漏洞实战案例分析插图2

爆破发现其使用了JJWT,且原始密钥为abcdefghijklmnopqrstuvwxyz解密该jwt,发现其中有个user_id字段一次Jwt伪造漏洞实战案例分析插图3用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伪造漏洞实战案例分析插图4注意,服务器是通过判断user_key来判断jwt是否在有效期,如果爆破的时候服务器返回jwt过期,请重新进入小程序刷新一个jwt在遍历user_id。

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

一次Jwt伪造漏洞实战案例分析插图5在用户中发现了测试账号一次Jwt伪造漏洞实战案例分析插图6尝试登录这个账户,先清空小程序缓存,重新进入小程序,点击我的,进行抓包抓包一次Jwt伪造漏洞实战案例分析插图7修改返回包的jwt为测试账户的jwt一次Jwt伪造漏洞实战案例分析插图8

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

一次Jwt伪造漏洞实战案例分析插图9

然后是druid弱口令的挖掘

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

一次Jwt伪造漏洞实战案例分析插图10

https://xxxx/system/

接着就发现了druid的后台

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

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

一次Jwt伪造漏洞实战案例分析插图11

使用弱口令admin/123456登录

一次Jwt伪造漏洞实战案例分析插图12

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

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

一次Jwt伪造漏洞实战案例分析插图13

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

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

GET /prod-api/system/user/getInfo HTTP/1.1
Host: xxx:8081
source-client: miniapp
tenant-id: 1001
Authorization: {{file:line(E:\Yakit\Yakit\yakit-projects\temp\tmp297600343.txt)}}

一次Jwt伪造漏洞实战案例分析插图14

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

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

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

一次Jwt伪造漏洞实战案例分析插图15

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

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

一次Jwt伪造漏洞实战案例分析插图16

到此渗透测试结束

后记

实战中挖掘Jwt弱密钥是个新思路,如果无法直接利用,但是能证明Jwt存在弱密钥也能提交对应的src获得漏洞赏金。


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

记一次实战登陆口Js逆向分析
记一次CNVD证书的挖掘方式
Windows基线加固:Windows基线检查及安全加固手工实操
CVE2022-0735 Gitlab-runner token获取后的可利用性分析
viper:一款中国人写的红队服务器——记一次内网穿透练习
SASE网络安全架构 | 零信任网络访问(ZTNA)

发布评论