欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

WEB安全之:越权访问

程序员文章站 2022-03-14 20:21:45
...

郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。

越权访问(Broken Access Control,简称BAC)是一种很常见的逻辑安全漏洞。可以理解为服务器端对客户提出的数据操作请求过分信任,一个用户一般只能够对自己本身的信息进行增删改查,然而由于后台开发人员的疏忽,没有在信息进行增删改查时候进行用户判断,忽略了对该用户操作权限的判定,导致攻击账号拥有了其他账户的增删改查功能。

越权分类:水平越权和垂直越权

1 越权简介

1.1 实验平台

zhuifengshaonianhanlu/pikachu: 一个好玩的Web安全-漏洞测试平台 (github.com)

1.2 越权漏洞的危害

  • 越权查询
  • 越权删除
  • 越权修改
  • 越权增加

1.3 产生越权漏洞的原因

  1. 通过隐藏 URL 实现权限管理

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

  2. 直接引用对象实现权限管理

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

  3. 多阶段功能

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

  4. 静态文件

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

  5. 平台配置错误

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

2 水平越权

访问与攻击者拥有相同权限的用户资源

1. 在越权模块水平越权登陆 lucy 用户,并点击查看个人信息,此时可以查看到 lucy 用户的相关信息。
http://bac.lab.com/vul/overpermission/op1/op1_mem.php?username=lucy&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF

2. 通过 BurpSuit对浏览器数据包进行抓包,并再次点击查看个人信息。BurpSuit 阻断的信息请求包中,修改以下请求头中的 lucy 为 lili,最后发送修改后的请求包
GET /vul/overpermission/op1/op1_mem.php?username=lucy&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF HTTP/1.1

3. 结果显示的是用户 lili 的信息。即此网站存在水平越权漏洞。

3 垂直越权

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

1. 在越权模块垂直越权标签下使用 admin 用户登陆,并点击添加用户,复制此时的浏览器 URL 链接
http://bac.lab.com/vul/overpermission/op2/op2_admin_edit.php

2. 退出 admin 用户登陆或使用另一个浏览器登陆普通用户(pikachu),登陆成功后,创建新标签打开前面复制的添加用户的 URL 链接。

3. 引时浏览器能正常加载添加用户界面,在此页面上尝试创建新用户,创建完成后提交时页面返回到登陆界面,使用 admin 用户登陆,发现之前在普通用户权限下创建的用户被顺利创建。

4. 结果,该页面存在垂直越权漏洞。

4 预防越权

  1. 前后端同时对用户输入信息进行校验,双重验证机制
  2. 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
  3. 特别敏感操作可以让用户再次输入密码或其他的验证信息。
  4. 可以从用户的加密认证 cookie 中获取当前用户 id,防止攻击者对其修改。或在 session、cookie 中加入不可预测、不可猜解的 user 信息。
  5. 直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
  6. 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤