会话ID对于恶意黑客而言是一种不错的选择。一旦攻击者获得了会话ID,他们就可以未经授权访问Web应用程序并完全模仿有效用户。通常,有三种获取有效会话ID的主要方法:

  • 猜测有效的会话ID(会话预测)
  • 创建一个有效的会话ID并欺骗用户使用它(会话固定)
  • 向用户获取有效的会话ID(会话劫持)

注意:某些来源将预测和修复视为不是单独的攻击类型,而是作为会话劫持的方法。

大多数方法集中于会话cookie,因为它们最常用于携带会话ID。但是,这些方法不限于cookie劫持,因为许多方法同样适用于HTTP请求的其他部分(例如自定义请求标头或请求主体)中发送的会话令牌。

会话预测

会话ID必须是唯一的,并且很难猜测。因此,在大多数情况下,会话ID只是很长的随机生成的数字。但是,并非每个开发人员都使用安全的,知名的会话管理库。有些人决定自己生成会话ID,但做得不太好。

通常,会话预测攻击是所有尝试根据此类ID的生成方式猜测有效会话ID的所有攻击。例如,开发人员可能决定使用base64编码的Epoch时间作为会话标识符。因此,有效的会话ID看起来像 MTU4MDMwMDE1OQ==。如果攻击者弄清楚了该算法,则他们可以通过尝试不同的Epoch并对其进行base64编码来尝试猜测有效的会话令牌。

暴力攻击也可以视为会话预测的一种形式。如果会话密钥很短并且Web服务器没有受到多次尝试的保护,则攻击者可能会一一尝试所有可能的值,直到获得可行的值为止。

会话固定

会话固定发生在攻击者生成尚未使用的有效会话ID,然后将其提供给用户之后,用户再使用该ID进行身份验证。攻击者必须首先弄清楚哪种会话ID格式有效,然后使用社交网络工程(例如网络钓鱼)或类似的攻击技术来诱骗用户单击登录链接并提供其凭据,从而将会话ID与帐户相关联。

要了解有关会话固定的更多信息,请查看我们的文章 什么是会话固定.

会话边防

术语 会话劫持 is used to describe 中间人 用来窃取会话的攻击(MITM)。攻击者侦听Web服务器与客户端之间的通信,并拦截有效的会话ID。

有许多会话侧面劫持技术依赖于不同的MITM攻击技术。在最简单的情况下,如果不对流量进行加密,则只需要一个简单的嗅探器即可在与客户端相同的本地网络中工作,从而监视网络流量中用户的连接和数据包嗅探。在公共Wi-Fi网络中,这尤其常见。

如果网站或网络应用程序使用专有的加密连接,则不会进行简单的会话嗅探,但是可能还会尝试其他技巧。要了解有关它们的更多信息,请参阅我们的文章 您需要了解的有关中间人攻击的所有信息.

跨站点脚本(XSS)

攻击者获取会话cookie的最有效方法之一就是使用XSS攻击。如果您的网站或Web应用程序具有XSS漏洞,则攻击者可能会欺骗您的用户。在这种情况下,受害者将访问在客户端浏览器中执行恶意JavaScript的页面。此类恶意代码访问会话cookie,然后将其发送到攻击者控制的服务器。

要了解有关跨站点脚本的更多信息,请查看我们的文章: 跨站点脚本(XSS) and XSS的类型.

其他方法

攻击者还可以使用其他方法来获取会话信息。例如,他们可能试图用诸如特洛伊木马的恶意软件感染用户计算机系统。例如, 浏览器中的人 攻击,其中会话标识符直接从用户的网络浏览器中窃取。

防御会话劫持和类似攻击

为了确保您的会话ID安全,请遵循以下规则:

  • 不要想办法自己生成会话。使用流行框架中可用的安全工具。
  • 在您的所有页面上(不仅是登录页面)强制使用HTTPS。例如使用 HSTS, 和 set the Secure flag for session cookies.
  • 用户登录后,更改会话ID。
  • 登出非活动用户并在一段时间后使会话ID无效。
  • Set the HttpOnly flag for session cookies.
  • 定期使用Acunetix等漏洞扫描程序扫描您的网站或Web应用程序,以发现潜在的跨站点脚本漏洞(以及更多)。

资源: //www.acunetix.com/blog/web-security-zone/session-hijacking/