5.4 对访问控制的攻击方法
黑客在攻击应用程序的访问控制机制时,需要了解应用程序的功能是否允许用户访问他们的特定数据;找出是否存在各种级别的用户,如普通用户、会员、管理员等允许他们访问不同的功能;管理员是否能对应用程序进行配置和监控;发现应用程序的哪些功能或数据资源最有可能帮助攻击者提升当前的权限,才有可能找到对访问控制的攻击方法。
5.4.1 使用其他账户访问应用程序
使用其他账户访问应用程序是最简单、最有效的攻击访问控制机制的方法,但是对应用程序的访问控制机制进行彻底攻击需要耗费大量的时间和精力。通常,黑客使用某些工具帮助自己完成某些工作,以提高攻击的速度和可靠性。
借助Brup Suite,可以使用不同的两个用户账户来攻击应用程序内容,以比较不同账户访问的内容存在哪些差异,如图5-18所示。
图5-18 Brup Suite操作界面
5.4.2 直接访问服务器API端方法的请求
如果应用程序使用直接访问服务器API端方法的请求,正常情况下,使用上述技巧即可以确定这些方法中任何访问控制漏洞,但是,还应该查找是否存在其他未受正确保护的API。
使用一个众所周知的请求调用的Servlet为例:
POST / svc HTTP / 1.1 Accept-Encoding:gzip , delfate Host:wahh-app Content-Length:37 Servlet=com.ibm.ws.webcontainer.httpsession.IBMTrackerDebug
通过访问其他Servlet执行未授权操作来攻击应用程序。确定任何遵循JAVA命名约定(如get, set, add)或明确指定包结构(如com.XXXname.Classname)的参数,然后找到某个可用接口,或者在公共资源中查找,以确定其他任何可以访问的方法。
5.4.3 URL直接访问Web程序中的静态资源
如果受应用程序保护的静态资源最终可以通过指向资源文件本身的URL直接访问,这时应该进行攻击测试未授权用户是否可以直接请求这些URL。
遍历访问受保护静态资源的正常过程,获取用于最终访问该静态资源的URL示例,然后使用权限较低的用户账户利用以确定的URL直接访问该资源,最后如果攻击成功,总结受保护资源所使用的命名方案。之后可以设计一个自动攻击,获取有用的数据或内容。
5.4.4 利用HTTP平台级控制的漏洞进行入侵
虽然没有现成的办法用于发现应用程序的访问控制是否对HTTP实施了平台级控制,但是可以通过一些简单的方法来确定应用程序是否存在可以攻击的漏洞,具体步骤如下。
1 使用高权限账户,执行一些敏感操作的特权请求,如注册账户或者修改账户信息等操作。
2 如果HTTP方法被修改,应用程序是否仍然执行请求的操作,应测试的HTTP方法包括POST、GET、HEAD、任何无效的HTTP方法等。
3 如果应用程序执行任何使用与最初的方法不同的HTTP方法的请求,则应使用上述方法技巧,通过权限较低的账户对针对的这些请求实施的访问控制进行攻击。