【网络安全】URL解析器混淆攻击实现ChatGPT账户接管、Glassdoor服务器XSS

本文主要是介绍【网络安全】URL解析器混淆攻击实现ChatGPT账户接管、Glassdoor服务器XSS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 通配符+URL解析器混淆攻击实现ChatGPT账户接管
    • 通配符+URL解析器混淆攻击实现Glassdoor服务器缓存XSS

本文不承担任何由于传播、利用本文所发布内容而造成的任何后果及法律责任。

本文将基于ChatGPT及Glassdoor两个实例阐发URL解析器混淆攻击。

开始本文前,推荐阅读:【网络安全】Web缓存欺骗攻击原理及攻防实战


通配符+URL解析器混淆攻击实现ChatGPT账户接管

ChatGPT新增了"分享"功能,该功能允许用户与其他人公开分享聊天内容:

在这里插入图片描述

ChatGPT会生成一个对话链接,用户复制后发送给好友即可:

在这里插入图片描述

然而,存在一现象:ice发送对话链接给A后,A看到了对话内容。ice再与ChatGPT对话,此时A访问对话链接,却看不到新的对话内容。

这个现象可能意味着:原先的对话内容已被缓存,其在缓存条目消失前并不会更新。

对该猜测进行验证:打开网络标签页来检查响应头,看到Cf-Cache-Status: HIT,说明请求的资源在Cloudflare的CDN缓存中已经存在。

通常,只有静态文件(如图片、CSS、JS文件等)会被CDN缓存,但在这个情况中,一个动态内容的生成(即ChatGPT的对话分享)也被缓存,这反映出Cloudflare的缓存机制并不仅限于传统意义上的静态文件,而是可以根据配置规则对各种类型的内容进行缓存。

同时可以看到对话链接URL中并不存在文件扩展名:

在这里插入图片描述

这意味着在处理缓存时,使用的规则并不是基于请求的资源文件的扩展名(如.jpg、.html、.css等)来决定是否对该资源进行缓存。相反,它是根据URL中资源所在的路径位置来决定的。

综上,ChatGPT的缓存规则配置为/share/*,表示所有位于/share/路径下的内容都会被CDN缓存,不管这些内容是什么类型的文件或者是否根本就不是文件(例如动态生成的内容)。

在实施攻击实现ChatGPT账户接管前,先了解一下什么是URL解析器混淆攻击。

由于历史原因和标准实现的差异,不同的解析器对某些特殊字符或编码方式的处理可能会有所不同。使用缓存的网站中,请求必须先经过CDN,然后才到达Web服务器。如果这两者的解析器处理不一致,利用这些差异,通过精心设计的URL来迷惑解析器,使其误解URL的真正意图,即可实现URL解析器混淆攻击。

在此案例中,Cloudflare的CDN并不会对URL进行解码,也并不会规范化URL路径,但Web解析器却会。

当构造https://chat.openai.com/share/%2F..%2Fapi/auth/session?id=ice时,CDN并不会对该URL做任何处理,CDN将URL转发后,Web解析器将其解码并规范化后得到:https://chat.openai.com/share/api/auth/session?id=ice,并生成响应,该响应中含有对ice的session请求。

当这个响应返回给CDN时,ice的session被缓存。这意味着,任何后续对相同URL的请求都将直接由CDN提供响应,即用户A访问https://chat.openai.com/share/%2F..%2Fapi/auth/session?id=ice后即可得到ice的session,进而接管ice的ChatGPT账户。

通配符+URL解析器混淆攻击实现Glassdoor服务器缓存XSS

Glassdoor是一个面向职业人士的在线平台,旨在提供有关公司、工作岗位、薪资、面试经验和员工评价的信息。[以下附图环境为已修复环境]

其Job页面提供了有关职位的详细信息:

在这里插入图片描述

在 https://www.glassdoor.com/Job/?xss 路径下的页面,所有URL参数都会在JavaScript脚本标签内反映。但注入 </script> 到页面时,存在WAF:

在这里插入图片描述

optimizelyEndUserId cookie的值会在页面中反映,位于URL参数之后。故可将负载分割为两部分,通过绕过WAF来执行任意JavaScript,然而这只是个反射型XSS。

要实现危害扩大,可以考虑服务器缓存XSS。

https://www.glassdoor.com/Job和https://www.glassdoor.com/Award/下的页面中打开网络标签页来检查响应头,后者看到Cf-Cache-Status: HIT,说明页面被缓存。

经测试,发现通配符 /…/在缓存服务器上得到规范化,但后端Web应用程序没有规范化。故对于路径https://www.glassdoor.com/Job/../Award/blah?xss=<script>,缓存服务器将其解释为https://www.glassdoor.com/Award/blah?xss=<script>,导致响应被缓存。该过程与上一个案例相似,不再详述。

在后续中,任意用户访问https://www.glassdoor.com/Award/blah?xss=</script>时,XSS将被触发。

经测试,也可在https://www.glassdoor.com/mz-survey/interview/collectQuestions_input.htm/../../../Award/blah的请求包标头和 cookie 中包含 XSS:

在这里插入图片描述

这篇关于【网络安全】URL解析器混淆攻击实现ChatGPT账户接管、Glassdoor服务器XSS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/684564

相关文章

golang中slice扩容的具体实现

《golang中slice扩容的具体实现》Go语言中的切片扩容机制是Go运行时的一个关键部分,它确保切片在动态增加元素时能够高效地管理内存,本文主要介绍了golang中slice扩容的具体实现,感兴趣... 目录1. 切片扩容的触发append 函数的实现2. runtime.growslice 函数gro

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

Kali Linux安装实现教程(亲测有效)

《KaliLinux安装实现教程(亲测有效)》:本文主要介绍KaliLinux安装实现教程(亲测有效),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载二、安装总结一、下载1、点http://www.chinasem.cn击链接 Get Kali | Kal

C#使用MQTTnet实现服务端与客户端的通讯的示例

《C#使用MQTTnet实现服务端与客户端的通讯的示例》本文主要介绍了C#使用MQTTnet实现服务端与客户端的通讯的示例,包括协议特性、连接管理、QoS机制和安全策略,具有一定的参考价值,感兴趣的可... 目录一、MQTT 协议简介二、MQTT 协议核心特性三、MQTTNET 库的核心功能四、服务端(BR

SpringCloud整合MQ实现消息总线服务方式

《SpringCloud整合MQ实现消息总线服务方式》:本文主要介绍SpringCloud整合MQ实现消息总线服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、背景介绍二、方案实践三、升级版总结一、背景介绍每当修改配置文件内容,如果需要客户端也同步更新,

Dubbo之SPI机制的实现原理和优势分析

《Dubbo之SPI机制的实现原理和优势分析》:本文主要介绍Dubbo之SPI机制的实现原理和优势,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Dubbo中SPI机制的实现原理和优势JDK 中的 SPI 机制解析Dubbo 中的 SPI 机制解析总结Dubbo中

使用Java实现Navicat密码的加密与解密的代码解析

《使用Java实现Navicat密码的加密与解密的代码解析》:本文主要介绍使用Java实现Navicat密码的加密与解密,通过本文,我们了解了如何利用Java语言实现对Navicat保存的数据库密... 目录一、背景介绍二、环境准备三、代码解析四、核心代码展示五、总结在日常开发过程中,我们有时需要处理各种软