渗透测试步骤

(1)确定应用程序的所有功能,找出可查看会话令牌的任何日志或监控功能。查明谁能够访问这种功能,例如管理员、任何通过验证的用户或匿名用户。请参阅第4章了解发现在主应用程序中没有建立直接链接的隐藏内容的技巧。

(2)确定应用程序使用URL中传送会话令牌的任何情况。可能应用程序通常以更加安全的方式传送令牌,但开发者在特定情况下使用URL来解决特殊难题。例如,Web应用程序与外部系统交互时通常会出现这种情况。

(3)如果应用程序在URL中传送会话令牌,尝试发现任何允许在其他用户查阅的页面中注入任意站外链接的应用程序功能,例如公告牌、站点反馈、问与答等功能。如果可以,向一个受控制的Web服务器提交链接,等待一段时间,看Referer日志中是否收到任何用户的会话令牌。

(4)如果截获到任何会话令牌,尝试通过正常使用应用程序,而不是用截获的令牌代替自己的令牌来劫持用户的会话。可以通过拦截服务器返回的下一个响应,并使用截获的cookie值添加自己的Set-Cookie消息头,以实现这一目的。在Burp中,可以应用一个Suite范围的配置,在所有指向目标应用程序的请求中设置一个特殊cookie,以便测试期间在不同的会话之间轻松切换。

(5)如果截获到大量令牌,并且通过劫持用户的会话可以访问他们的敏感数据(如个人资料、支付信息或用户密码),就能够使用第14章描述的自动技巧获得想要的、属于其他应用程序用户的数据。