垂直越权

由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的URL或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。
image.png

概述

打开页面,来到垂直越权的页面处
image.png
这里使用的是后台管理登录用户表,上帝模式的数据库表如下:
image.png
我们用admin账号登录,密码:123456 去后台看看,我们有什么权限。 再用test账号登录看看,密码:abc123 大家多对比,用不同的账号进入后看到的效果。 pikachu pass: 000000

Admin登录后的结果

image.png

test账号登录后的结果

无法登录

pikachu账号登录的结果

image.pngimage.png

开脑洞

Admin与pikachu的登录后的页面信息有明确的不同之处,
pikachu:

http://192.168.182.147/vul/overpermission/op2/op2_user.php

admin:

http://192.168.182.147/vul/overpermission/op2/op2_admin.php

推测,页面不同,管理功能即不同,这个页面,如果在不登录的时候,是否也可以在外部进行某些功能的访问呢?

漏洞实践

经过测试,发现,管理员的用户添加功能:
http://192.168.182.147/vul/overpermission/op2/op2_admin_edit.php
在pikachu正常登录以后,直接在浏览区输入上面的地址,就可以直接访问到:
image.png
image.png
点击创建以后,页面产生了跳转,转入到了登录入口,我们以admin身份进去审视一下结果
image.png
发现系统增加了一个多的账号叫t001。

延伸
采用BS抓包,我们可以把这个包进行重放,自由修改。

源码分析
op2_login.php页面 对于登陆用户的level进行了判断 判断他们进入哪个页面
image.png
op2_user.php 只判断了是否登陆
image.png
function中的check_op2_login函数 只是判断了是否定义变量
image.png
op2_admin.php 在这个页面进行了登陆和level级别的判断,所以登陆pikachu用户后访问admin.php页面会直接跳转到登陆页面
image.png
添加用户的页面 op2_admin_edit.php 只判断了是否登陆 没有验证级别 所以存在越权

image.png

结论

  • 通过对垂直越权的讲解,我们对垂直越权有了认识和学习。我们需深刻的理解从高管理功能挖掘垂直越权漏洞。
  • 认真反思,类似的漏洞都是什么原因产生的。

image.png