越权漏洞的产生
越权漏洞是Web应用程序中一种常见的安全漏洞。它的威胁在于一个账户即可控制全站用户数据。当然这些数据仅限于存在漏洞功能对应的数据。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定。所以测试越权就是和开发人员拼细心的过程。
越权漏洞的分类:
- 水平越权:两个不同的公司A和B,通过修改请求,公司A可以任意修改B公司的员工、部门、考勤等信息
- 垂直越权:同一个公司不同权限的管理员A和B,通过修改请求,管理员A可以修改不在他管辖范围内的员工的部门、考勤、工资等信息
如何查找是否存在越权漏洞:
在与服务器进行数据交互时客户端携带着标识用户的身份的cookie,当服务端的session与cookie中的身份匹配成功后,才能允许该用户进行相关操作(cookie和session的关系-->一弹、二弹)。除了cookie之外,在请求中可能会带一些参数,细览下可能存在辨别信息的唯一值,来进行测试。这里要说一点,传输的参数并不一定在请求参数中,也有可能存在链接等位置。当拦截一个请求后分析是否有参数:
- 请求中不存在参数,只用cookie进行身份验证,不可越权;
- 请求中存在参数,并且参数中的某些值可能是辨别信息的唯一值(如employeeID、departmentID、ID等),可能存在越权;越权的原因是参数中的employeeID没有判断是否是cookie中用户所管辖的员工ID
越权漏洞之账户权限提升:
实训名称
逻辑漏洞之越权
实训环境
本次实训的实验环境如下:
- windows
- PHPStudy集成环境
实训目的
了解逻辑漏洞的原理。
实验前期准备工作
步骤1. 搭建实验环境。
步骤2. 源码的安装,源码下载的地址:https://sourceforge.net/projects/fiyo-cms/
步骤3. 测试网站是否可以正常访问
步骤4:登陆后台界面。输入用户:admin,密码:admin,进行登录。
fiyocms一共设置了5个用户组,等级为1-5,权限依次降低,而只有等级1-3有权限登录后台,不同等级具有不同的权限。
super administrator = 1 administrator = 2 editor = 3 publisher = 4 member = 5
步骤5:漏洞产生的原因:漏洞文件在 dapur\apps\app_user\sys_user.php ,可以看到程序在对用户账户进行操作前,并没有对用户的身份进行确认或者说没有对用户的权限进行检查,这也是越权漏洞产生的原因。
攻击演示如下:
步骤1::用admin账号登录到后台,点击users—new user
步骤2:新建一个会员账号
步骤3:点击root账号,然后使用burpsuite进行抓包改包
把原本的等级5修改成等级 1
继续Forward,页面上会出现用户成功保存
步骤4:登出admin账号,并刷新网站,再次使用admin账号进行登录
步骤5:再次查看users—user list,会有奇迹发生,原本的会员账号,变成了超级管理员了