攻击访问控制

1.一个应用程序可能通过使用HTTP Referer消息头实施访问控制,但它的正常行为并没有公开表露这一点。如何检测出这种缺陷?
  选择一系列你有权访问的重要应用程序功能。通过提交经过修改的Referer消息头或不带该消息头的请求访问以上每一项功能。如果应用程序拒绝这些请求,则说明它很可能易于受到攻击。然后,尝试通过另一个不具有相关权限的用户提出相同的请求,但每次提交原始的Referer消息头。如果应用程序现在接受这些请求,则说明应用程序肯定易于受到攻击。

2.登录一个应用程序后,被重定向到以下URL:
https://wahh-app.com/MyAccount.php?uid=1241126841
应用程序似乎向MyAccount.php页面提交一个用户标识符。已知的唯一标识符是自己的标识符。如何测试应用程序是否使用这个参数以不安全的方式实施访问控制?

  应测试以下测试(按效率排序):
  (1) 使用相同的语法格式将uid值修改为其他值。如果应用程序仍然返回你自己的账户资料,则说明应用程序可能不易于受到攻击。
  (2) 如果能够注册或以其他方式访问另一个用户账户,可以使用该账户登录以获得其他用户的uid值。然后使用自己的原始用户权限,并用这个新uid值替代自己的uid值;如果这时应用程序显示有关其他用户的敏感数据,则说明应用程序易于受到攻击。
  (3) 使用一段脚本从自己的uid获得数千个值,并确定(如果提交这些值)应用程序是否会返回任何其他用户的资料。
  (4) 使用一段脚本请求介于0和9999999999之间的随机uid值(在本示例中),并确定应用程序是否会返回任何其他用户的资料。

3.因特网上的一个Web应用程序通过检查用户的来源IP地址实施访问控制。为什么这种行为可能存在缺陷? 
  攻击者可以假冒其他用户的IP地址,虽然实际上要做到这一点可能极其困难。更重要的是,如果因特网上的多个终端用户位于同一Web代理服务器或NAT防火墙之后,则这些用户可能共享同一IP地址。
  在这种情况下,要使基于IP的访问控制发挥效率,一种方法是将其作为深层防御措施,以确保尝试访问管理功能的用户位于组织的内部网络中。当然,那些功能还应由强大的身份验证和会话处理机制进行保护。

4.某应用程序的唯一用途是为公众提供可搜索的信息仓库。该应用程序并未使用任何验证或会话管理机制。该应用程序应执行何种访问控制?
  该应用程序并未对访问权限进行任何水平或垂直划分,因此没有必要实施访问控制来区分不同的个体用户。
  即使所有用户均属于同一类别,应用程序仍然需要限制用户可以执行的操作。一个强健的解决方案是应用最低权限原则,以确保应用程序体系架构中的所有用户角色具有运行应用程序所需的最小权限。例如,如果用户只需要对数据的读取访问权限,则应用程序应使用一个低权限账户(仅具有对相关表的只读权限)来访问数据库。

5.在浏览一个应用程序的过程中遇到几个应防止未授权访问的敏感资源,它们的文件扩展名为.xls。这种情况为何应立即引起注意?
  这些文件为Excel电子表格,它们属于静态资源,应用程序无法对其实施任何访问控制(如通过动态脚本)。应用程序可能会通过其他方法(如Web服务器层)来保护这些资源,但通常情况下并非如此。应立即检查是否可以不经验证而访问这些资源。

你可能感兴趣的:(Web前端经验之谈)