业务授权访问模块之越权漏洞
越权漏洞
- 越权漏洞就是指攻击者能够执行他原本没有权限执行的一些操作。
- 也就是“超越了你所拥有的权限,干了你本来不可能干的事儿”。
- 越权漏洞一般分为两种∶水平越权和垂直越权
水平越权
- 如果攻击者能够执行与自己同级别的其他用户能够执行的操作,这就存在水平越权漏洞。
垂直越权
- 如果攻击者能够执行某项功能,而他所属的角色并不具备该权限,这就存在垂直越权漏洞。
危害
- 1、导致用户敏感信息泄露
- 2、导致用户信息被恶意添加、修改或删除
漏洞原理
产生原因
- 主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。
- 开发者认为通过登录即可验证用户的身份,而对用户登录之后的操作不做进一步的权限验证,进而导致越权问题。
漏洞验证
- 通常情况下,我们使用一个web应用程序提供的功能时,流程如下。
- 如果在“验证权限”环节存在缺陷,那么便会导致越权。
测试
案例一:水平越权
- 通过水平越权漏洞实现查看其他用户的收货地址、联系方式等信息
测试方法
- 申请两个帐户,如A用户和B用户。
- 分别抓取A和B两个用户中的请求数据包,通过修改数据包中可能代表用户身份或产品序号等相关参数的值,
- 判断是否可通过修改A用户的数据来实现访问B用户的信息。
测试步骤
-
第一步 抓取a用户的个人信息
-
第二步 查看b用户的个人信息
-
第三步 修改id为a用户的
-
注意:可以对id字段进行遍历,进行查看存在的用户id
案例二:垂直越权 -
通过垂直越权漏洞实现普通用户变为管理用户
测试方法
- 一般在用户注册或修改密码等处抓取请求数据包,修改其中可能代表用户身份的参数,
- 看是否能越权注册成为管理用户或修改管理用户的密码。
测试步骤
第一步 登录低权限用户tom,进行修改密码
第二步 抓取tom修改密码的数据包
- 第三步 将用户名字段改为admin
- 第四步 使用admin和密码进行登录
防御方案
- 1、在前端验证用户的输入是否合规,在服务器端验证用户权限。
- 2、执行关键操作前必须验证用户身份,有多阶段、多步骤的业务流程每一步都需要验证用户身份。
- 3、对敏感参数信息进行加密处理,以防止攻击者对参数信息进行枚举。
摘抄
二十年后,让你感到失望的不会是你做过的事,
而会是你没做过的事,所以,请解开绳索,
驶离安全的港湾,扬帆起航吧。
去探索,去梦想,去发现!
—— 马克·吐温