freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

jwt伪造身份组组组合拳艰难通关
2024-08-08 22:56:21

前言

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

前期信息收集

首先是拿到靶标的清单

image-20240713174727680

访问系统的界面,没有什么能利用的功能点

image-20240713175618935

首先进行目录扫描,扫描发现存在xxx.zip的文件放置在web目录上

一般zip文件大部分情况都是开发运维人员做系统维护时留下的备份文件,在系统上线后并没有将其删除,于是底裤(即源代码)都直接给到了攻击者

来到这一步都以为是一路高歌,轻松拿下,没想象到是跌宕起伏伏伏伏伏......

先使用wget下载zip文件,文件总共200+mb,很有概率是源代码的打包

image-20240713180248221

从文件内容可判断,该系统是使用的.net开发,可通过dnspy进行审计

image-20240713180925791

文件上传漏洞审计

拿到源码后的第一个思路是寻找文件上传漏洞

果不其然在源码中找到uploadimg接口,发现未对上传的文件格式进行过滤

image-20240713190953131

实际访问接口发现,怎么改变文件格式、文件内容、Content-Type、还是各种变种传输都无济于事。

【----帮助网安学习,以下所有学习资料免费领!加vx:dctintin,备注“freebuf”获取!】

① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

返回包永远是{"Status":1,"Data""null}

运维实在是坏呀~

image-20240713192151353

Sql注入漏洞审计

第二个思路就是找注入

但是代码中定义了一个SqlChecker全局的类,强制处理所有用户传参,找注入这个方向有有点难啃了

image-20240713231705777

系统用户信息遍历

找到/api/user/getusers接口

image-20240714124940252

接口没有做鉴权,构造请求包发送,返回包返回系统所有用户信息

其中用户信息包括姓名、出生日期、微信账号、手机号码、邮箱、密码等等

image-20240714111059711

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

源码获取到jwt_token的secret

image-20240714111521463

但是该secret不是可读性文本,估计是随机生成的byte字节序列,因此不能自行使用cyberchief或者其他工具将token直接生成

这里有个坑点:开始是使用gpt生成的脚本进行secret的读取和token的生成,发现gpt在处理字节上面有点问题,生成的jwt_token不能使用,于是自行编写了个py脚本进行jwt_token的构造,首先我们将字节序列做16进制的转化,为了python能够使用bytes.fromhex()函数读取16进制化的secret,然后根据上面读出的用户信息,伪装admin账号身份,并设置一个较长的ExpireTime

image-20240714112945210

拿到jwt_token之后,要如何使用才能拿到后台呢,这里首先要明白该系统的登录鉴权机制

由于他存在注册功能,我们便可在自行注册一个账号,然后进行登录,查看认证处理流程

从数据包里面得知,登录成功后会返回jwt_token和一些与用户相关的一些信息,前端会根据返回的身份信息,跳转到对应的页面,并且功能接口都会带上jwt_token进行请求以便获取系统数据

image-20240714113814520

了解清楚后,就开始进行身份伪造,首先去后台登录系统

image-20240714114400235

将登录返回包的内容替换为管理员账号的token(从python脚本中生成)和管理员用户的身份信息

image-20240714114752568

通过鉴权后,终于成功获取管理员后台,靶标5000分到手,哈哈

image-20240714121818513

总结

本次渗透从惊喜到怀疑到失落,总的来说就是“山穷水尽疑无路,柳暗花明又一村”。

如果只是死磕文件上传、SQL注入这些能够快速获取权限的洞,反而有时会错过一些有用的信息,毕竟比赛中分数才是最要紧的,如何高效快速拿下靶标才是第一要领。

同时,代码审计的过程中要结合系统功能来多方面评估,本次挖洞也是先认真理解了系统的登录认证机制,才知道有jwt鉴权这种方式,从而萌生在代码中找jwt secret的想法,也才能把快到手的分数牢牢抓在自己手中。


# 漏洞挖掘 # 攻防演练 # JWT
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
  • 0 文章数
  • 0 关注者
文章目录