jwt伪造身份组组组合拳艰巨通关

打印 上一主题 下一主题

主题 1030|帖子 1030|积分 3090

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前言

现在的攻防演练不再像以往那样一个漏洞直捣黄龙,而是必要各种组合拳才气信手拈来,但是有时候使尽浑身解数也不能称心如意。
前期信息收集

首先是拿到靶标的清单
[img=720,54.06758448060075]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551650.png[/img]

访问系统的界面,没有什么能利用的功能点
[img=720,346.524064171123]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551651.png[/img]

首先进行目录扫描,扫描发现存在xxx.zip的文件放置在web目录上
一般zip文件大部门情况都是开发运维人员做系统维护时留下的备份文件,在系统上线后并没有将其删除,于是底裤(即源代码)都直接给到了攻击者
来到这一步都以为是一路高歌,轻松拿下,没想象到是跌荡起伏伏伏伏伏......
先利用wget下载zip文件,文件总共200+mb,很有概率是源代码的打包
[img=720,190.85239085239084]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551653.png[/img]

从文件内容可判断,该系统是利用的.net开发,可通过dnspy进行审计
[img=720,529.727047146402]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551654.png[/img]

文件上传漏洞审计

拿到源码后的第一个思路是寻找文件上传漏洞
果不其然在源码中找到uploadimg接口,发现未对上传的文件格式进行过滤
[img=720,340.2864363942713]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551655.png[/img]

实际访问接口发现,怎么改变文件格式、文件内容、Content-Type、还是各种变种传输都无济于事。
【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注 “博客园” 获取!】
 ① 网安学习成长路径头脑导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技能电子书
 ⑤ 最权势巨子CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战本领手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)
返回包永远是{"Status":1,"Data""null}
运维实在是坏呀~
[img=720,470.44776119402985]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551656.png[/img]

Sql注入漏洞审计

第二个思路就是找注入
但是代码中定义了一个SqlChecker全局的类,强制处理所有用户传参,找注入这个方向有有点难啃了
[img=720,546.464485235435]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551657.png[/img]

系统用户信息遍历

找到/api/user/getusers接口
[img=720,237.04225352112675]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551658.png[/img]

接口没有做鉴权,构造请求包发送,返回包返回系统所有用户信息
其中用户信息包括姓名、出生日期、微信账号、手机号码、邮箱、密码等等
[img=720,374.9548464780253]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551659.png[/img]

伪造jwt_token获取系统管理员-拿下靶标

源码获取到jwt_token的secret
[img=720,536.6037735849056]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551660.png[/img]

但是该secret不是可读性文本,估计是随机生成的byte字节序列,因此不能自行利用cyberchief大概其他工具将token直接生成
这里有个坑点:开始是利用gpt生成的脚本进行secret的读取和token的生成,发现gpt在处理字节上面有点题目,生成的jwt_token不能利用,于是自行编写了个py脚本进行jwt_token的构造,首先我们将字节序列做16进制的转化,为了python能够利用bytes.fromhex()函数读取16进制化的secret,然后根据上面读出的用户信息,伪装admin账号身份,并设置一个较长的ExpireTime
[img=720,530.625]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551661.png[/img]

拿到jwt_token之后,要怎样利用才气拿到后台呢,这里首先要明白该系统的登录鉴权机制
由于他存在注册功能,我们便可在自行注册一个账号,然后进行登录,查看认证处理流程
从数据包里面得知,登录成功后会返回jwt_token和一些与用户相关的一些信息,前端会根据返回的身份信息,跳转到对应的页面,并且功能接口都会带上jwt_token进行请求以便获取系统数据
[img=720,424.91803278688525]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551662.png[/img]

相识清晰后,就开始进行身份伪造,首先去后台登录系统
[img=720,235.5408095554081]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551663.png[/img]

将登录返回包的内容更换为管理员账号的token(从python脚本中生成)和管理员用户的身份信息
[img=720,640.0906002265006]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551664.png[/img]

通过鉴权后,终于成功获取管理员后台,靶标5000分到手,哈哈
[img=720,213.66820885657634]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202408071551665.png[/img]

总结

本次渗出从惊喜到怀疑到失落,总的来说就是“山穷水尽疑无路,柳暗花明又一村”。
如果只是死磕文件上传、SQL注入这些能够快速获取权限的洞,反而有时会错过一些有用的信息,究竟角逐中分数才是最要紧的,怎样高效快速拿下靶标才是第一要领。
同时,代码审计的过程中要联合系统功能来多方面评估,本次挖洞也是先认真明白了系统的登录认证机制,才知道有jwt鉴权这种方式,从而萌生在代码中找jwt secret的想法,也才气把快到手的分数牢牢抓在本身手中。
更多网安技能的在线实操训练,请点击这里>>
  

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

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

愛在花開的季節

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表