0x01 背景
在Web应用中是很常见的安全漏洞,比如:低权限账户越权到高权限账户进行越权操作、A用户越权到B用户,进行:(增、删、改、查)等违规操作,但测试越权普遍都比较麻烦,所以这里我介绍一种用的不多的新姿势。
0x02 越权漏洞的分类
- 平行越权:两个不同的公司A和B,通过修改请求,公司A可以任意修改B公司的员工、部门、考勤等信息。
- 垂直越权:同一个公司不同权限的管理员A和B,通过修改请求,管理员A可以修改不在他管辖范围内的员工的部门、考勤、工资等信息。
- 未授权越权:系统都没有登录的情况下,直接就可以通过访问某些接口来达到越权的目的,进行数据的查看、修改。
0x03 越权的检测原理
越权漏洞的检测相对是比较麻烦的,对于这于方面的工具支持也比较少。比如:从低权限账号越权到高权限账号的操作。一般我们都需要这样做。
- A用户(低权限)。
-
B用户(高权限)。
1、A用户登录系统,记录demo用户可以访问的所有Request请求与Response结果,这些全部记录下来。
2、这时再使用B用户登录系统后,也记录Admin用户可以访问的所有Request请求与Response结果。
3、然后我会把这些请求做一个URL清单,然后尝试使用A用户(低权限账户)去访问B(高权限账户)能访问的URL,再分析比较其中的HTTP Response。
4、查看返回结果是否合理。再来决定是不是产生了越权。
最终是通过分析Response差别来决定是否存在越权漏洞,其实以上过程中有大部分流程是可以通过工具来完成的。我们可以通过AppScan来录制、探索爬虫、浏览代理抓包、等方式,来记录用户A账号的所有访问记录,让AppScan自动筛选出的差异 URL,并由工具以低权限用户去访问这些 URL。具体的自动化检测越权请继续看下面。
0x03 使用AppScan自动化扫描越权
- 演示案例为自己搭建的zentao工作平台。
- 分别使用两账号来进行扫描越权:admin , guest1。
admin用户登录后拥有最高权限,能访问所有模块。
而Guest1用户登录后是无权访问平台中任何模块的。
3.1、数据的采集
为了时间考虑,我这里使用AppScan+手工配合方式进行, 这里我先使用admin账号登录,打开AppScan中的外部流量记录器,浏览器就代理4321端口(Https需要添加证书)。
代理好后,在浏览器使用手工点击不同的模块,添加项目,修改密码、添加Bug 等任意操作。AppScan会自动记录。我这是是演示, 就不操作很多了。
停止记录后,关闭代理,选择要测试的域,点击确定,(其实也可以使用AppScan中的自动爬行+探索功能全自动完成这一步)。
这是会进入到了短暂的探索阶段,等一会可以选择扫描方式后,就直接保存此次的记录。
3.2、越权的扫描
这时在AppScan上新建一个扫描,在 扫描配置-->特权升级-->更高级的特权用户测试-->添加一下刚才保存的那个记录。
配置好要扫描网站,与登录管理。
在测试策略中 搜索 ”特权“ 保存特权策略后,再开始进行扫描,如果还想扫描其他漏洞这块就不用设置。
在登录管理中,选择 记录-->Ie 自动记录密码,这次就使用guest1账号登录。添加完后就开始自动扫描了。后面的操作和正常没什么不一样了。
扫描完成后,AppScan会把存在越权的接口报告出来。这里再人工对这个接口进行判断就好。这里只是演示,实际中最好记录网站所有的url请求,再进行越权的扫描。
0x04 结论
使用自动化工具来检测越权漏洞可以大大提高安全测试工作者的效率,自动化工具的缺点也很明显,工具无法理解平台业务逻辑,扫描覆盖率不可能达到100%,所以不能完全依赖自动化扫描来测试越权,但AppScan提供了一个手工探索功能 。可以说在测试WEB越权这一块已经非常方便了。