在日常的漏洞挖掘过程,经常会遇到某一系统存在多个不同端中,如常见的web端、桌面端、公众号端、小程序端、app端。
在这些端中经常会遇到一些问题,这里常遇到的,如接口适用、隐藏接口、接口规则猜解等问题,由于过程描述中涉及敏感信息会尽量添加图片进行说明。
某些系统不同端下的越权
在某次测试的过程中,发现在小程序端下,登录用户只拥有查看权限
在web端进行搜索,以当前用户登录到web系统,在web系统下具有比较完整的权限,如最基本的增删改功能,在web下点击删除获取删除接口
这里web使用的端点为/cgi-bin/xxxx/delete的接口,当对小程序中的接口进行抓包的时候能看到的查询接口为/cgi-bin/mpxxx/read的接口,将获取的删除接口替换为小程序的规则并修改为delete接口,如/cgi-bin/mpxxx/delete,跟上fileId即可越权删除任意用户下的内容
在一次测试的过程中,web系统下的接口正常的请求格式为data={“api=xxx&method=xxx¶m={"a=1&b=x"}”}
当对系统的js中的接口进行查找的时候,发现了如下请求格式的接口
在请求过程中,未找到这种接口的请求方式,而直接在web中的接口进行构造会提示404,同样根据此系统名称在小程序进行查找的时候,点击某些功能的时候发现了小程序的接口请求方式为
当时看到的时候就觉得有戏,将获取的接口进行构造,在找接口的参数的时候对小程序进行反编译,发现接口跟这个web下获取的js比少了很多,当时觉得是自己权限不够看不到高权限下的功能,在web里面找到了参数的构造
于是根据web获取到的js接口,进行一个个构造最后发现了一下较为敏感的越权
其中还有一个有意思的案例,报告没翻到
在一次众测的过程中,先从小程序公众号着手的时候,发现了一个系统在接口命令的规则上有着非常明显的特征,举个例子/h5/api/xxxx,/mp/api/xxx,/client/api/xxxx,于是把小程序反编译后的接口提取出来,在网站中把js中的接口提取出来
对app进行抓包正常请求将接口标记出来的时候,发现在app中功能较web和小程序都会多出几个功能,于是把几个不同端下的接口进行替换、构造、猜解。
如小程序下获取的某删除接口/mp/api/xxdelete,将参数和接口带入到app中 /app/api/xxxdelete,发现一个查看功能的地方可以正常进行删除,只要获取查看到的id即可。web和小程序某些功能点获取不到参数,在app中对类似接口使用hae标记,然后将获取到的参数进行猜解、构造等等操作,最后挖掘出来不少的漏洞出来。
不同端下寻找接口与调试
在一次对某app进行测试的时候,发现点击某功能的时候进入会提示无权限,但是可以进去界面且从抓包的结果来看,referer得到一个地址
在打开这个地址的时候,通过寻找js获取接口,在通过锚点访问功能点去断点调试获取加密的方式,从而去构造接口以及参数
通过接口测试从而发现越权漏洞
这里也顺便提一种情况,在一些无法抓包的app中,如访问某些功能界面或者是活动界面,在app中点击分享界面
获取到链接,从而在web中打开,或获取指定功能点,或直接能看到h5版的网站,通过接口和访问锚点的方式对网站进行测试
某些系统不同端token问题
本以为在一次测试的功能中,属于特殊案例,但是在后来漏洞挖掘的过程中碰到了一些差不多的情况,由于不同端导致的token问题。
在某系统的挖掘过程中,首先是从web入手的,可以进行企业的创建以及企业成员的加入
网站提示了可以扫描小程序进入小程序端使用
于是收集了网站的接口,对小程序反编译获取了一些接口,在小程序接口发现了web端没有的一个加入企业的接口
/api/corpxxx/xxxx/add,在这个接口中可以看到由某id加入企业,遍历的过程发现没有进行鉴权,可以加入到一些企业
在数据包提示加入成功的时候,发现在web端进行切换企业的时候,没有我加入的这些企业
小程序端可以进行切换,且发现切换的时候会根据进入的企业刷新token
于是便将获取的token替换到web的网站中
刷新界面进入了我进入的企业的界面,并且可对企业进行管理以及访问企业成员等等的权限
类似的情况在一次挖掘app的过程中,在观察数据包的时候看到了如下接口能获取用户的token
直接访问会提示登录失败
将获取的token加入到header中,通过网站中获取到的接口以app中用户的身份去访问网站中所有接口,从而得到了一些越权漏洞
同样在一次小程序的挖掘中,登录时显示无权限
观察小程序的链接,这里称为xx.test.com,于是在web中使用主域打开,www.test.com后进行登录,获取当前web的一个token,再通过测试小程序的接口
根据web的请求特征,添加-AUTH-TOKEN字段,构造接口成功访问小程序中的接口,并发现几处越权漏洞
题外话
测试的过程中如果一个系统涉及到了多端,尽量每个端以及接口去看看尝试。用hae标记、自己收集等等。涉及多个权限分级时在多个端查看所拥有功能点是否相同,查看接口构造特征时查看接口的构造方式是否有不同端下的隐藏接口等。
每个场景每个功能下总有些不一样,所以只是总结了一些遇见的比较多的情况,在一些业务的场景下总有一些奇奇怪怪的问题,笔者也只是希望给大家打开一点小小的思路去发散。
原文始发于微信公众号(Str1am Record):不同端下的漏洞挖掘
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论