会话管理缺陷(Session Management Flaws)
主题:
1.会话劫持
概念:
因为HTTP是没有状态的,所以就有了会话管理的概念。服务器通过会话管理,来记忆用户的状态。在用户访问WEB站点的过程中,会话管理对每个用户
都有一个唯一的标识(SessionID),而每当新用户访问网站时,服务器上也会有一个相应的标号来记录。而且该用户所有后续的页面请求都会包含此标号,
这样WEB应用程序就能识别此用户,并记录其状态。服务器端的会话标识可能是通过Cookie、URL(URL重写)、隐藏域的方式保存在浏览器中。通常情况,
会话标识(SessionID)是加密保存在Cookie中的,随着HTTP请求头发送,并在每次加载页面时传递给服务器。
攻击者的目的是通过窃取并使用合法用户的会话标识(SessionID)伪装成合法用户,即会话劫持。
方法:
会话劫持最常用的方法就是窃取用户会话标识。会话劫持是在合法用户的会话ID被使用之后对其进行占用。例如:对会话的处理不当会使得攻击者可能猜
到相邻的会话标识。 跨站脚本攻击(XSS),网络嗅探(Net Sniffer),本地木马等。
另一种对会话管理进行攻击的方式叫做“会话定位(Session Fixation)”。原理是合法用户使用了攻击者为其准备好的会话ID进行身份认证,如此攻击者就
可以随意通过此会话ID劫持用户会话。而解决Session Fixation的办法是在登录完成后,重写SessionID。这样,攻击者准备好的会话ID对于已经完成身份认证
的用户就无效了。因为对于正常用户来说,已经是另一个会话(SessionID不同)了。
防御:
对会话标识号的分配(不能让攻击者轻易猜到绘画标识)
加强对会话标识号的保护
设置合适的会话标识有效时间
2.认证Cookie欺骗
如果验证cookie正确,一些应用程序会允许一个用户自动登录到他们的网站。如果能够获得生成cookie的算法,有时cookie的值是可以猜到的。
有时候cookie可能是通过跨站攻击截获的。
课程目标:了解身份验证cookie的方式,并指导您学习突破这种身份验证cookie的方法。
3.会话定位(Session Fixation)
服务器通过每个用户唯一的SessionID来确认其合法性。若用户已登录,并且授权他不必重新验证授权时,当他重新登录应用系统时,他的SessionID依然
是被认为合法的。在一些程序中,可能会在GET请求中传递SessionID,这就是攻击的起点。一个攻击者可以用一个选定的SessionID给受害人发送一个超链接。
例如有一个准备好的邮件,看起来像是一个从应用程序管理员发来的官方邮件。若受害者点击了这个链接,并且该受害者以攻击者指定的ID登录了系统,
那么攻击者可以不经授权直接使用与受害者相同的ID访问该页面。
参考:
《WEB安全测试》、《白帽子讲Web安全》、《WebGoat v2.2技术文档》、《OWASP Testing Guide v3.0》
注: