首页 > 其他分享 >jwt伪造身份组组组合拳艰难通关

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

时间:2024-08-08 23:38:44浏览次数:12  
标签:登录 系统 组组 jwt token secret 网安 组合拳

前言

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

前期信息收集

首先是拿到靶标的清单

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,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 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,token,secret,网安,组合拳
From: https://www.cnblogs.com/hetianlab/p/18349958

相关文章

  • ImportError:无法从“jwt.algorithms”导入名称“RSAAlgorithm”
    RSAAlgorithmPyJWT算法方法无法导入,但我确实安装了PyJWT错误:ImportError:cannotimportname'RSAAlgorithm'from'jwt.algorithms'我通过运行以下命令检查了该包是否可用:poetryshow|grep-ipyjwtpyjwt2.9.0J......
  • JWT的基本使用
    引言在当今数字化时代,Web应用的安全性已成为开发者和企业关注的焦点。随着分布式系统和微服务架构的兴起,传统的会话管理认证方法,例如基于Cookie和session的会话,已经显示出了其局限性。正是在这种背景下,JSONWebTokens(JWT)作为一种轻量级、自包含的认证机制应运而生。JWT允许......
  • LangChain与JWT:构建安全认证的桥梁
    LangChain与JWT:构建安全认证的桥梁在现代Web应用和微服务架构中,安全认证是保护数据和资源访问的关键。JSONWebTokens(JWT)作为一种广泛使用的开放标准,为安全传输提供了一种简洁而自包含的方式。LangChain,作为一个假设的编程辅助工具,如果存在,它可能会支持JWT,以增强其在安全......
  • 无法反序列化解码 JWT python 时的关键数据
    我正在使用pyjwt库来解码JWT令牌。我在解码时遇到此错误。代码在文档中给出。importjwtencoded_jwt='''eyJ0eXAiOiJKV1QiLCJhbG......'''secret=b''''-----BEGINPUBLICKEY-----MIIFRjCCBC6gAwIBAgIQCIdSGhpikQCjOIY154XoqzANBgkqhkiG9......
  • 登录相关功能的优化【JWT令牌+拦截器+跨域】
    登录相关功能的优化登录后显示当前登录用户el-dropdown: Element-Theworld'smostpopularVueUIframework<el-dropdownstyle="float:right;height:60px;line-height:60px"><spanclass="el-dropdown-link"style="color:white;font-siz......
  • SpringSecurity + JWT实战(前后端分离)
    1.聊聊SpringSecurity+JWT2. 前后端完全分离认证问题3. JWT的原理4.JWT的数据结构4.1Header4.2Payload4.3Signature5. JWT的实战1.引入jar2.创建jwt的工具类​3.登录成功4.登录失败5. 权限不足6.未登录返回json数据1.聊聊SpringSecurity+JWT先来......
  • 用go实现JWT
    JWTISONWebToken,通过数字签名的方式,以JSON对象为载体,在不同的服务终端之间安全的传输信息。JWT最常见的场景就是授权认证,一旦用户登录,后续每个请求都将包含JWT,系统在每次处理用户请求的之前,都要先进行JWT安全校验,通过之后再进行处理三部分组成:Header { 'type':'j......
  • FastAPI oauth2 + jwt 延长每个请求的exp时间
    根据fastapi的示例,我们可以使用ouath2和json网络令牌为用户创建登录:fromdatetimeimportdatetime,timedelta,timezonefromtypingimportAnnotatedfromfastapiimportDepends,FastAPI,HTTPException,statusfromfastapi.securityimportOAuth2PasswordBearer,O......
  • Spring Boot + Spring Security + Redis + JWT + CSRF 双认证简单整合
    1.项目结构2.数据库相关操作createdatabaseuser_profiles;useuser_profiles;CREATETABLE`user`(`id`INTAUTO_INCREMENTPRIMARYKEY,`username`VARCHAR(255)NOTNULLUNIQUE,`password`VARCHAR(255)NOTNULL,`email`VARCHAR(......
  • 接口文档,jwt,base64编码解码
    Ⅰ接口文档【一】接口文档了解#作为后端,接口写完了--->接口给前端使用 -登录接口:username,password,code#写接口的人负责写接口文档 -如何写?-写在哪?#通常在公司中: 1使用world编写,放在公共平台上2使用MD编写3第三方平台编写:showdoc -http......