简介: 越权一般分为水平越权和垂直越权,水平越权是指相同权限的不同用户可以互相访 问;垂直越权是指使用权限低的用户可以访问权限较高的用户。
- 水平越权测试方法主要是看能否通过A用户的操作影响B用户。
- 垂直越权测试方法的基本思路是低权限用户越权高权限用户的功能,比如普通用户可 使用管理员功能
漏洞挖掘:
1、看参数:类似id、uid、sid、userid等参数时,遍历参数内容
2、看参数值:涉及到账号名、手机号等内容时,遍历参数值
3、看场景:个人信息(查看、编辑)、单号(购物订单、保险单号、地址编号等等)、密码找回(手机号、邮箱找回)、时间(业务规定时间范围内)、密码修改、密码找回、密码找回(邮件链接)等
4、cookie、构造API接口(需积累)
修复建议:
严格校验访问权限的控制以及对访问角色进行权限检查
1、避免直接使用用户ID、用户名等易被猜测构造的参数进行敏感操作。
2、对敏感数据存在的接口和页面做cookie,ssid,token或者其它验证。
3、前后端同时对用户输入信息进行校验,双重验证机制。
案例1:
修改手机号,遍历用户的信息
案例2:
密码修改时,把uid值替换为admin,这样管理员密码就被修改了
案例3: 长度限制
注册时,邮箱长度有限制,超过部分会被删除。利用特性可在注册后获取指定的邮箱内容
案例4: 暴露的加解密接口
实验目的是获取管理员administrator权限,删除一个账号
输入错误邮箱时,会生成一个cookie
而这个密文所对应的明文在前端展示
验证前面猜测,把修改notification值为数据包中的其他密文,让其对密文进行解密
结果是:wiener:1641904315209
也就是用户名:时间戳
获取管理员权限需要构造cookie结构为 administrator:1641904315209 的密文
所以利用邮箱报错进行加密
但是密文多了一部分,需要去除掉
无效的内容是23位:Invalid email address: ,解密时去掉23位
如图明文内容就是我们想要的,然后把密文赋值给stay-logged-in字段,获取管理员权限