WEB 漏洞之逻辑越权漏洞详解

2022-05-16 15:17:33 浏览数 (1)

1

免责声明

本号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如有侵权请联系小编处理。

2

内容速览

越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。

该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限才能访问到的页面或数据。

在实际的代码审计中,这种漏洞往往很难通过工具进行自动化监测,因此在实际应用中危害很大。

目前存在着两种越权操作类型,横向越权操作(水平越权)和纵向越权操作(垂直越权),水平越权指的是攻击者越权访问到了一个和他拥有相同权限用户的资源,而垂直越权指的是一个低到高权限的过程.

在判断时,先分析网站的业务逻辑,通过拦截数据包进行业务逻辑判断,判断数据包中的各个参数的意义

  • 请求中不存在参数,只用Cookie进行身份验证,不可越权
  • 请求中存在参数,并且参数中的某些值可能是辨别信息的唯一值(ID,employeeID,departmentID等),则可能有越权
水平越权

用户在权限相同级别下的组,可以进行越权访问、修改、删除数据

测试方法:
  • 查看每个页面的链接,抓包分析其参数的意义,找到与用户名有关的参数,修改成其他用户,重放,主要通过看看能否通过A用户操作影响到B用户
垂直越权

用户可以在不同权限的组下,进行高级别的权限访问

测试方法:
  • 看看低权限用户是否能越权使用高权限用户的功能,比如普通用户可以使用管理员的功能或者访问管理员才能访问的页面。

漏洞产生原理:

代码逻辑问题
  • 代码接受前台传输的数据,选择性的显示用户对应权限的页面内容,并没有真实的对用户对应的权限进行严格的规定
数据库问题
  • 不同权限的用户都存在在数据库的一个表中,用类似于usertype这样的字段来区别权限,通过修改usertype的参数,来进行越权访问

越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定

修复防御方案

  • 前后端同时对用户输入信息进行校验,双重验证机制
  • 调用功能前验证用户是否有权限调用相关功能
  • 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
  • 直接对象引用的加密资源 ID,防止攻击者枚举 ID,敏感数据特殊化处理
  • 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤

演示案例:

Pikachu-本地越权演示(漏洞成因)
水平越权

更改username lucy——>kobe

垂直越权
前提条件:获取的添加用户的数据包

1.普通用户前端有操作界面可以抓取数据包

2.通过网站源码本地搭建自己去模拟抓取

3.盲猜

管理员账户:admin

普通用户:pikachu

管理员账户界面

普通账户界面

抓取admin添加账户的包,并且更改为普通用户pikachu的phpsession

放包后,在刷新普通用户界面,出现添加账户

查看代码

数据库表

0 人点赞