zoukankan      html  css  js  c++  java
  • 越权漏洞(Over Permission)

    概述

    • 漏洞描述:攻击者绕过权限认证对敏感内容或功能进行非授权访问。该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定,一旦权限验证不充分,就易致越权漏洞。
    • 问题类型:代码编程类
    • 风险等级:中
    • 解决方案:所有页面都要增加认证控制。

    漏洞原理

    水平越权

    攻击者尝试访问相同层级权限的用户数据。

    例如承运商A和承运商B,拥有相同的权限等级,只能看到该承运商下订单信息,但如果系统只验证了能访问订单的角色,而没有对订单角色做细分或者校验,导致承运商A能访问到属于承运商B下的订单,那么承运商A访问承运商B下订单的这种行为就叫做水平越权访问。

    8e3dc758728c6e14108291964fdf1b93.png

    垂直越权

    普通权限用户尝试访问高级别权限的用户数据。

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

    攻击方法

    通过隐藏URL

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

    直接对象引用

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

    多阶段功能

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

    静态文件

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

    平台配置错误

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

    越权测试

    前期交互

    1. 确认越权测试目标
    2. 确认越权测试范围
    3. 确认越权测试计划
    4. 确认越权测试初步方案

    信息收集

    • 梳理测试范围内所有涉及业务权限划分的功能。

    威胁建模

    • 分析信息收集结果做出越权测试的规划和可行性攻击方案。

    漏洞分析

    1. 找出可以实施越权测试的攻击点
    2. 挖掘系统一些潜在的漏洞
    3. 开发出相应的漏洞利用代码

    越权攻击

    • 使用已有的漏洞利用程序对目标系统进行渗透

    后渗透攻击

    • 寻找最具价值、影响最大、尝试安全保护的信息和资产进行攻击途径进行渗透

    测试报告

    • 渗透测试团队所获取的到各种有价值信息展示
    • 探测和挖掘出来的相关安全漏洞
    • 成功攻击的过程
    • 以及对业务造成的影响后果分析
    • 对系统中存在的脆弱环节、存在的安全问题给出修复建议

    防御手段

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

    越权漏洞案例详解

    环境信息:XAMPP环境下Pikachu靶场
    测试范围:查看用户信息、用户管理
    使用工具:FireFox,Burp suite

    渗透攻击:

    水平越权-查看用户信息
    1. 使用不同用户登陆查看URL地址
      cc562362c6d108f388a74ef8d54a8218.png
      e3002099eb3c0517ee28a4f63034b9a6.png
    2. 分析发现URL地址中仅有username不同
    3. 修改url地址中username发送给服务端查看响应
    4. 分析结果发现水平越权漏洞
    垂直越权-用户管理
    1. 使用管理员账号登陆截取创建用户请求并转发至repeater
      8ac6bf35cec8a9af1c87d188b964caeb.png
    2. 使用无创建用户权限的普通用户登陆用户cookie替换repeater中管理员创建用户cookie
    3. 发送请求查看响应观察结果
      fc51b7cd29923d77df25ac1e88e13540.png
    4. 发现垂直越权漏洞
      f8332a513c27266c5fc34f4bba5e6b9b.png

    后渗透攻击

    1. 垂直越权-恶意获取/篡改/删除用户信息

    修复建议

    水平越权
    1. 只判断了是否登录,没有判断是哪个用户
      81d4a27a37dad3b735fb088df379551b.png
    垂直越权
    1. 只验证了登录状态,没有验证级别
      955b9f498e18dc8493432c4a99c192e3.png
  • 相关阅读:
    grep命令
    Linux下tar.xz结尾的文件的解压方法
    const char*, char const*, char*const的区别
    "undefined reference to" 多种可能出现的问题解决方法
    Linux查找含有某字符串的所有文件
    Netbeans C++ unable to resolve identifier 无法解析标识符
    Linux 下编译C程序的全过程
    linux tar.gz zip 解压缩 压缩命令
    安装anaconda
    Mongodb数据迁移步骤
  • 原文地址:https://www.cnblogs.com/aquichita/p/13888443.html
Copyright © 2011-2022 走看看