描述:
    越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。
    该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定,一旦权限验证不充分,就易致越权漏洞。

    分类:
    越权访问漏洞主要分为水平越权,垂直越权。

    web安全-越权漏洞 - 图1

    水平越权:指攻击者尝试访问与其他拥有相同权限的用户的资源。例如,用户A和用户B属于同一角色,拥有相同的权限等级,他们能获取自己的私有的数据(数据A和数据B),但如果系统只验证了能访问数据的的角色,而没有对数据做细分或者校检,导致用户A能访问到用户B的数据B,那么导致用户A访问数据B的这种行为就叫做水平越权访问。
    web安全-越权漏洞 - 图2

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

    web安全-越权漏洞 - 图3

    漏洞产生原因:

    通常情况下,一个 Web 程序功能流程是登录 - 提交请求 - 验证权限 - 数据库查询 - 返回结果。如果验证权限不足,便会导致越权。常见的程序都会认为通过登录后即可验证用户的身份,从而不会做下一步验证,最后导致越权。

    1. 通过隐藏 URL
      实现控制访问有些程序的管理员的管理页面只有管理员才显示,普通用户看不到,利用 URL 实现访问控制,但 URL 泄露或被恶意攻击者猜到后,这会导致越权攻击。

    2. 直接对象引用
      这种通过修改一下参数就可以产生水平越权,例如查看用户信息页面 URL 后加上自己的 id 便可查看,当修改为他人的 ID 号时会返回他人的信息,便产生了水平越权。

    3. 多阶段功能
      多阶段功能是一个功能有多个阶段的实现。例如修改密码,可能第一步是验证用户身份信息,号码验证码类的。当验证成功后,跳到第二步,输入新密码,很多程序会在这一步不再验证用户身份,导致恶意攻击者抓包直接修改参数值,导致可修改任意用户密码。

    4. 静态文件
      很多网站的下载功能,一些被下载的静态文件,例如 pdf、word、xls 等,可能只有付费用户或会员可下载,但当这些文件的 URL 地址泄露后,导致任何人可下载,如果知道 URL 命名规则,则会便利服务器的收费文档进行批量下载。

    5. 平台配置错误
      一些程序会通过控件来限制用户的访问,例如后台地址,普通用户不属于管理员组,则不能访问。但当配置平台或配置控件错误时,就会出现越权访问。

    pikachu靶场
    水平越权:

    登录

    1. lucy/123456lili/123456kobe/123456

    看到get传参

    /op1_mem.php?username=lucy
    

    将lucy改为lili
    image.png
    这就是水平越权

    垂直越权

    登录管理员账号

    这里有两个用户admin/123456,pikachu/000000。admin是超级管理员
    

    打开 BurpSuite 抓包,然后添加一个用户
    web安全-越权漏洞 - 图5
    web安全-越权漏洞 - 图6把这个请求发送到 Repeater 中,然后退出管理员账号,重放这个数据包,这时候用户是会添加失败的,因为没有登录状态
    登录普通用户账号,取出当前账号的Cookie
    web安全-越权漏洞 - 图7用上图中的Cookie修改我们刚刚发送到 Repeater 中那个数据包的 Cookie,再重放这个数据包。这时候就添加了另一个用户,第一个是超级管理员添加的;另一个是普通用户重放超级管理员的数据包添加的。
    image.png

    后台没有判断发送这个数据包的用户权限,而是直接执行了