用户
搜索
  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 88 天

    连续签到: 3 天

    [LV.6]常住居民II

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    9

    主题

    33

    帖子

    1578

    魔法币
    收听
    0
    粉丝
    4
    注册时间
    2018-6-2

    i春秋签约作者

    发表于 2020-10-5 14:20:12 24492
    本帖最后由 dll_s 于 2020-10-5 14:20 编辑

    0x31 访问控制与越权漏洞(二)

    前一节的实验内容主要为垂直访问控制机制的突破,这一节来介绍一下另外几种访问机制越权,先简单回顾一下访问控制的几种机制

    • 垂直的访问控制:不同权限的用户可以访问不同的应用程序功能,例如管理员和普通用户
    • 水平的访问控制:将资源的访问限制为特定的用户,例如银行应用程序将允许用户从自己的帐户查看交易和付款,但不允许查看其他用户的帐户
    • 内容相关的访问控制:根据应用程序的状态或用户与它的交互来限制对功能和资源的访问,此种控制可以防止用户以错误的顺序执行操作。例如,零售网站可能阻止用户在付款后修改购物车的内容。

    实验内容

    实验一:通过请求参数控制用户角色

    实验要求:提交 carlos用户的API key

    实验提示:可以通过请求参数冒充其他用户以实现越权访问用户界面

    img

    实验非常简单,使用提供的账户登录网站,然后使用Burp分析一下通信流

    img

    根据提示猜测可以通过更改/my-account?id=wiener中id参数的值以访问其他用户的账号面板

    发送到Repeater,更改ID值,在响应报文中搜寻API key

    img

    将该值提交即可完成实验

    实验二:通过不可预测的请求参数控制用户角色

    实验要求:提交 carlos用户的API key

    实验提示:可以通过请求参数冒充其他用户以实现越权访问用户界面,但用户ID是算法生成的,需要找到carlos的GUID

    img

    同样使用账户登录,之后配置使用crawl工具,对网页内容进行爬取以寻找GUID

    img

    成功爬取到了GUID值

    img

    发送到Repeater模块,逐个修改尝试以发现正确的carlos账户API key值

    img

    提交key值以完成实验

    实验三:请求参数控制用户角色,重定向响应中存在信息泄露

    实验要求:提交 carlos用户的API key

    实验提示:该应用程序在重定向响应中泄露了敏感信息,以此造成了访问控制漏洞

    img

    首先登录账号,根据实验提示观察响应报文

    发送到Repeater模块,将id参数值更改为carlos发送请求

    检索响应报文,可以看到API key已经被泄露了

    img

    提交key值完成实验

    实验四:请求参数控制用户角色,密码泄露

    实验要求:获取administrator账户的密码并使用其删除carlos账户

    实验提示:此实验为用户提供了一个“Account Details”页面,其中包含了隐藏的账户密码

    img

    登录账号,根据提示访问“Account Details”并分析响应报文,可以看到这里泄露了账号原来的密码

    img

    同样发送到Repeater模块,修改id参数值,获取administrator账号的密码

    img

    使用账号密码登录,访问管理员界面删除carlos账户完成实验

    实验五:不安全的直接对象引用(IDOR)

    实验要求:找到carlos账户的密码并使用其账号进行登录

    实验提示:此应用程序将用户聊天日志存储于服务器的文件系统中,并可以通过静态URL进行检索

    img

    insecure direct object references (IDOR)不安全的直接对象引用是越权漏洞的一种,简单的讲在应用程序未对用户输入进行验证(包括对用户权限的检查),并且提供了对该对象的直接访问,即存在IDOR漏洞

    通过实验可以更为简洁的理解

    开启Burp监听,进入实验,观察各页面功能,进入Live chat点击View transcript可以下载聊天文件,

    img

    发送到Intruder爆破一下,配置payload为Numbers

    img

    大概也只有1和2两个有效payload(这表明已经出现了IDOR)

    img

    在Repeater模块中尝试下/download-transcript/1.txt

    img

    可以发现泄露了carlos的账号密码

    使用账户密码登录完成实验

    关于如何防范IDOR漏洞出现:

    • 复杂并随机化对象的标识符,例如使用GUID
    • 尽量减少在标识符中透露对象相关的信息
    • 验证所有对对象引用的授权(关键措施)

    实验六:在多步过程中的某一步骤中缺失验证

    实验要求:使用提供的wiener账号进行登录,并利用访问控制漏洞提升为管理员权限

    实验提示:该网站的管理员面板中的多步骤验证存在缺陷

    img

    首先使用administrator账户登录,来到Admin panel页面,在这个页面可以对用户的权限进行管理

    点击Upgrade user,出现了一步验证操作,点击Yes进行确认

    img

    观察一下通信流

    img

    根据提示,我们将第二部的验证操作发送到Repeater模块

    退出账号,使用wiener账号进行登录,并将其session cookie替换到Repeater中的请求

    别忘了修改提权账号名

    img

    点击发送,完成实验

    这一实验存在的多步骤验证缺陷就是仅在第一步进行了验证,而忽略了第二步

    img

    实验七:基于Referer头的访问控制

    实验要求:使用提供的wiener账号进行登录,并利用访问控制漏洞提升为管理员权限

    实验提示:这个实验基于Referer头对某些管理功能进行访问控制

    img

    使用Burp监听,登录账号,观察通信流

    img

    根据提示,实验是使用Referer头进行访问控制,所以我们只需保障在发送提权请求时的Referer头与administrator账号一致即可

    将这一请求发送到Repeater模块用于后续操作

    退出使用wiener账号进行登录

    将session复制到Repeater中的请求中,并更改username参数值为wiener进行提权

    img

    发送请求完成实验

    总结


    到这里,BP学院中关于访问控制与越权漏洞的内容就结束了,还是覆盖到了许多的漏洞场景,但是缺少了一些比如购物、支付类网站的实验场景有点可惜,不然会更贴近于真实的Web应用场景。

    关于如何防范访问控制漏洞:

    • 不要尝试依靠混淆来进行访问控制
    • 除非资源是公共可访问的,否则应默认拒绝访问
    • 尽量使用覆盖整个应用程序范围的机制来强制实行访问控制
    • 在代码级别,强制开发人员声明每个资源允许的访问权限,并默认拒绝访问权限
    • 对应用的访问控制机制进行彻底的审计和测试,以确保它们按照设计正常工作
    tql
    使用道具 举报 回复
    感谢分享
    剑未佩妥出门已是江湖
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册