某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

  • 客户端主题(翻译)

    • 客户端主题
    • 跨站脚本(XSS)

    • 跨站请求伪造(CSRF)

    • 跨域资源共享(CORS)

    • 点击劫持

    • 基于DOM的漏洞

    • WebSockets

      • WebSockets安全漏洞测试
        • WebSockets
        • 操纵WebSocket流量
          • 拦截和修改WebSocket消息
          • 重放并生成新的WebSocket消息
          • 操纵WebSocket连接
        • WebSockets安全漏洞
          • 操纵WebSocket消息以利用漏洞
          • 操纵WebSocket握手以利用漏洞
          • 使用跨站点WebSockets来利用漏洞
        • 如何建立安全的WebSocket连接
      • 什么是WebSockets
      • 跨站点WebSockets劫持
  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

  • 实验室做题记录

  • BurpSuite及官方实验室
  • 客户端主题(翻译)
  • WebSockets
carsaid
2023-10-11
目录

WebSockets安全漏洞测试

翻译

原文:https://portswigger.net/web-security/websockets

- name: 翻译
  desc: 原文:https://portswigger.net/web-security/websockets
  bgColor: '#F0DFB1'
  textColor: 'green'
1
2
3
4

# 0WebSockets安全漏洞测试

在本节中,我们将介绍如何操作 WebSocket 消息和连接,描述 WebSocket 可能产生的安全漏洞类型,并提供一些利用 WebSocket 漏洞的示例。

# 1WebSockets

WebSockets 广泛应用于现代 Web 应用程序。它们通过 HTTP 启动,并提供具有 双向异步通信 的长期连接。

WebSocket 可用于各种目的,包括执行用户操作和传输敏感信息。实际上,常规 HTTP 中出现的任何 Web 安全漏洞也可能出现在 WebSockets 通信中。

学习更多

什么是WebSockets? (opens new window)

Not Found Image

实验室

如果您已经熟悉基于 WebSockets 漏洞背后的基本概念,并且只想在一些实际的、易受攻击的目标上练习和利用它们,那么您可以从下面的链接访问本主题中的所有实验室。

View all WebSockets labs >> (opens new window)

# 2操纵WebSocket流量

查找 WebSocket 安全漏洞通常涉及 - 以应用程序不期望的方式操作它们。你可以使用 Burp Suite 来执行此操作。

你可以使用 Burp Suite 来:

  • 拦截和修改WebSocket消息。
  • 重放并生成新的WebSocket消息。
  • 操纵WebSocket连接。

# 2.1拦截和修改WebSocket消息

你可以使用 Burp Proxy 拦截和修改 WebSocket 消息,如下所示:

  • 打开Burp的浏览器。
  • 浏览到使用 WebSocket 的应用程序功能。你可以通过使用该功能,并在 Burp Proxy 的 WebSockets 历史记录选项卡里查找出现在其中的条目,来确定该应用程序是否正在使用 WebSocket。
  • 在 Burp Proxy 的 “interception” 选项卡中,确保已打开拦截。
  • 当从浏览器或服务器发送 WebSocket 消息时,它将显示在 “Intercept” 选项卡中,以供你查看或修改。按 “Forward” 按钮可以转发消息。

笔记

你可以配置是在 Burp 代理中截获客户端到服务器还是服务器到客户端的消息。该功能可以在 “Settings” 对话框的 “WebSocket interception rules (opens new window)” 一栏中进行设置。

(((译者加:在 2023 版本的 BurpSuite 中,点击右上角“小齿轮Settings” --> “Tools” --> “Proxy” --> “WebSocket interception rules”就可以找到该设置)))

# 2.2重放并生成新的WebSocket消息

除了实时拦截和修改 WebSocket 消息之外,你还可以重放单个消息并生成新消息。你可以使用 Burp Repeater 来执行此操作:

  • 进入 Burp Proxy,在 “WebSockets history” 或 “Intercept” 选项卡中选择一条消息,然后从上下文菜单中选择 “Send to Repeater”。
  • 在 Burp Repeater 中,你现在可以编辑所选择的消息,并反复发送。
  • 你可以输入一条新消息,然后将其发送到客户端或服务器。
  • 在 Burp Repeater 的 “History” 面板中,你可以查看通过 WebSocket 连接来传输消息的历史记录。这包括你在 Burp Repeater 中生成的消息,以及浏览器或服务器通过同一连接生成的消息。
  • 如果要编辑和重新发送历史面板中的任何消息,可以选中消息并从上下文菜单中选择 “Edit and resend” 来实现。

# 2.3操纵WebSocket连接

除了操纵 WebSocket 消息外,有时还需要操纵建立连接的WebSocket握手 (opens new window)。

可能需要操纵 WebSocket 握手的各种情况:

  • 它可以使你获得更多的攻击面。
  • 某些攻击可能会导致你的连接中断,因此你需要建立新的连接。
  • 原始握手请求中的令牌 或 其他数据可能已经过期,需要更新。

你可以使用 Burp Repeater 来操纵 WebSocket 握手:

  • 如前所述 (opens new window),向 Burp Repeater 转发 WebSocket 消息。
  • 在 Burp Repeater 中,单击 WebSocket URL 旁边的铅笔图标。这将打开一个向导,允许你附加到现有连接的WebSocket、克隆已连接的 WebSocket、或重新连接到已断开连接的 WebSocket。
  • 如果你选择克隆已连接的 WebSocket 或重新连接到已断开连接的 WebSocket,则向导会显示 WebSocket 握手请求的完整详细信息,你可以在执行握手之前,根据需要对其进行编辑。
  • 当你单击 “Connect” 时,Burp 将尝试执行所配置的握手并显示结果。如果成功建立了新的 WebSocket 连接,你可以使用它在 Burp Repeater 中发送新消息。

# 3WebSockets安全漏洞

原则上来讲,几乎任何 Web 安全漏洞都可能在 WebSockets 中出现:

  • 用户所提供的输入,在传输到服务器上时,可能会以不安全的方式进行处理,从而导致 SQL注入 或 XML外部实体注入等漏洞。
  • 一些通过 WebSockets 的盲性漏洞,也许只能使用带外(OAST)技术 (opens new window)来检测。
  • 如果攻击者控制的数据通过 WebSocket 传输给其他应用程序用户,则可能导致 XSS 或其他客户端漏洞。

# 3.1操纵WebSocket消息以利用漏洞

大多数影响 WebSocket 的基于输入的漏洞,都可以通过篡改 WebSocket 消息的内容 (opens new window)来发现和利用。

例如,假设聊天应用程序使用 WebSocket 在浏览器和服务器之间发送聊天消息。当用户键入聊天消息时,将会向服务器发送如下所示的 WebSocket 消息:

{"message":"Hello Carlos"}
1

消息的内容将(再次通过 WebSocket)传输给另一个聊天用户,并在用户的浏览器中呈现,如下所示:

<td>Hello Carlos</td>
1

在这种情况下,如果没有其他输入处理或防御措施,攻击者可以通过提交以下 WebSocket 消息来执行 XSS 攻击概念验证:

{"message":"<img src=1 onerror='alert(1)'>"}
1

实验室-学徒

操纵WebSocket消息以利用漏洞 >>

- name: 实验室-学徒
  desc: 操纵WebSocket消息以利用漏洞 >>
  avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
  link: https://portswigger.net/web-security/websockets/lab-manipulating-messages-to-exploit-vulnerabilities
  bgColor: '#001350'
  textColor: '#39d50c'
1
2
3
4
5
6

# 3.2操纵WebSocket握手以利用漏洞

某些 WebSocket 漏洞只能通过操纵 WebSocket 握手 (opens new window)来发现和利用。这些漏洞往往涉及设计缺陷,例如:

  • 对执行安全决策的 HTTP 标头进行错误的信任,例如X-Forwarded-For标头。
  • 会话处理机制中的缺陷,因为处理 WebSocket 消息的会话上下文 通常由握手消息的会话上下文确定。
  • 由应用程序使用的自定义 HTTP 标头引入的攻击面。

实验室-从业者

操纵WebSocket握手以利用漏洞 >>

- name: 实验室-从业者
  desc: 操纵WebSocket握手以利用漏洞 >>
  avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
  link: https://portswigger.net/web-security/websockets/lab-manipulating-handshake-to-exploit-vulnerabilities
  bgColor: '#001350'
  textColor: '#4cc1ff'
1
2
3
4
5
6

# 3.3使用跨站点WebSockets来利用漏洞

当攻击者从其控制的网站建立跨域 WebSocket 连接时,会出现一些 WebSocket 安全漏洞。这被称为跨站点 WebSocket 劫持 (opens new window)攻击,它涉及利用 WebSocket 握手上的跨站请求伪造(CSRF) (opens new window)漏洞。这种攻击通常会产生严重的影响,其允许攻击者代表受害用户执行特权操作,或捕获受害用户有权访问的敏感数据。

学习更多

跨站点WebSockets劫持 (opens new window)

# 4如何建立安全的WebSocket连接

若想最大限度地降低 WebSockets 出现安全漏洞的风险,请遵循以下准则:

  • 使用wss://协议(基于 TLS 的 WebSockets)。
  • 对 WebSockets 端点的 URL 进行硬编码,当然了,不要将用户可控制的数据合并到此 URL 中。
  • 针对 WebSocket 握手消息实施 CSRF 保护,避免跨站点 WebSocket 劫持漏洞。
  • 在两个方向上,将 WebSocket 接收的数据都视为不可信。在服务器端和客户端安全地处理数据,以防止基于输入的漏洞,例如 SQL 注入和跨站脚本。
编辑 (opens new window)
等待翻译
什么是WebSockets

← 等待翻译 什么是WebSockets→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式