越权漏洞

越权定义

越权访问(broken access control, BAC)是web应用程序中的常见漏洞,存在范围广、危害大等问题。

该漏洞是指应用在权限校验时,攻击者在获得低权限用户账号后,通过一些方式绕过权限检查,进而访问或操作其他用户或进行更高权限的操作(增、删、查、改)。因此,在实际中,这种代码很难通过工具进行自动化检测,危害影响很大。

目前,存在两种越权操作类型:

  • 水平越权:相同权限下不同用户可以相互访问
    • 测试方法:看看能否通过A用户的操作影响B用户(改别人id就能看到别人的信息) alt

垂直越权:使用权限低的用户可以访问到权限较高的用户

  • 看看低权限能否越权使用高权限用户的功能,比如:普通访问者使用管理员的功能。 alt

漏洞产生原因

  1. 通过隐藏url:实现访问控制的管理界面只有管理员才显示,普通用户看不到,通过URL实现访问控制,但URL泄露或被恶意猜测,也会导致越权攻击。

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

  3. 多阶段功能:比如修改密码,第一步验证用户身份信息后,成功后到第二步中,输入新密码,很多程序在这一步不再验证用户身份,导致恶意攻击者抓包或直接修改参数值。

  4. 静态文件:静态下载文件知道url后,可以进行批量下载。

  5. 平台配置错误:通过控件来限制用户的访问。但是,当配置错误时,就会出现越权访问。

越权测试过程

把握住传参就能把握住逻辑漏洞的命脉。

越权测试:登录用户时,正常更改或查看A的用户信息,然后抓取数据包,将传参ID改为其他用户,如果成功查看或修改了同权其他用户信息(水平越权)、影响高权限用户(垂直越权)。

方式:传参通过自己检测,通过爆破传参进行:

  • 通过修改get传参来进行越权
  • 通过修改post传参进行越权
  • 通过cookie传参来进行越权

防范措施

  1. 前后端同时对用户输入信息进行校验,双重验证机制
  2. 调用功能前验证用户是否有权限调用相关功能权限
  3. 从用户的加密cookie中获取当前用户id,防止攻击者对其修改,或者在session cookie中加入不可预测、不可猜测的user信息。
  4. 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
  5. 直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
  6. 永远不要相信用户的输入

参考网址

  1. https://zhuanlan.zhihu.com/p/130919069
  2. https://www.cnblogs.com/dummersoul/p/13475010.html