越权漏洞
越权漏洞 (Broken Access Control),危害大、范围广,常被 OWASP 列为十大安全隐患之首。
注意和无权限访问区别开来
- 水平越权:相同权限不同用户之间访问
- 测试方法:A、B 账户同一权限,看 A 账号行为是否会影响 B 账号
- 垂直越权:低权限账户访问高权限账户才有的能力
- 测试方法:看普通账户是否能使用管理员权限
水平越权漏洞复现
使用 Pikachu 平台,在 Over Permission > 水平越权 实现中,登录 lucy 的账号,然后“点击查看个人信息”,用 Burp 拦截,把 username
改为 kobe,既可以看到请求返回了 kobe 的个人信息:
垂直越权漏洞复现
首先使用 Admin 账号登录,发现添加账户的地址是:http://YOUR_IP_ADDRESS/vul/overpermission/op2/op2_admin_edit.php
,
我们登录低权限账号 pikachu,然后访问该地址,就可以越权添加新用户:
另外一种方式,先登录 Admin 账号,拿到「添加用户」的数据请求,然后将请求中的 Cookie 替换为低等级的 Pikachu 的 Cookie,这种方式也能够越权:
防止越权
1️⃣ 前后端同时对用户输入进行校验
2️⃣ 关键操作前要校验用户身份
3️⃣ 敏感操作前可以要求用户输入密码 or 验证码,防止 CSRF 攻击
4️⃣ 在 Cookie、Session 中加入不可预期的 ID
5️⃣ 对敏感信息进行特殊处理,比如 ID 列做加密,防止攻击者枚举
6️⃣ 不要相信前端的输入