会话劫持(又名 cookie 劫持或 cookie side-jacking)是一种网络攻击,攻击者接管合法用户的计算机会话以获取其会话 ID,然后在任意数量的网络服务上充当该用户。 这种类型的攻击对应用程序安全是有害的,因为它允许攻击者以合法用户的名义获得对受保护帐户(及其中存储的数据)的未授权访问。

本文将探讨您需要了解的有关会话劫持的所有信息,包括

  • 什么是会话劫持?
  • 会话劫持是如何工作的?
  • 会话劫持的类型有哪些?
  • 会话劫持与会话欺骗有何不同?
  • 会话劫持的风险和后果是什么?
  • 会话劫持的例子有哪些?
  • 如何防止会话劫持?

什么是会话劫持?

每次用户通过 HTTP 连接访问网站或应用程序时,该服务都会在打开通信线路并提供访问权限之前对用户进行身份验证(例如,通过用户名和密码)。 但是,HTTP 连接本身是“无状态的”,这意味着用户执行的每个操作都是独立查看的。 因此,如果我们仅依赖 HTTP,用户将不得不为他们执行的每个操作或查看的页面重新验证自己。

会议解决了这一挑战。 一旦用户登录,就会在托管网站或应用程序的服务器上创建一个会话,然后作为初始身份验证的参考。 本质上,只要会话在服务器上保持打开状态,用户就可以保持身份验证。 用户可以通过注销服务来结束会话,或者某些服务会在预定的不活动时间后结束会话。

大多数服务通过发布一个会话 ID、一串数字和存储在网站临时会话 cookie、URL 或隐藏字段中的字母来创建这些会话。 在某些情况下,这些会话 ID 会被加密,但情况并非总是如此。 在许多情况下,这些会话 ID 基于可预测的信息,例如用户的 IP 地址。

当攻击者获得对用户会话 ID 的未授权访问权限时,就会发生会话劫持,这使他们可以假设该用户的在线身份。 这样做时,攻击者可以伪装成合法用户,获取信息,并以假冒身份采取行动。

会话劫持是如何工作的?

当攻击者获得对用户会话 ID 的未授权访问权限时,会话劫持就开始了。 攻击者通常通过窃取用户的会话 cookie(因此也称为 cookie 劫持)或诱使用户单击包含预测会话 ID 的恶意链接(下文将详细介绍)来获得此访问权限。

一旦攻击者获得会话 ID 并且用户已登录服务,攻击者便可以接管会话。 他们通过将合法用户的会话 ID 应用到他们的浏览器来做到这一点,这会诱使服务认为攻击者是参与同一会话的合法用户。

在此伪装下,攻击者随后可以伪装成合法用户并访问任何信息或执行用户有权执行的任何操作。 在用户进行单点登录 (SSO) 的情况下,攻击者可以使用这种方法获得对任意数量应用程序的未授权访问权限,从而严重损害全面的应用程序安全性。

会话劫持有哪些类型?

深入研究会话劫持的确切工作原理揭示了进行此类攻击的多种方法。 会话劫持的类型包括:

1)跨站脚本(XSS)

跨站点脚本 (XSS) 是最大的风险之一,也是最流行的会话劫持方法。 当攻击者在目标服务器或应用程序中发现漏洞并通过将客户端脚本注入网页来利用时,就会发生 XSS。 然后该页面加载了此恶意代码,但在用户方面一切看起来都是合法的,因为它仍然来自受信任的服务器。 一旦加载了恶意代码,攻击者就会获得窃取用户会话 ID 的权限。

攻击者可能会在 XSS 攻击中发送指向受信任网站的链接,但会修改 HTTP 查询参数。 一旦用户单击此链接,攻击者就可以访问他们的会话 ID,或者在某些情况下,该链接甚至可以将该信息直接发送给攻击者。 在这种情况下,攻击者通常会使用 URL 缩短器来隐藏 URL,从而隐藏链接中的任何可疑内容。

2) 会话侧劫持又名会话嗅探

会话侧劫持,也称为会话嗅探,是一种更为活跃的劫持攻击类型。 在这种情况下,攻击者将使用 Wireshark 或 Kismet 等数据包嗅探来监控网络流量并在身份验证后窃取会话 cookie。 当服务器仅加密身份验证页面而不加密会话中的其他页面时,用户最容易受到此类攻击。 因此,攻击者可以在整个会话过程中在未加密的页面上获得认证后的会话 ID。

重要的是,攻击者需要访问用户网络才能执行此类攻击,这意味着会话侧劫持通常发生在不安全的 WiFi 网络或公共网络上。

3)会话固定

当攻击者可以设置用户的会话 ID 时,就会发生会话固定。

这种类型的攻击需要目标网站中存在允许通过 URL 或表单设置会话 ID 的漏洞。 在这种情况下,攻击者可以代表用户设置会话 ID,然后通过向用户发送包含会话 ID 的网络钓鱼 URL 或在虚假登录表单中设置该 ID 来让用户相应地登录。

在任何一种情况下,合法用户都会登录网站并使用攻击者固定(因此已知)的会话 ID 进行身份验证。 用户登录后,攻击者也可以获取会话 ID。

4) 可预测的会话 ID 和暴力破解

许多网站都遵循发布会话 ID 的模式,在某些情况下,它可能就像将其设为用户的 IP 地址一样简单。 在这些情况下,攻击者可以监视发出的会话 ID 以确定模式。 如果他们可以这样做,那么他们就可以轻松地预测特定用户的有效会话 ID 可能是什么样子,并生成该会话 ID 以供自己使用。

同样,如果攻击者获得对会话 ID 设置列表的访问权限并一遍又一遍地尝试直到成功,则可能会发生暴力攻击。 如果生成 ID 的模式是可预测的,他们通常会有这样一个列表。 在这种情况下,不同之处在于他们可能无法预测特定用户的 ID,因此他们需要从列表中尝试不同的 ID,直到找到匹配项。

5) 浏览器中的人(又名中间人攻击或恶意软件)

浏览器中的人攻击,也称为中间人或恶意软件攻击,首先要求攻击者用恶意软件感染用户的计算机。

一旦安装了恶意软件并且用户登录到网站,攻击者就可以充当中间人并拦截信息、修改用户在现场执行的操作或冒充该用户执行其他操作——所有这些都是在用户不知情的情况下进行的 . 由于此类攻击源自合法用户的实际设备,因此很难在此类攻击中检测到任何违反应用程序安全的行为。

通过这种对用户设备的访问,攻击者还可以直接进入浏览器上用户的临时本地存储文件夹(也称为“cookie jar”),然后获取他们想要的任何 cookie 的会话 ID。

会话劫持与会话欺骗有何不同?

会话劫持和会话欺骗在很多方面都很相似,但它们根本不是同一类攻击。 这两种攻击之间最显着的区别是会话劫持发生在合法用户登录到良好的 Web 会话时。 相反,会话欺骗发生在攻击者冒充用户启动新的 Web 会话时(这意味着用户当时不必登录)。

这种差异最大的体现就是对合法用户的体验。 在会话劫持的情况下,攻击者中断会话可能导致网站或应用程序行为异常,甚至对受害者造成崩溃。 同时,由于用户在会话欺骗攻击期间没有主动登录,他们不会在下一个会话中遇到任何“副作用”。

会话劫持的风险和后果是什么?

成功的会话劫持实例使攻击者能够做目标用户可以做的任何事情。 这会以各种方式给应用程序安全带来重大风险,尤其是在启动货币交易、访问受保护数据或通过 SSO 获得对其他系统的未授权访问时。

会话劫持的一些最显着的风险包括:

  • 货币盗窃:攻击者获得了代表用户进行金融交易的能力。 这可能涉及从银行账户转账或使用保存的付款信息进行购买。
  • 身份盗窃:攻击者未经授权访问保存在帐户中的敏感个人信息,他们可以使用这些信息在被黑网站/应用程序的范围之外窃取受害者的身份。
  • 数据盗窃:攻击者可以窃取应用程序中存储的任何类型的敏感个人或组织数据,并使用该信息来伤害受害者或组织(例如,在勒索的情况下)或追求他们的议程(例如,在销售的情况下) 受保护的、具有潜在竞争性的信息或知识产权)。
  • 通过 SSO 访问其他系统:如果启用 SSO,攻击者还可以获得对其他系统的未授权访问,进一步分散会话劫持攻击的潜在风险。 这种风险对于组织来说尤为重要,其中许多组织现在都为员工启用了 SSO。 最终,这意味着即使是具有更强大的身份验证协议和更不可预测的会话 cookie 的高度受保护的系统,例如那些包含财务或客户信息的系统,也可能只受到整个系统中最薄弱环节的保护。

会话劫持的例子有哪些?

几个引人注目的示例准确说明了会话劫持攻击可能导致的情况。 一些最著名的例子包括:

1)“变焦轰炸”

当 COVID-19 大流行来袭时,世界变得数字化,学校、工作和社交活动都通过 Zoom 等视频会议应用程序进行。 没过多久,这些视频会议就成了会话劫持的热门受害者,甚至赢得了“Zoom-bombing”的称号。

在几个值得注意的实例中,攻击者参与了会话劫持以加入私人视频会话。 报道最多的事件包括攻击者通过大喊脏话、仇恨语言和分享色情图片来让自己出名。 作为回应,像 Zoom 这样的公司发布了更强大的隐私保护措施,例如会议密码和等候室,以便会议主持人可以手动接纳客人。

2) Mozilla Firefox“Firesheep”扩展

2010 年,Mozilla Firefox 发布了一个名为 Firesheep 的浏览器扩展,它为在公共、未加密的 Wifi 网络上使用该浏览器的人打开了一个漏洞。 具体来说,Firesheep 扩展使攻击者可以轻松地从添加到浏览器首选项的任何网站窃取这些用户的会话 cookie。 最终,许多网站通过要求 HTTP 安全 (HTTPS) 连接来响应以防止此会话劫持风险。

3)松弛

2019 年,漏洞赏金平台的一名研究人员在 Slack 中发现了一个漏洞,该漏洞允许攻击者强制用户进行虚假会话重定向,然后窃取他们的会话 cookie,最终使攻击者能够访问 Slack 内共享的任何数据(对于许多组织而言,这最终导致 很多)。 Slack 迅速做出响应,并在研究人员发现漏洞后的 24 小时内修复了该漏洞。

4)GitLab

2017 年,一名安全研究人员在 GitLab 中发现了一个漏洞,用户的会话令牌直接在 URL 中可用。 深入挖掘后,研究人员发现 GitLab 还使用永不过期的持久会话令牌,这意味着一旦攻击者获得一个会话令牌,他们就可以使用它而无需担心过期。

这种公开曝光和持久令牌的组合带来了严重的风险,通过暴力攻击的会话劫持使用户面临各种严重的攻击。 GitLab 最终通过更改其使用和存储这些令牌的方式修复了该漏洞。

如何防止会话劫持?

会话劫持仍然是首要的网络安全威胁,但有多种方法可以保护您的组织及其用户免受此类攻击。 最好的结果来自同时使用多种(如果不是全部)这些方法来提供多道保护防线。

1)使用HTTPS

确保您的团队使用的网站和应用程序(尤其是那些属于 SSO 世界的网站和应用程序)需要在所有地方使用 HTTPS——甚至超出初始登录页面——以确保在每个阶段都完全安全的会话。 您还应该让它们遵守对所有内容使用 SSL/TLS 加密的标准,包括共享会话密钥。

此级别的加密是保护会话密钥可见性的第一道防线。 最后,您应该设置一个标准来锁定从客户端脚本访问 cookie 以防止 XSS 攻击。

2) 依赖 web 框架进行会话 cookie 管理

生成的会话 cookie 越长、越多越好,因为这会使它们更难预测或猜测,从而提供针对暴力攻击的保护。 实现这种真正随机性的最佳方法是使用 Web 框架来生成和管理会话 cookie,而不是自己创建一个系统。

3)认证后更改会话密钥

防止会话固定攻击的最佳方法是在登录时进行身份验证后立即更改会话密钥。

在登录后更改密钥使得即使攻击者知道原始密钥,他们也不知道将在用户的其余会话中使用的密钥。 这种方法意味着即使攻击者向用户发送网络钓鱼链接并且用户确实使用该链接登录,攻击者也无法使用生成的密钥执行任何操作。

4) 引入额外的身份验证区域

在初始登录和生成的会话 cookie 之外添加新的身份验证区域也可以提供另一层保护。

例如,您可能会查看用户的 IP 地址以确定它是否与之前登录的位置相匹配,或者监控每个用户的整体行为以更好地识别任何异常情况。 然而,这种方法并不完美:它可能会标记非问题,例如用户经常四处走动的情况,并且它可能会遗漏实际问题,例如攻击者从与用户通常使用的相同 IP 地址登录的情况。

5)引入入侵检测系统(IDS)和入侵保护系统(IPS)

IDS 和 IPS 将站点流量与已知攻击签名的数据库进行比较。 如果这些系统找到匹配项,它们将阻止该流量并提醒系统所有者。 这些系统的安装可能既困难又昂贵,但提供了针对会话劫持的强大防御层。

6) 时间框用户会话和/或需要自动注销

最后,考虑制定管理用户结束会话方式的策略。 两种流行的方法包括对用户会话进行时间限制,特别是在一段时间不活动之后,以及在窗口关闭时要求自动注销。 这两种方法都有助于最大限度地减少特定会话 cookie 保持活动状态的时间。 同样,一旦用户注销,您应该确保会话 cookie 自动从他们的设备中删除,以避免任何额外的暴露。

什么是会话劫持及其工作原理?相关推荐

  1. 什么是会话劫持?如何预防?

    会话是Internet通讯的重要组成部分,大部分都是基于Web的.会话劫持是通过利用活动的Web会话进行的Web攻击.会话是两个计算机系统之间进行通信的时间段.Web服务器需要身份验证,因为通过网站进 ...

  2. 浅谈会话劫持原理及实践

    <监视你的一举一动> ---浅谈会话劫持原理及实践 前言 通常,大家所说的入侵,都是针对一台主机,在获得管理员权限后,就很是得意:其实,真正的入侵是占领整个内部网络.针对内部网络的攻击方法 ...

  3. 会话(cookie的使用,路径和Session的工作原理,使用)

    1.状态管理----Cookie 1.1 为什么需要状态管理 HTTP协议是无状态的,不能保存每次提交的信息,即当服务器返回与请求相对应的应答之后,这次事务的所有信息就丢掉了. 如果用户发来一个新的请 ...

  4. SSClone非ARP会话劫持原理分析

    作者:robur 来源:CSNA网络分析论坛 前两天买的过期杂志上看到的一款软件,刚开始还没注意,后来就恨自己杂志买晚了.(今年3月份的<黑客防线>) 那个神奇的软件,就像我标题上说的,叫 ...

  5. SSClone非ARP会话劫持原理分析-ARP原理

    前两天买的过期杂志上看到的一款软件,刚开始还没注意,后来就恨自己杂志买晚了.(今年3月份的<黑客(利用系统安全漏洞对网络进行攻击破坏或窃取资料的人)防线>) 那个神奇的软件,就像我标题上说 ...

  6. 防火墙工作原理和详解会话表

    防火墙工作原理 防火墙工作原理: 本质上是查看会话表. 报文到达防火墙,先查看是否会有会话表匹配. 如果有会话表匹配,则匹配会话表转发. 如果没有匹配会话表,看是否能够创建会话表. 前提是必须是首包才 ...

  7. TCP会话劫持原理与测试

    阅读本文之前建议了解 TCP 三次握手过程以及 TCP 的包头详细信息. 由于 TCP 协议并没有对 TCP 的传输包进行验证,所以在我们知道一个 TCP 连接中的 seq 和 ack 的信息后就可以 ...

  8. php会话劫持,TCP会话劫持原理与测试

    阅读本文之前建议了解 TCP 三次握手过程以及 TCP 的包头详细信息. 由于 TCP 协议并没有对 TCP 的传输包进行验证,所以在我们知道一个 TCP 连接中的 seq 和 ack 的信息后就可以 ...

  9. 会话劫持漏洞小结——cookie劫持的方式、属性、原理、危害及防御

    会话劫持 概念 会话劫持(Session hijacking)是一种通过获取用户Session ID后,使用该Session ID登录目标账号的攻击方法,此时攻击者实际上是使用了目标账户的有效Sess ...

最新文章

  1. iexpress全力打造“免检”***
  2. java对象的访问定位_2、JVM-Java对象的创建、对象结构、对象访问定位-Go语言中文社区...
  3. admin密码对应的MD5值,16位和32位,admin解密自己留着方便.
  4. python 字符串前面加 f
  5. STM32F103C8T6学习笔记_时钟
  6. Git错误non-fast-forward的解决方法
  7. 服务器上如何安装两个php网站,服务器安装两个php版本吗
  8. Java注释Override、Deprecated、SuppressWarnings详解
  9. c++ static 关键字用法
  10. 新电脑怎么分盘_【磁盘分区教程】如何给电脑进行分区?
  11. python写标准api_用python写api
  12. 那些年我们清除过的浮动
  13. 2008秋季-计算机软件基础-0922课堂用例(2)
  14. 多元非线性方程组 matlab,基于matlab的非线性方程组求解的方法
  15. 图书馆管理系统(使用数据库实现)
  16. 半同步/半反应堆模型以及简单实现(一)
  17. Leetcode 1144
  18. 机器学习-朴素贝叶斯-垃圾邮件
  19. Qt样式表使用总结3,我常用的选色方法
  20. 瑞星宣布个人杀毒产品免费 行业告别收费时代

热门文章

  1. 记录windows上的VSCODE 远程到linux编译代码机器上的一些问题
  2. matlab估计arma garch 条件均值和方差模型
  3. GQZL: 计算机网络(三)
  4. python简单的倒计时
  5. linux下查看java 占用cpu使用情况
  6. Bloom filters in Python
  7. web切图怎么做_web前端人员自行切图教程
  8. 一卡通系统人员培训方案
  9. 转行做产品经理,应该具备那些条件?
  10. 如何分辨on-policy和off-policy