首页 > 其他分享 >从xss到任意文件读取

从xss到任意文件读取

时间:2024-11-05 09:44:46浏览次数:5  
标签:xss 浏览器 读取 文件 html pdf 任意

xss一直是一种非常常见且具有威胁性的攻击方式。然而,除了可能导致用户受到恶意脚本的攻击外,xss在特定条件下还会造成ssrf和文件读取,本文主要讲述在一次漏洞挖掘过程中从xss到文件读取的过程,以及其造成的成因。
0x01 前言
xss一直是一种非常常见且具有威胁性的攻击方式。然而,除了可能导致用户受到恶意脚本的攻击外,xss在特定条件下还会造成ssrf和文件读取,本文主要讲述在一次漏洞挖掘过程中从xss到文件读取的过程,以及其造成的成因。

0x02 漏洞详细
XSS
漏洞所在的是一个可以在线编辑简历并导出的一个网站,

首先注册账号后进去,任意选一个模板在线编辑,在编辑简历时插入payload测试

在这里插入图片描述
发现被转义了,我们手动修改回去
在这里插入图片描述
刷新简历可以看到成功弹窗,证明存在存储型xss
在这里插入图片描述
然后使用

标签测试,可以发现h1标签也会被解析
在这里插入图片描述
然后我们发现,网站有一个功能可以把简历转成pdf并下载,而在线编辑的是html格式,而且这一转换过程是在后端完成,并且导出的pdf中标签依然是被解析的,如下图所示,导出的pdf中上方的字体也明显变大,说明h1标签被解析
在这里插入图片描述
2.SSRF
通过过滤网络请求我们发现这样一个数据包,它将html及里面包含的js代码会发送给后端,后端可能通过渲染html代码从而生成pdf供用户下载
在这里插入图片描述
在这里插入图片描述
那后端是如何将html渲染成pdf,执行html中的js呢?

一般可以通过获取后端解析的组件及版本来获取更多信息,从下载的pdf中,可以文件的头部信息可以获取创建者或者pdf文件信息
在这里插入图片描述
可以发现后端使用的wkhtmltopdf组件

wkhtmltopdf官方文档:https://wkhtmltopdf.org/index.html
在这里插入图片描述
在他的使用文档中发现其使用Qt WebKit浏览器引擎将html渲染成pdf,既然是通过浏览器渲染的,那html中的所有标签也会被浏览器所执行。

所以我们使用iframe标签尝试读取内网资源
在这里插入图片描述

可以看到虽然是403,但是确实是能读取成功的。
在这里插入图片描述
3.任意文件读取
我们尝试是否能通过请求file协议读取文件

javascript 将在服务器端执行,让我们尝试通过注入以下 javascript 从文件系统中获取文件,然后构造payload进行文件的读取:

通过XMLHttpRequest发起请求,使用file协议读取本地文件,然后document.write将请求的结果覆盖原来html的内容。
在这里插入图片描述
访问pdf,成功读取到文件
在这里插入图片描述
0x03 漏洞成因及修复
所里这里有一个疑问,为什么js会导致本地任意文件读取,如果真是这样的话那我们每个用户在浏览有js的网页时都会造成本地信息泄露?

其实我们在使用浏览器访问网页并加载js时,浏览器有一套安全机制,使用XMLHttpRequest对象读取本地文件在Web浏览器中是受限的,因为出于安全考虑,浏览器限制了通过XMLHttpRequest对象直接访问本地文件系统。

image-20230607150153432

如上图所致直接在浏览器执行这段payload会被提示Not allowed to load local resource

前面我们提到后端将html转换为pdf的组件是wkhtmltopdf,他使用无头运行的Qt WebKit浏览器引擎,但是浏览器默认参数是使用–enable-local-file-access,即允许访问本地文件,这就是导致可以使用file协议进行任意文件的问题。

–disable-local-file-access 不允许一个本地文件加载其他的本地文件,使用命令行参数 --allow 指定的目录除外。
–enable-local-file-access 与–disable-local-file-access相反(这是默认设置)
–allow 允许加载指定文件夹中的一个或多个文件
同时wkhtmltopdf官方文档中也说明了不要将 wkhtmltopdf 与任何不受信任的 HTML 一起使用
在这里插入图片描述
即使使用了–disable-local-file-access,攻击者也可以利用预构建二进制文件中的 CVE 的攻击者可能能够绕过此设置。

在这里插入图片描述

标签:xss,浏览器,读取,文件,html,pdf,任意
From: https://blog.csdn.net/Libao657/article/details/143501016

相关文章

  • xss漏洞解析
    xss跨站脚本攻击案例xss案例有一段代码php $a=$_GET['a'];echo$a;?>XSS简介XSS被称为跨站脚本攻击(CrossSiteScripting),由于和CSS重名,所以改为XSS。XSS就是将恶意代码注入到网页中,以达到攻击的效果。XSS主要使用javascript,javascript可以非常灵活的操作html......
  • xss-labs题解
    xss—labsxss—labslevel1(GET型)level2(闭合)level3(htmlspecialchars绕过)level4(左右尖括号过滤)level5(a标签法)level6(大小写绕过)level7(双写绕过)level8(利用href自动Unicode解码特性)level9(注释绕过后端判断)xss—labs题目链接BUUCTF在线评测题目源码xss-lab/lev......
  • Springboot创建Mave聚合工程(可灵活创建任意版本)
    文章目录前言1需要的环境与项目结构2Idea新建Maven工程3SpringBoot引入并测试4聚合工程测试5springboot3版本引入6不同环境启动项目前言请注意,从2022年第四季度发布的Spring6框架开始,最低Java版本要求已提升至JDK17。Spring6对内部架构进行了重构,并将......
  • stm32读取麦克风inmp441数据并实时播放
    概述最近在做一个功能类似于对讲机通话的功能,本来在网上感觉很容易找到同样的案例复刻,结果发现大多数都是用esp32,或者说电脑作为上位机传输wav音频解码播放的效果,也有很相仿的,但是都测试结果不尽人意,经过不断摸索下面是我给出的方案。但是本篇文章只限于单片机mcu芯片通......
  • 「漏洞复现」F22服装管理软件系统 openfile.aspx 任意文件读取漏洞
    0x01 免责声明请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需......
  • Java读取properties配置文件
    需要导入的jar<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.14</version></dependency>方法:使用Spring PropertiesLoaderUtils.loadProperties();方法一......
  • C#读取Json配置文件
    1、安装NuGet包:Newtonsoft.Json2、新建Confgi.json{"K-Fins":-1,"K-Zs":0.2,}3、在Models文件中新建AppConfig.cs和ConfigManager.cspublicclassAppConfig{publicdoubleKFins{get;set;}publicdoublekZs{get;s......
  • 大型xlsx文件内容快速读取
    openpyxl的性能还是不够用,我经常会导出很多的xlsx文件获取里面的数据来分析操作。下面的代码可以直接将xlsx的文本内容直接转为二维列表返回使用:def获取数据形成二维列表_原封不动版_V2(path:str)->list:zip_file=zipfile.ZipFile(path)monitor_typeName=os.path......
  • (教程)如何用 Java 读取和写入图像
    在这篇文章中,我将向您展示如何用Java读取和写入图像文件。我将演示两种不同的方法。第一种是使用 ImageIO,第二种是使用我们的 JDeli图像库。如果您只是在寻找图像查看器,JDeli包含一个内置图像查看器。 如何在Java中读取和写入图像Java为图像提供了一种称为Buffe......