1. 水平越权
1.查看提示信息,提供了3个普通用户
2. 登陆其中一个账户,并查看个人信息
3.根据url 可以看出有用户名信息,尝试在URL中更改其他账户名,发现查看到其他用户的信息
4.再次点击查看个人信息按钮,信息更改为已登陆的用户的信息
5. 查看源代码发现第27行username 的值是直接从url 获取的,并未校验username 是否为当前登陆用户
源代码位置:\pikachu\vul\overpermission
6. 尝试更改代码防御水平越权,校验当前用户
7. 再次尝试更改url 参数,发现无法实现水平越权,防御成功
2. 垂直越权
- 管理员账户下涉及到以下操作
查看: http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin.php
添加: http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin_edit.php
删除: http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin.php?id=37
- 登陆普通用户,在浏览器中输入查看用户功能的URL,提示需要登录,不存在越权漏洞
- 输入添加用户的URL,页面跳转到添加用户,尝试添加新用户,点击创建后提示登陆用户
- 使用普通用户查询信息,发现了新增加的用户
- 将删除用户的url 粘贴到浏览器,可以先用admin 账户确认一个已存在的id,然后登陆普通用户,尝试删除用户,删除用户失败,不存在越权漏洞
http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin.php?id=37
- 查看删除用户源代码
如果没有检测到登陆,或者登陆level 不是管理员就跳转到登陆页面,无法执行删除操作
7. 添加用户源代码只检查了是否登陆,将这个部分代码修改为和删除用户的设置一样就可以防御此漏洞