跳到主要内容

越权漏洞

越权漏洞 (Broken Access Control),危害大、范围广,常被 OWASP 列为十大安全隐患之首。

注意和无权限访问区别开来

  1. 水平越权:相同权限不同用户之间访问
    1. 测试方法:A、B 账户同一权限,看 A 账号行为是否会影响 B 账号
  2. 垂直越权:低权限账户访问高权限账户才有的能力
    1. 测试方法:看普通账户是否能使用管理员权限

水平越权漏洞复现

使用 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️⃣ 不要相信前端的输入