越权作为SRC中最常见的漏洞,今天让我们来学习一些SRC中实战的越权案例以及一些越权漏洞挖掘的小技巧。
越权分为「水平越权」和「垂直越权」,在某些概念上,也包括「权限绕过」。
水平越权的概念:「权限相等者互相越权」。
比如:**课堂中的学员和学员之间的越权、企业管理者和企业管理者之间的越权、**用户和用户之间的越权、**电商和电商之间的越权...
身份分析案例
https://******.*****.com/
我们来分析一下这个平台
「问题1:首先搞明白我是谁?」
在此平台中,我是一个创作者,可以创作文章、视频等内容
「问题2:我能水平越权到谁?」
我可以水平越权到其他创作者,其他创作者所创建的文章、视频等内容
「问题3:我怎么证明我越权成功了呢?」
使用A/B两个测试账号,使用A账号成功增删改查到B账号等数据。
「关键点:使用两个浏览器,登陆A/B两个账号,进行越权测试」
下面给几个实战SRC的案例,以加深大家对越权的理解。
某站越权1:
「某站仪表盘编辑标签处越权漏洞」
编辑标签处存在越权漏洞,可以通过可遍历的mainId获取其他用户的xx信息、xx信息等等...
登录账户A,访问仪表盘
编辑标签处抓包
「这里我的测试方法是:」获取报文后,放入Repeater,然后修改mainId,发现获取到的不是自己的文章。可以登陆B账号创建一个文章,在同样的地方抓到同样的报文,使用B账号的mainId进行验证,发现漏洞存在。
某站越权2:
点击编辑,查看burp报文的history
找到此post接口,pageId处存在越权,可以查看其他企业仪表盘大量信息。
返回包中有报表信息泄露。
上面两个是简单的数字型越权漏洞,下面我们看一些复杂点的。
某站越权3:
编辑处抓包:
adminUserIdList处存在越权漏洞,添加其他用户id可将任意用户加入自己的企业,然后通过刷新页面获取以下接口可获取全站用户数据。
但是,此用户id过长,且无明显的增长规律,通常称为「不可遍历ID」
这就导致了此处虽然存在越权,但是造成的危害有限。
那么如何进行使这个危害扩大化呢?
扩大不可遍历ID越权的危害
(在尝试以下方法前,要现尝试发现此id是否存在规律,有些id虽然长,但是呈递增/递减趋势,或者存在一定的规律性,即为可遍历ID)
「way1:利用可遍历ID的越权获取不可遍历的ID」
如:使用可遍历的gourpId获取不可遍历的企业id、bizid和用户id
此处就获取到了不可遍历的用户id
「Way2:利用接口报错获取不可遍历ID」
通过可遍历id的接口报错,获取不可遍历id,然后利用不可遍历的corpid进一步进行越权测试。
「Way3:不可遍历ID为公开id」
编辑某文件处存在越权漏洞,越权存在的id为不可遍历ID
分享此文件时,查看文件的路径处出现此id,说明此处id为公开id,公开作品可被任意修改。
其他越权案例
路径处的越权
除了通常的GET传参、POST传参处可能存在越权问题,「路径处」也可能存在越权漏洞,如以下报文
某OKR平台,在A账户修改OKR处抓包,获取到一个PATCH包,其路径处516668处存在越权漏洞,通过修改此id可以越权修改其他用户KR的内容。
同样如,可越权获取全站工作事项详情:
都是通过遍历路径中的id来进行越权操作的。
多次传入json的越权
某处通知功能,选择通知人后保存的时候抓包,获取如下报文。
如果我们正常只选择一个用户,只有一个json传入,如{"uid":89045}, 我们手动传入多个uid,由于此id可遍历,可以给全站用户发送通知,并在返回包中包含用户信息,造成信息泄露。
滞空参数值造成的越权漏洞
进入某小程序,点击地址管理处查看history报文
滞空其header头中的memberxxx和openxxx两个字短,即可回显所有收货地址。
滞空参数也可用于传参中,如get、post传参的传参值,也可能会导致返回所有数据的问题。
关于水平越权,还有很多精妙的小技巧和漏洞挖掘手法,但是最本质的对与目标站点权限的理解,自己要去对每一个细节点都去进行尝试,一定会有所收获。