java 横向越权 横向越权安全测试_重置密码

1.What——什么是横向越权?

横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源 

纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源

 

例:用户A无法访问到北京区域的用户详情,用户A没有重置北京区域用户密码的权限。

但是通过获取到重置密码的接口url和对应用户的userid,用他的token执行重置密码的接口。重置成功!!!??? 

java 横向越权 横向越权安全测试_用户权限_02

 

2.Why——出现原因是什么?

问题出现根本原因是:

Java后端没有对相应的接口做相应的防止横向越权措施

 

3.How——怎么找出有横向越权问题的接口?

测试过程:

1、与产品沟通,整理出所有用户权限相关的重要接口

2、使用带有修改权限的A用户的token跑一遍

3、使用未带有权限的B用户的token跑一遍

 

具体操作如下(使用jmeter):

1、新建一个HTTP信息头管理器,将请求头必须变量写入(token)

2、将整理的所有重要接口分别新建http请求并写入

3、使用带有权限的token跑所有接口,全部可以执行

4、使用未带有权限的token跑所有接口,全部不可以执行

5、找到有横向越权问题的接口,整理并反馈给开发

 

java 横向越权 横向越权安全测试_java 横向越权_03

 

身为一个测试人员,在新需求有新增接口的情况下,思考的不仅是新增功能的实现,还有接口性能和安全,如果提前测试,就可以减少更多线上问题反馈。

例:新增一个删除资产功能

功能:能正常删除、批量删除,数据库,存储对应资产均被删除

性能:批量100,200,300等梯度删除

安全:使用一个账号的token执行删除另一个账号的资产是否成功

 

出现问题:使用一个账号的token执行删除另一个账号的资产成功

解决方法,前端在执行删除操作时传入userid,后端通过token和userid作比对