简单记录一下
水平越权
也称为横向越权,指
相同权限下不同的用户可以互相访问
,比如A和B是同权限的用户,如果A能看到理论上只有B能看到的信息,或者A能执行理论上只有B能执行的操作,这就是水平越权啦。
题目演示
打开题目看看,是一个登录界面
点击一下提示,发现给了三个账户的登录信息,随机登录其中一个账户并点击查看个人信息
可以发现Url可以传参username,尝试修改变成其他的用户名,发现可以成功回显,成功越权
原因
只判断了是否登录 并没有用session来校验
查看function.php中的check_op_login函数 只是判断了[‘op’][‘username’]呵[‘op’][‘password’]是否被定义
查看登录页面的代码 发现所有用户名登录后都会定义[‘op’][‘username’]和[‘op’][‘password’]
而在在查看信息的界面 只判断了是否登录 并没有判断是哪个用户
垂直越权
又称纵向越权,指使用权限低的用户可以访问到权限较高的用户。比如A用户权限比B低,如果A可以访问理论上只有B才能访问的资源,或者执行理论上B才能执行的操作,那就是垂直越权啦。
题目演示
pikachu用户只有查看权限
超级用户admin拥有修改用户信息和添加用户的权限
用admin用户添加一个新用户test1,注意这时的url
打开另一个浏览器 登录普通用户pikachu后尝试直接复制admin用户的添加用户网址来进行添加用户 (未授权访问)
以普通用户pikachu添加完用户后发现返回了登录的界面,但重新登录用户查看用户信息可以发现刚刚添加的用户已经添加成功
登录pikachu用户并抓包,抓取cookie值
登录管理员账号添加用户test3,并一同抓包,将原先的cookie值替换成pikachu用户的cookie值,重发包
可以看到有两个test3,一个是admin用户添加的test3用户,一个是重放admin的数据包添加的
原因
op2_login.php页面 对于登陆用户的level进行了判断 判断他们进入哪个页面
op2_user.php 却只判断了是否登陆
function中的check_op2_login函数 与check_op1_login一样 只是判断了是否定义变量
op2_admin.php 在这个页面进行了登陆和level级别的判断 所以登陆pikachu用户后访问admin.php页面会直接跳转到登陆页面
添加用户的页面 op2_admin_edit.php 只验证了用户是否登录,如果没登录就跳转到登录页面,没有验证用户权限等级,但前端显示添加用户是权限等级为1的用户才能执行的操作,因此这里有垂直越权漏洞。
参考文章:
https://blog.csdn.net/elephantxiang/article/details/113480084
https://blog.csdn.net/qq_37077262/article/details/103025989