首页 > 其他分享 >SRC实战:改个返回包就严重了?

SRC实战:改个返回包就严重了?

时间:2024-07-09 18:57:02浏览次数:7  
标签:实战 SRC 改个 登录 用户 接口 JS 站点 ID

生活就像自行车,要想保持平衡,必须不断前进。—— 爱因斯坦

周一仿佛就是那个提醒你“不能停”的日子,哪怕你的心灵还没准备好继续前进。

0x00

经过长达一天的周末过后,又要开始上班啦。大周一的,还是老样子,来点技术向的文章,给大家伙提提神咯~
好久没有更新 SRC 实战系列了,刚好前段时间遇到个比较有意思的洞,和大家分享一下吧。

除去信息收集的时间,这个漏洞大概花了1个多小时,最后是给的是严重。

警告:文章较长,全文无图。如果对漏洞挖掘或者技术类不感兴趣的朋友看到这里就可以了,不要再继续往下滑动折磨自己了。

说明:主要讲思路和过程。因为截图涉及到大量的敏感数据,这篇文章又是在仅有一个周日写的,不想花时间去打码了。我只想休息~~~~

0x01

遇到的这个站点是一个主站的管理后台,拿到这个站点的时候,简单地看了一下,没有注册功能,也没有找回密码,就一个简单的登录,然后还带有滑动验证。 所以登录相关的功能都可以直接放弃了,没有短信轰炸,不能爆破,怎么办?

如果有看过我之前文章的朋友们应该知道,这种站进不进得去再说,首先我肯定是要来一波未授权测试的,解析 JS 拿到所有的接口路径,直接扔到 BP 里面跑一波。

具体怎么获取接口路径,不管是熊猫头还是 BP 插件都可以,看个人习惯。

在跑了一遍接口之后,发现有部分接口确实有可能存在未授权!为什么这么觉得呢?因为部分接口跑出来的HTTP 响应码是 400 或 500。那下一步应该做什么?没错,去 JS 代码里面找对应接口的参数咯,这样才能正常调用。

为什么 400 和 500 的 HTTP 响应码可能存在未授权?这部分可以看我之前的文章:【HTTP状态码很简单,但你在漏洞挖掘的时候真的有关注过这些吗?

0x02

上面流程都挺正常的,但是我万万没想到的是,这个站的参数加密和代码混淆做得太好了,真不是给人看的!

首先是加密,所有参数全部使用了RSA + AES的方式进行加密,不仅如此,还对参数进行了复杂的签名验证

其次是代码混淆,我可以说从没见过混淆得如此杂乱的代码!要找一个调用链的难度太大了。

我尝试了大概半小时,宣布放弃,我正式承认是个 JS 小弱鸡。

0x03

本来我已经准备放弃这个站点了,登录又登录不进不去,接口参数也处理不了,那还能怎么办?

等一下,登录不进去?那我如果可以伪装成登录进去了呢? 是不是就可以不用考虑参数加密这部分了?因为按正常流程的话,这部分行为网站自己会完成的啊

这时候我决定进行最后一次尝试,如果这个思路还不行的话,就只能放弃这个站点了。

0x04

首先还是得去翻 JS(我要吐了),需要找到网站是怎么处理登录成功的请求的,这样我们才能知道在修改登录响应包时,需要返回什么样的数据,我一般会通过以下几种方式去找:

  1. 1. 直接通过登录接口搜索,查看登录成功的接口回调是怎么处理的。但是如果代码混淆很厉害,可能找不到。

  2. 2. 全局查询设置 LocalStorage 的地方,现在的很多网站,一般在登录成功后,会把部分用户信息,比如 ID 之类的,放到浏览器本地存储,也就是 LocalStorage 中,所以可以尝试直接全局查询设置本地存储的方法。

  3. 3. 搜索常见用户属性,因为代码再怎么混淆都可以,但是响应的对象属性是不会变的。一般登录响应都会返回用户信息,比如:userIdaccountIdroleuser_type等,通过这些属性去搜索。

很幸运,我在查询 localStorage 的设置方法时找到了对应的登录响应结构,其它不多说,主要有两个核心的属性,一个是 user_id,另一个是 role_type。很明显,一个是用户的 ID,另一个是角色类型,很可能决定前端展示哪些功能的。

role_type的类型是整数类型,很好处理,一般来说就是 0、1、2、3 这种,多试几次就行了。但是user_id就不好搞了,我去哪里找一个合法的用户 ID 呢?而且它还是一个字符串类型, fuzz 不太现实。

虽然嘴里说着不太现实,这里我还是尝试简单的 fuzz 了一下各种长度的整型,发现果然不行。

0x05

在卡了一段时间后,我决定换一个思路。既然 fuzz 不出来,那我可以去找网站自己泄露的,因为 ID 一般不属于敏感信息,很有可能会通过各种接口暴露出来。我决定去这个管理后台对应的前端主站点寻找。

一般来说,既然管理后台,那肯定有对应的普通用户的入口或者网站。

在找到对应的网站后,怎么来找管理员的 ID 呢?我的话,首先要找的就是各种公告、通知,因为这些一般都是由管理员发布的。干过开发的都知道,一般这种文章类型,肯定会有一个创建人 / 发布人 / 修改人 之类的字段,里面存的就是对应用户的 ID,这种非敏感字段,很可能会在获取文章信息的时候,一并返回。

果不其然,在 BP 中查看获取公告列表的返回包时,里面包含了一个创建人 ID 的字段,很长的一个字符串。在拿到了这个用户 ID,我们的最后一块拼图就集齐啦。

0x06

再次回到管理后台,拦截登录请求包,将我们自己构造的用户信息返回去,发现成功进入了后台!虽然大部分功能还是无法访问,但是还是有一小部分功能是可以使用的,且这些功能泄露了大量的敏感数据。

0x07

最后,整个过程就是这样啦,虽然说到底还是逻辑漏洞,还是未授权,说得简单点,不过就是改了一个返回包而已,但是我觉得整个过程还是有点意思的。希望可以给各位师傅们一点新思路吧~(关注有嘛?要不点个赞和在看也可以嘛)


欢迎关注我的公众号“混入安全圈的程序猿”

更多原创文章第一时间推送

标签:实战,SRC,改个,登录,用户,接口,JS,站点,ID
From: https://blog.csdn.net/ooooooih/article/details/140304199

相关文章

  • Redis实战(黑马点评--点赞关注)
    一、发布、查看探店笔记保存blog@PostMappingpublicResultsaveBlog(@RequestBodyBlogblog){//获取登录用户UserDTOuser=UserHolder.getUser();blog.setUserId(user.getId());//保存探店博文blogService.save(blog);//返回idret......
  • Redis实战(黑马点评--优惠券秒杀)
    一、redis实现全局唯一订单id1、问题:使用数据库自增id不合适当用户抢购商品时,生成的订单会保存到tb_voucher_order表中,而订单表如果使用数据库自增ID就会存在一些问题id规律性太明显受单表数据量的限制2、解决方法:全局id生成器符号位:1bit,永远为0时间戳:31bit,以秒为单位,可......
  • redis学习(007 实战:黑马点评:登录)
    黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目总时长42:48:00共175P此文章包含第25p-第p34的内容文章目录短信登录功能session共享问题短信登录功能接口编写这里是Result的封装过滤器在......
  • Nginx性能调优5招35式不可不知的策略实战
    Nginx是一个高性能的HTTP和反向代理服务器,它在全球范围内被广泛使用,因其高性能、稳定性、丰富的功能以及低资源消耗而受到青睐。今天V哥从5个方面来介绍Nginx性能调优的具体策略,希望对兄弟们有帮助,废话不多说,马上开整。1.系统层面:调整内核参数:例如,增加系统文件描述符的......
  • 实战篇——XSS漏洞dedecms渗透实战
    实战篇——XSS漏洞dedecms渗透实战XSS渗透实战本节借助XSS平台通过存储型XSS盲打实现管理员session劫持,进而上传一句话木马获得服务器权限。创建xss项目:将生成的xss代码植入评论:发表,提示正在审核:模拟管理员查看待审核的评论:查看xss项目,此时已经获得管理员的cookie以及......
  • 车辆销售数据分析可视化实战
    车辆数据分析可视化实战1.引言2.导入所需的包并加载数据集3.数据探索4.数据处理5.数据可视化5.1销量量年度变化5.2各品牌销售量5.3销量最好的与销量最差的top55.4颜色对销售价格影响5.5车辆状况与实际价格关系5.6预估价格与实际价格关系散点图5.7相关性分析6结......
  • 基于java ssm springboot vue牙科诊所挂号管理系统毕业设计实战项目分享
    前言......
  • 基于java ssm springboot vue学生会组织管理系统毕业设计实战项目分享
    前言......
  • 基于java ssm springboot vue小区疫情防控数据动管理系统毕业设计实战项目分享
    前言......
  • Python实战训练(方程与拟合曲线)
    1.方程求e^x-派(3.14)的解用二分法来求解,先简单算出解所在的区间,然后用迭代法求逼近解,一般不能得到精准的解,所以设置一个能满足自己进度的标准来判断解是否满足这里打印出解x0是因为在递归过程中没有变量去接收返回值,所以返回x0,再打印x0得到的是None,再用numpy自带的log(pi)就查......