前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于未授权的渗透测试技巧总结

基于未授权的渗透测试技巧总结

作者头像
红队蓝军
发布2024-08-08 17:37:21
1030
发布2024-08-08 17:37:21
举报
文章被收录于专栏:红队蓝军

围绕未授权测试厂商的思路分享,话不多说,上干货

前段时间做漏洞统计,才发现已经挖了一年的运营商的漏洞了,回想起来,从23年5月到今年5月一年一路各种干未授权,废了不少脑筋,随着挖的人越来越多, 互联网暴露面漏洞只会越来越少,心细会有一些新的领悟

和22年一样,简单的统计了23年5月到现在个人挖掘漏洞情况,平均到某月大概二十份,漏洞全部基于未授权测试,抽出一些比较典型的测试,做成类型案例,积累的多了,能易上手。(案例涉及的漏洞均已修复,由于项目原因,严重厚码)

为了让大家更有代入感,简易画了张图,来表示后面的未授权测试过程

基于#的测试

站点映射了很多个h5的服务,但实际测试的时候是没有发现这些资产的,这种情况一直持续了好几个季度的测试,包括国测、其他厂商测试,后续我通过基于#的测试,利用了缺少路由守卫的未授权访问缺陷,出了大量的高危。

为了避免客户信息泄露,h5服务这里成为A-h5,直接访问是nginx的默认404,站点的服务这里称为B-oms

B-oms已经测试了很多次了,但都没有明显的功能点可以测试,因此,我决定换个测试思路,在爬取oms的过程中,发现一处有意思的点, 是一处二维码的服务,访问是一处空白,但地址上是归属到A-h5的

似乎有点漏洞特征,这里有隐藏服务,去掉后面的id值,拼接#,发现一处WechatAssiant的应用,通过观察title的应用名称,属于隐藏资产或者过度资产。

后续顺着WechatAssiant的应用,观察到一处#号值 salesPerformance/#/

路由守卫缺陷

同样观察titlle模块,是一处订单模块。

访问同样是一处空白页

但注意这里,因为她是#号后的路径,这里匹配的path可不是API,而是基于#后的路径,然后做相关拼接salesPerformance/#/myorder

在Js的测试中,有个兴趣很大的参数 queryListByManagerMobileNum,多参数查询类的值

异常状态码响应

跟随这个参数,直接访问归属于400,在同一处的其他应用测试中,我注意这里的400并不是实际鉴权参数缺失导致的,而是缺少查询参数,于是,构造一处参数模版{"":""}

有意思,服务器返回了一个很美妙的结果 “message”:xx手机号不能为空

很好,然后又来到了常规的猜参数环节,先简单的尝试phone、number、num、phonenum等常规词,,还是没猜到,之前在Escan的描述有说过,如果JS混淆不当的话,很有可能定位到相关参数

业务参数定位

于是,很快,就定位到这个参数了phoneNum ,参数猜解是这样的,需要全称满足条件。

简单构造,200success,

从另一处收集到管理员手机号,成功获取敏感信息(sfz、住址、phone)

基于异常响应的上传

文件上传,在各个服务都会存在,但挖掘的各大厂商都比较少,大部分站点的响应状态码都做过加固,大部分状态码都是基于404的、400 很少常规的405. 在JS中匹配到upload字段即可测试,有的JS混淆不当URL中会携带该地址,这时候findsomething或者被动流量yitaiqi能匹配出来.然而,很多时候,遇到的都是相对地址,字段没有携带API地址,如,url:"/uploadImg",的形式

相对参数地址

这种,测试的时候流量包中包含的POST的数据包,提取query、get、这类的API,然后对上传字段拼接即可。

针对异常状态的问题,由于站点大部分都做过加固,批量发包结果通常都是404,服务器不会返回错误的回显,如提示"multiqart缺失",而是统一响应的404

异常状态码分析

无回显型的上传,我注意到它是nginx返回的信息,是中间件对接口做的统一处理,而未授权上传是权限方面的内容,这两者不是同个概念,如果他不存在,那他应该返回的是401,如果不是401,就很可能有问题。应该返回401,才是权限校验。

或者是这样的401

因此,构造一处上传表单,看看结果

打成存储xss

另外,在一次测试中,我把这种测试思路扩展开来了,未授权文件上传是基于401的鉴权,如果遇到重定向,那怎么处理?

异常302绕过

可以看到,依旧是中间件做了统一路由处理,重定向到登录地址,那么,针对路由处理,路由在对资源文件上,通常不做鉴权,这时由于业务的原因,比如一些图片,需要访问,如果做鉴权,那么不登录游客就看不到。所以,利用资源文件后缀绕过此类的限制

返回了SourceSytem is null ,说明表单中缺失了一处SourceSytem对象的值,那么这种,怎么去提供这里参数值呢?

表单类参数定位

简单分析下,首先是最基本的file参数,构造表单需要携带一处file参数,作为文件名的name,有的业务需要一处独立的标识,作为这类的功能,所以需要额外的参数值

这种参数值可以参考#测试中的方法,这里不赘述

如果服务器返回500,也是这类的测试,

根据情况,补上一处参数值即可

然后是普通的未授权上传,这类上传通常基于405,或者200响应码,核心的挖掘点就是首页的API,对首页main.js或者umi.js类集成文件的API做批量fuzz,曾经在做某众测、多厂商大规模测试的核心站都有挖掘过

由于他比较常规,通常批量发包都能发现,提个样子

常规405、500上传

附上某大型众测的一个例子

基于服务的命令执行

遇到一些综合系统,如xx服务平台、xx管理系统、xx中心、xx门户,涉及子模块的测试,往往是存在多类框架的,比如编辑器ueditor+fastjson二级地址,三级地址springboot而首页是oms、cms类 ,测多了发现,二级地址、三级地址是比较脆弱的,但往往访问需要权限校验,常见的像中间件nginx302跳转

上传异常响应的模块说过了,如果是中间件做的响应,如302,那还是可能绕过的

中间件限制绕过

访问子模块,这里中间件做了限制,是统一的定向,不涉及到模块的鉴权,因此,可以提供一些模块参数,

代码语言:javascript
复制
HTTP/1.1 200 
Server: nginx
Date: Wed, xxxxxxxxxxxxxxxx
Content-Length: 61
Content-Type: application/json
Connection: close
Access-Control-Allow-Origin: https://xxxxxxxx

{"status":"0","message":"1","data":1}

绕过访问,这时候又回到基于#的测试思路

基于#的测试

对空模板的一些API地址测试,200返回包

框架漏洞

这时试试测试fastjson,可能会有一些意想不到的效果

利用浅蓝给出的gadgets

代码语言:javascript
复制
{"@type":"java.lang.Exception","@type":"com.alibaba.fastjson.JSONException","x":{"@type":"java.net.InetSocketAddress"{"address":,"val":""}}}

fastjson打成

子模块的其他测试可以参考以前写的非常规环境下的编辑器测试,像ueditor、ewebeditor、jupyter

(https://forum.butian.net/share/2639)

基于多参数值的查询

多参数查询,在一些业务系统,存在一些回调的业务,这些业务API并未完全的覆盖鉴权,只要键值对匹配上,不做身份权限校验即可查询。

引入一处典型的多参数查询测试

在400参数校验失败后,有一处Get请求明显的校验成功,

多参数值校验

当添加了"autoToastPage":false参数后,原有的参数校验绕过了,回显成补充参数值

通过其他点位泄露的参数值,查询成了

第二种思路补充参数校验,在源码中有提到该值,但这种不明显,

部分混淆参数分析

第二种业务是部分混淆型多参数,

对业务测试,先定位到业务的JS,观察这类的封装函数getOrdersData,

这是个比较典型的带参params,如果不带参,之前Escan描述过,去定位query、get相关的orders函数,如果混淆不当,还是可以获取到的。这里的orderNo和mobilePhone不需要完全提供,有时候提供一个就能模糊匹配到

构造链接发包,这样就能获取到订单的信息了

多重混淆参数分析

第三种业务是混淆型多参数,

在测试会存在一些隐藏资产,JS提取到的都是相对地址,然后API功能参数是提取到片面的,大家应该都有碰到过,这种情况是他部分地址给变量去覆盖了

这时候只要去跟进这处的JS,就能发现这处地址

是一处joinCheckWhite函数,freeSwitch 变量我在一些全局函数里找到了,构造,发现一处隐藏资产

像这种没上报,没统计的资产,同时存在upload的功能,基本一测一个准

注意到一处create函数,虽然它post携带bear token但如果存在缺陷,这里就不会鉴权

获取token成了

基于目录探测的测试

目录探测更多是针对ip的形式测试,往往ip的服务比较单一,没有更多的突破口,对目录探测可以把资产进行相关的喷洒,喷洒二级目录,重点测试一些image的目录,主要是观察服务器的响应

二次递归

例如在测试中二次递归,有些地址有200的响应,那可能就存在目录遍历

目录缺陷

一些中间件甚至对image目录不做限制

这时候就可以利用../进行跳跃读取文件配置,敏感文件

另外一种是探测目录的编辑器位置,这个需要准备一些编辑器的目录,会有很多意外的收获,比如ueditor的反射xss

基于Springboot框架的测试

这类的漏洞应该是各大厂商挖的最多一类漏洞,主要集中在swagger文档的泄露、actuator监控组件的未授权、druid连接池、heapdump堆文件泄露这四种

做这类的挖掘比较无脑,直接对着API地址批量探测即可,常用的工具有RouteVulscan和曾哥写的springboot扫描,前者会对流量包中每个报文进行拆分,作为一个基础的APi,然后批量发包字典,这类漏洞挖掘没啥技巧,分享一些绕过的姿势

首先actuator未作鉴权校验,通过中间件的校验,直接访问是403,这时候利用../进行跳转到APi地址,然后拼接即可

中间件目录符绕过

有的中间件不允许访问actuator,就配置上.js、 .png资源文件后缀,绕过中间件

中间件资源文件绕过
基于XSS的测试

有些xss还是比较有意思的,位置都比较刁钻,不常规

表单型XSS
跳转型XSS
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 红队蓝军 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基于#的测试
    • 路由守卫缺陷
      • 异常状态码响应
        • 业务参数定位
        • 基于异常响应的上传
          • 相对参数地址
            • 异常状态码分析
              • 异常302绕过
                • 表单类参数定位
                  • 常规405、500上传
                  • 基于服务的命令执行
                    • 中间件限制绕过
                      • 基于#的测试
                        • 框架漏洞
                        • 基于多参数值的查询
                          • 多参数值校验
                            • 部分混淆参数分析
                              • 多重混淆参数分析
                              • 基于目录探测的测试
                                • 二次递归
                                  • 目录缺陷
                                  • 基于Springboot框架的测试
                                    • 中间件目录符绕过
                                      • 中间件资源文件绕过
                                      • 基于XSS的测试
                                        • 表单型XSS
                                          • 跳转型XSS
                                          相关产品与服务
                                          腾讯云服务器利旧
                                          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档