(1)无论应用程序使用何种标识符(文档ID、账号、订单引用等)指定用户所请求的资源,应尝试找到没有权限访问的资源的标识符。
(2)如果有可能生成一系列紧密相连的标识符(例如,通过创建几个新文档或订单),则可以使用我们在第7章描述的针对会话令牌的技巧,尝试在应用程序生成的标识符中查找任何可预测的序列。
(3)如果无法生成任何新标识符,那么只能通过分析已经发现的标识符,或纯粹使用猜测方法查找标识符。如果标识符为GUID形式,则基于猜测的尝试将无法取得成功。但是,如果标识符是一个相对较小的数字,则可以尝试使用与它相差不大的另一个数字,或数字位相同的另一个随机数字。
(4)如果发现访问控制并不完善,而且资源标识符可以预测,可以发动自动攻击获取应用程序的敏感资源和信息。可以使用在第14章描述的技巧,设计一次定制自动攻击,以获取所需的数据。
如果“账户信息”页面在显示用户个人资料的同时还显示他的用户名和密码,则这种漏洞可能会造成灾难性的后果。虽然输入的密码在屏幕上隐藏显示,但它仍然以明文形式传送至浏览器。因此,通常可以快速遍历账户标识符的所有可能值范围,从而获得所有用户,包括管理员的登录证书。图8-5说明了如何使用Burp Intruder成功执行这种攻击。
图8-5 一次通过访问控制漏洞获取用户名和密码的成功攻击