• 【web-攻击访问控制】(5.2.1)攻击访问控制:不同用户账户进行测试、测试多阶段过程


    目录

    攻击访问控制

    简介:

    过程:

    1.1、不同用户账户进行测试

    简述:

    1.2、测试多阶段过程

    简述:

    过程:


    攻击访问控制

    简介:

    在开始探在应用程序、检测任何实际的访问控制漏洞之前,应该花一些时间检查解析应用程序过程中得到的结果, 了解应用程序在访问控制方面的实际要求, 从而决定探查哪些内容可以得到令人满意的结果


    过程:

    1、应用程序的功能是否允许用户访问属于他们的特定数据

    2、是否存在各种级别的用户, 如管理员、贵宾、普通用户等, 是否允许他们访问不同的功能

    3、管理员是否使用内置在相同应用程序中、以对其进行配置和监控的功能

    4、发现应用程序的哪些功能或数据资源最有可能帮助攻击者提升当前的权限

    5、是否存在任何标识符(以POST消息体的URL参数的方式)表明正使用某一参数追踪访问控制级别

    1.1、不同用户账户进行测试

    简述:

    1、测试应用程序的访问控制效率的最简单、最有效的方法, 是使用其他账户访问应用程序。就可以确定, 可由一个账户合法访问的资源和功能是否能够由另一个账户非法访问。

    如果应用程序隔离用户对不同级别的功能的访问, 可以首先使用一个权限较高的账户确定所有可用的功能, 然后使用权限较低的账户访问这些功能, 测试能否垂直提升权限

    如果应用程序隔离用户对不同资源的访问, 可以使用两个不同的用户级账户测试访问控制是否有效, 或者是否可以水平提升权限。例如, 找到一名用户可以合法访问, 但另一名用户不能合法访问的文档, 然后尝试使用第二名用户的账户访问该文档——通过请求相关URL或在第二名用户的会话中提交同样的POST参数

    2、对应用程序的访问控制进行彻底测试需要耗费大量时间。但一些工具可以自动完成某些工作, 以提高测试速度和可靠性,就可以将主要精力放在那些需要人类智能才能高效执行的任务上。使用Bp, 可以使用两个不同的用户账户来解析应用程序的内容。再比较每一名用户访问的内容到底存在哪些差异

    将Bp配置为代理服务器并禁用拦截, 以一个用户账户浏览应用程序的所有内容。如果要测试垂立访问控制, 则使用权限较高的账户

    检查Bp的站点地图的内容, 确保已确定要测试的所有功能。然后使用上下文菜单选择“比较站点地图”功能

    选择第二个进行比较的站点地图, 可以从Bp状态文件中加载该地图,或让Bp在新会话中动态重新请求第一个站点地图。要测试同一类型的用户之间的水平访问控制, 只需加载以前保存的、已将应用程序映射为其他用户的状态文件。要测试垂直访问控制, 最好是以低权限用户身份重新请求高权限站点地图, 因为这样可确保完全涵盖相关的功能

    要在不同的会话中重新请求第一个站点地图, 需要使用低权限用户会话的详细资料配置Bp的会话处理功能(如通过记录一个登录宏或提供要在请求中使用的特定cookie)

    Bp中的深色部分是站点地图之间差异分析的结果

    3、仅仅通过分析站点地图树及查行项目之间的差异数量,并不足以评估应用程序访问控制的效率。出现两个完全相同的响应可能存在漏洞(如在披露敏感信息的管理功能中), 也可能不会导致任何危险(如在不受保护的搜索功能中)。两个不同的响应也有可能表示存在漏洞(如在每次访问都返回不同内容的管理功能中),也可能不会导致任何危险(如在显示当前登录用户的用户信息的页面中)。综上,在确定访问控制漏洞方面, 完全自动化的工具往往效率低下。使用Bp的"站点地图比较" 功能,可以尽可能自动完成确定漏洞的过程,以现成的格式获得所需的全部信息, 同时应用自己在应用程序功能方面的知识来确定任何具体的漏洞

    1.2、测试多阶段过程

    简述:

    1、在多阶段过程中, 要执行某个操作, 用户通常需要以正确的顺序提出多个请求, 应用程序则在用户提出请求的同时创建有关用户操作的状态。仅仅重新请求站点地图中的每一个项目, 井不能正确重复相关过程, 因此,由于访问控制以外的其他原因,尝试的操作可能会失败。

    2、以添加新应用程序用户的管理功能为例,该功能可能涉及步骤,包括加载用于添加用户的表单、提交包含新用户详细资料的表单、审查用户详细资料,确认添加操作。某些情况下,应用程序可能为会初始表单提供保护, 但没有为处理表单提交的页面或确认页面提供保护。整个过程可能包含大量请求(包括重定向),在以前阶段提交的参数将在以后通过客户端重新传送。因此, 这个过程的每一个步骤都需要单独进行测试, 以确认访问控制是否得到正确应用


    过程:

    1、在以多步骤方式执行某个操作, 需要从客户端向服务器提交几个不同的请求时, 应单独测试每一个请求, 以确定是否已对这些请求应用了访问控制。应确保测试每一个请求, 包括表单提交、重定向, 以及任何非参数化的请求

    2、尝试发现应用程序确定你是否到达特定阶段(通过合法的途径到达该阶段)的任何位置。尝试使用权限较低的账户到达该阶段,检测是否可以实施任何权限提升攻击。

    3、手动执行这种测试的一种方法,是在浏览器中多次完成受保护的多阶段过程, 并使用代理服务器将在不同请求中提供的会话令牌切换为权限较低的用户的令牌

    4、通过使用Bp的"浏览器中的请求” (request in browser)功能(提高效率)

    A、使用权限较高的账户遍历整个多阶段过程

    B、使用权限较低的账户(或根本不使用账户)登录应用程序

    C、在Bp的历史记录中, 找到权限较高的用户执行多步骤过程时提出的请求序列。对于序列中的每个请求, 选择"当前浏览器会话在浏览器中的请求" (request in browser in current browser session)上下文菜单项,将提供的URL粘贴到以权限较低的用户身份登录的浏览器中

    D、如果应用程序允许, 则使用浏览器以正常方式完成剩下的多阶段过程

    E、查看浏览器和代理服务器历史记录中的结果, 确定是否可以成功执行特权操作

    4、当对指定的请求选择Bp的“当前浏览器会话在浏览器中的请求“功能时, Bp会向你提供一个指定Bp内部Web服务器的唯一URL,然后将这个URL粘贴到浏览器的地址栏中。当你在浏览器中请求这个URL时, Bp将返回一个指向最初指定的URL的重定向。浏览器访问该重定向时, Bp将用最初指定的请求替换该请求, 同时保持Cookie消息头不变。如果正测试不同的用户帐户, 可以加快这个过程。以不同用户登录几个不同的浏览器, 并将上述URL粘贴到每个浏览器中, 看应用程序如何处理使用不同浏览器登录的用户的请求。(注意:由于同一浏览器通常会在不同窗口之间共享cookie,因此在执行这个测试时, 需要使用不同的浏览器,或安装在不同机器上的浏览器。)

    如果使用不同浏览器以不同用户身份访问应用程序,可以在Bp中创建供每个浏览器使用的不同代理监听器(需要在每个浏览器中更新代理服务器配置, 以指向相关监听器)。然后, 对于每个浏览器, 使用代理服务器历史记录中的上下文菜单打开新的历史记录窗口, 并将显示过滤器设置为仅显示相关代理监听器提出的请求。

  • 相关阅读:
    Golang抓包:实现网络数据包捕获与分析
    基于51单片机智能IC卡水表控制系统(仿真+源程序+全套资料)
    SaaSBase:什么是小店宝?
    Linux编程基础:1~6章实训编程题
    Java用fastjson转换JSON对象和字符串
    Unity记录几个5.x升级到2018问题
    ECFP及FCFP的计算过程
    【云原生】基于Kubernetes开发的阿里云ACK之可观测监控
    ASEMI肖特基二极管20V45参数,20V45尺寸,20V45大小
    10G传输分析仪SDH表TFN D450S参数详情
  • 原文地址:https://blog.csdn.net/qq_53079406/article/details/126383367