实战
某次漏洞挖掘时遇到了任意用户登录漏洞,这次的漏洞案例是由于jwt存在弱密钥,攻击者可以伪造jwt,从而获取非授权访问权限。此外站点还存在弱口令,可以通过弱口令登录druid后台,查看敏感信息。
首先通过微信搜索小程序,找到目标。
点击进入小程序,点击我的-微信登录
观察数据包,可以看到服务器生成了一个jwt值
这边就直接尝试爆破该Jwt值
爆破发现其使用了JJWT,且原始密钥为abcdefghijklmnopqrstuvwxyz解密该jwt,发现其中有个user_id字段用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生成脚本如下:注意,服务器是通过判断user_key来判断jwt是否在有效期,如果爆破的时候服务器返回jwt过期,请重新进入小程序刷新一个jwt在遍历user_id。
之后成功遍历出所有用户的信息
在用户中发现了测试账号尝试登录这个账户,先清空小程序缓存,重新进入小程序,点击我的,进行抓包抓包修改返回包的jwt为测试账户的jwt
包放出去,可以看到成功登录该测试账号,存在任意用户登录漏洞
然后是druid弱口令的挖掘
目录爆破该路径,注意请求头要带上jwt,否则服务器会响应401,爆破出了/sysyem路径,如下:
https://xxxx/system/
接着就发现了druid的后台
https://xxxx/system/druid/login.html
同样,访问的时候请求头也要带上jwt
使用弱口令admin/123456登录
后面还扫出了spring一些端点的信息泄漏,但是并没有发现有价值的信息,此外还发现了swagger接口文档,由于站点敏感,没有继续对接口测试
之后又发现该域名8081端口还开了个系统,一眼看上去是若依系统
从浏览器的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对该系统有效,但是没有具体的密码登录,现在只能调用该系统里接口获取数据,非常不方便;于是我找到了如下接口,里面显示了该系统的初始化密码为Eedssrcpt2024!
注:数据包里jwt随便填一个有效的就行
GET /prod-api/system/config/2 HTTP/1.1 Host: xxn:8081 tenant-id: 1001 Authorization: eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjozNTU4LCJ1c2VyX2tleSI6IjFiMDBkNTg3LTUyOGQtNGEwMS05NDY0LTQ5YzJkY2YyY2ViZiIsImRlcHRfaWQiOm51bGwsInRlbmFudC1pZCI6MTAwMSwidXNlcm5hbWUiOiJcdTVmYWVcdTRmZTFcdTc1MjhcdTYyMzdfODY1MCJ9.89FqNollbb7u2blR3PDDnHdbs5XStPjR9l5iQXwXlsaXBU7n7YKDh8ZZQMXWbcoUlRnG1m7nIgnLoZ_ajfxH-A
于是随便找了个用户名尝试登录
使用初始密码Eedssrcpt2024!成功进入后台
到此渗透测试结束
后记
实战中挖掘Jwt弱密钥是个新思路,如果无法直接利用,但是能证明Jwt存在弱密钥也能提交对应的src获得漏洞赏金。
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)