ChatGPT-Next-Web漏洞利用分析(CVE-2023-49785)

news2024/12/25 9:29:28

1. 漏洞介绍

​ 日常网上冲浪,突然粗看以为是有关Chat-GPT的CVE披露出来了,但是仔细一看原来是ChatGPT-Next-Web的漏洞。漏洞描述大致如下:(如果有自己搭建了还没更新的速速修复升级防止被人利用,2.11.3已经出来了

NextChat,也称为 ChatGPT-Next-Web,是与 ChatGPT 一起使用的跨平台聊天用户界面。 2.11.2 及之前的版本容易受到服务器端请求伪造和跨站点脚本攻击的影响。2024年3月,互联网上披露CVE-2023-49785,攻击者可在无需登陆的情况下构造恶意请求造成SSRF,造成敏感信息泄漏等。

2. 漏洞分析

​ 定位到漏洞代码:app/api/cors/[...path]/route.ts

​ 也就是大致如下内容:

import { NextRequest, NextResponse } from "next/server";

async function handle(
  req: NextRequest,
  { params }: { params: { path: string[] } },
) {
  if (req.method === "OPTIONS") {
    return NextResponse.json({ body: "OK" }, { status: 200 });
  }

  const [protocol, ...subpath] = params.path;
  const targetUrl = `${protocol}://${subpath.join("/")}`;

  const method = req.headers.get("method") ?? undefined;
  const shouldNotHaveBody = ["get", "head"].includes(
    method?.toLowerCase() ?? "",
  );

  const fetchOptions: RequestInit = {
    headers: {
      authorization: req.headers.get("authorization") ?? "",
    },
    body: shouldNotHaveBody ? null : req.body,
    method,
    // @ts-ignore
    duplex: "half",
  };

  const fetchResult = await fetch(targetUrl, fetchOptions);

  console.log("[Any Proxy]", targetUrl, {
    status: fetchResult.status,
    statusText: fetchResult.statusText,
  });

  return fetchResult;
}

​ 在这段代码中,这里没有做任何的安全防护。params.path 是通过请求参数传入的,这意味着用户可以控制请求的路径部分。这个路径部分会被直接拼接到一个新的 URL 中,并在后续的代码中被用于发起请求,以绕过访问控制、访问内部系统或执行其他攻击。

​ 举个例子,当你访问 /api/cors/https/baidu.com 时,请求将被路由到这段代码中。在这里,protocol 将被设置为 httpssubpath 将被设置为 ['baidu.com']。然后,这两部分将被拼接成 https://baidu.com,作为目标 URL。接下来,根据代码的逻辑,将会使用 fetch 发起一个对 https://baidu.com 的请求。这个请求的方法和请求体等信息将根据原始请求中的信息进行配置,然后将响应返回给客户端。

​ 我们验证一下,果然存在。

image-20240315211855871

​ 至于披露着所说的反射型XSS,则完全是因为这里是用的fetch发包,fetch 方法也支持 data 协议,且对后续的参数没有过滤限制导致的,所以我们通过参数拼接如下即可实现:

/api/cors/data:text%2fhtml;base64,PHNjcmlwdD5hbGVydCgiQ1ZFLTIwMjMtNDk3ODUiKTwvc2NyaXB0Pg==%23

image-20240315213402621

3. 总结

​ 没想到一个64.5k star 的项目之前居然对SSRF一点防护都没有做。

/api/cors 端点作为一个开放代理的设计,允许未经身份验证的用户通过它发送任意的 HTTP 请求。这个端点似乎是为了支持将客户端聊天数据保存到 WebDAV 服务器而添加的。

帮助网安学习,全套资料S信免费领取:
① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

​ 我查看了最新的源代码:

image-20240315215107502

​ 具体的官方修复思路如下:

  1. **移除开放代理端点:**最终修复方案中,移除了原始的开放代理端点/api/cors
  2. **替换为特定用途的端点:**取而代之的是添加了两个新的端点/api/upstash/api/webdav,这些端点具有特定的用途,分别用于与 Upstash 和 WebDAV 服务进行集成。这种替换的方式限制了端点的功能范围,并提供了更专门化的功能,有助于减少系统的安全风险。
  3. 增加安全验证和限制:
    1. /api/upstash
      1. **限制目标URL:**修复代码首先通过检查请求参数中的endpoint来限制目标URL。它要求目标URL必须是以.upstash.io结尾的有效URL,这样就限制了请求只能发送到特定的Upstash服务。
      2. **限制请求方法:**修复代码还对请求中的操作类型进行了限制。它只允许getset两种操作类型的请求,如果请求的操作类型不是这两种之一,则会返回403 Forbidden响应。
    2. /api/webdav
      1. 请求方法限制: 修复代码只允许特定的HTTP请求方法,包括MKCOLGETPUT。对于其他不允许的请求方法,如POST等,会返回403 Forbidden响应。
      2. 目标路径验证: 修复代码对于不同的请求方法,会对目标路径进行不同的验证:
        • 对于MKCOL请求,只允许请求目标路径为指定的folder,如果请求的目标路径不是以指定的folder结尾,则返回403 Forbidden响应。
        • 对于GET请求,只允许请求目标路径为指定的fileName,如果请求的目标路径不是以指定的fileName结尾,则返回403 Forbidden响应。
        • 对于PUT请求,同样只允许请求目标路径为指定的fileName,如果请求的目标路径不是以指定的fileName结尾,则返回403 Forbidden响应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1648593.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL—多表设计与查询

目录 多表设计 ▐ 数据库设计范式 ▐ 多对一 关系表设计 ▐ 多对多 关系表设计 关联查询 ▐ 概述 ▐ 内连接 ○ 思考? ▐ 左外连接 ▐ 右外连接 多表设计 ▐ 数据库设计范式 • 第一范式:确保每列保持原子性 ( 列不可再分解 ) 例如联系方式…

Mac数据恢复软件快速比较:适用于Macbook的10佳恢复软件

数据丢失导致无数个人和组织每天损失大量资金。更糟糕的是,某些文件具有货币价值和情感意义,使它们不可替代,并使数据恢复成为唯一可行的选择。最好的消息是Mac用户可以从各种数据恢复程序中进行选择。为了帮助您尽可能快速、轻松地恢复丢失的…

弹性云服务器是什么,为何如此受欢迎

云计算作为当下炙手可热的技术领域,已然成为现代企业不可或缺的核心能力。云服务器作为云计算的基石之一,在这个数字化时代发挥着至关重要的作用。而弹性云服务器,作为云服务器的一种演进形式,更是备受瞩目。 弹性云服务器&#…

求知导刊-知网收录//旬刊//如何投稿?

求知导刊-知网收录//旬刊//如何投稿? 《求知导刊》栏目设置 理论探索、课堂教学、教改课改、教育管理、教师教育、教学案例、学科进展、学术论坛。 《求知导刊》征稿对象: 全国科技工作者、教育工作者,各级科技与教育部门的领导者以及管理…

鸿蒙内核源码分析(时间管理篇) | 谁是内核基本时间单位

时间概念太重要了,在鸿蒙内核又是如何管理和使用时间的呢? 时间管理以系统时钟 g_sysClock 为基础,给应用程序提供所有和时间有关的服务。 用户以秒、毫秒为单位计时.操作系统以Tick为单位计时,这个认识很重要. 每秒的tick大小很大程度上决…

AI绘画成果展(第一期)

免费获取更多原图,备注“AI绘画”,可在文章末尾点击名片进qun获取。 免费获取更多原图,备注“AI绘画”,可在文章末尾点击名片进qun获取。

Python密码测试程序

下面是一个简单的 Python 密码测试程序,用于检查用户输入的密码是否符合一些基本的安全要求,如长度、包含字母和数字等。这个程序可以作为一个基本的密码验证器,你可以根据需要进行修改和扩展。 1、问题背景 我们正在编写一个程序&#xff0…

花园牛奶:从靠谱奶牛到新鲜牛奶的匠心之旅

在花园乳业有限公司,我们深知生产出优质牛奶的秘诀——从靠谱的奶牛开始。为此,我们特意引进了品质卓越的荷斯坦奶牛,它们以“黑白花”的优雅身姿,成为了我们牧场上的明星。荷斯坦奶牛以其出色的生产性能和高产奶量而著称&#xf…

uniapp 自定义App UrlSchemes

需求:外部浏览器H5页面,跳转到uniapp开发的原生app内部。 1、uniapp内部的配置: (1)打开manifest->App常用其他设置,如下,按照提示输入您要设置的urlSchemes: (2&am…

3W 1.5KVDC 3KVDC 隔离宽范围输入,单、双输出 DC/DC 电源模块——TP2L-3W 系列

TP2L-3W系列是一款高性能、超小型的电源模块,宽范围2:1,4:1输入,输出有稳压和连续短路保护功能,隔离电压为1.5KVDC、3KVDC工作温度范围为–40℃到85℃。特别适合对输出电压的精度有严格要求的地方,外部遥控功能对您的设计又多一项…

读源码系列文章--开源项目openjob之alarm告警模块

一、背景 告警模块,作为大多数应用都存在的一个基础功能,今天我们就以开源项目openjob 为例,分析其设计及实现。 首先,我们梳理一下需求: 支持多种告警方式,包括钉钉、飞书、微信和webhook。方便业务模块…

多模态大模型学杂了能力反下降?新研究:MoE+通用专家解决冲突

微调,能让通用大模型更加适配具体的行业应用。 但现在,研究人员们却发现: 对多模态大模型做“多任务指令微调”,大模型可能会“学得多错得多”,因为不同任务之间的冲突,导致泛化能力下降。 △多模态指令微…

扩展学习|一文读懂知识图谱

一、知识图谱的技术实现流程及相关应用 文献来源:曹倩,赵一鸣.知识图谱的技术实现流程及相关应用[J].情报理论与实践,2015, 38(12):127-132. (一)知识图谱的特征及功能 知识图谱是为了适应新的网络信息环境而产生的一种语义知识组织和服务的方…

WRT1900ACS搭建openwrt服务器小记

参考链接 wrt1900acs openwrt wrt1900acs openwrt 刷机 wrt1900acs原生固件刷openwrt-23.05.3-mvebu-cortexa9-linksys_wrt1900acs-squashfs-factory.img wrt1900acs openwrt更新刷openwrt-23.05.3-mvebu-cortexa9-linksys_wrt1900acs-squashfs-sysupgrade.bin 通过WEB UI来…

linux的信号量的使用

1.信号量 在多线程情况下,线程要进入关键代码就得获取信号量(钥匙){sem_init(&sem, 0, 0);},没有信号量的情况下就一直等待sem_wait(&sem),只到别人把钥匙(sem_post(&sem))给你。 …

从哪些方面可以看出现货黄金价格走势?

现货黄金价格的走势受到多种因素的影响,我们可以从宏观经济环境、货币政策、供需关系、市场情绪和技术分析几个主要方面来观察和分析这一贵金属的价格动态。现货黄金作为全球投资市场中的避险资产,其价格波动往往能体现出复杂的经济和政治变化。 宏观经济…

QT+多线程编程

QT的多线程编程有两种 1、自定义类继承QThread 第一种是自定义一个类继承于QThread,重写run()方法来实现。然后当需要使用线程的时候你就新建一个自定义对象,然后调用start方法开始运行。 下面的例子是widget里面创建一个线程,然后调用sta…

【docker】常用的把springboot打包为docker镜像的maven插件

Spring Boot Maven Plugin: Spring Boot 自带的 Maven 插件 (spring-boot-maven-plugin) 支持直接生成 Docker 镜像。通过配置,可以在 Maven 构建过程中自动构建 Docker 镜像,而无需单独编写 Dockerfile。这种方法简化了将应用打包为 Docker 镜像的过程。…

2024年第七届大数据技术国际会议(ICBDT 2024)即将召开!

2024年第七届大数据技术国际会议(ICBDT 2024)将于2024年9月20-22日在中国杭州的浙江工商大学举行。数据驱动未来,技术引领潮流。从数据挖掘算法的优化,到数据处理速度的提升,再到数据安全与隐私保护的进步,…

男士内裤品牌哪个好?口碑最好的男士内裤汇总

许多男士选内裤可能比较随意,但实际上作为长时间贴合身体皮肤的贴身衣物,经常会出很多汗。而普通的内裤会吸附很多汗水却不易干,导致细菌含量超标,摩擦力增强,容易造成破皮感染从而影响健康。 但是现在的男士内裤种类和…