分享 | 浅谈一种特殊格式的XXE漏洞

admin 2022年4月19日01:40:55评论134 views字数 2304阅读7分40秒阅读模式

文章来源:先知社区

作者:你回来吗

原文地址:https://xz.aliyun.com/t/11203#toc-0


0x00 背景 

分享 | 浅谈一种特殊格式的XXE漏洞

 

前两天在realworld挖到一个docx的xxe漏洞,昨天朋友和我说国外某CTF也出现其中考点了,所以我把docx格式的xxe来简单总结下

0x01 前置知识


首先是关于docx这种格式 在微软2007之后 在传统的文件名都添加了x 比如pptx xlsx,还有我们本文提到的docx 他的优点是占用空间会比doc文件占有的少,并且他的本质其实是个xml文件

当你拿到一个docx文件时 使用本机自带的unzip命令进行解压

分享 | 浅谈一种特殊格式的XXE漏洞

会得到如下的xml文件因为docx文件的主要内容是保存为xml的 他是保存在一个压缩包 然后取扩展名为zip 这里面主要存储信息的地方在于word文件夹下的document.xml

分享 | 浅谈一种特殊格式的XXE漏洞

我们发现在word输入的内容在

<w:t>&xxe;</w:t>

这个标签内解析xml实体的位置也是如此

0x02 lets xxe 1


第一个位点就是我们刚才提到的地方

我们只需要做的是在xml声明处添加如下第一行代码 在第二行标签进行修改

<!DOCTYPE test [<!ENTITY test SYSTEM 'file:///etc/passwd'>]>
<w:t>&test;</w:t>

然后将文件重新压缩 修改为.docx 然后找到上传点上传就可以

分享 | 浅谈一种特殊格式的XXE漏洞

但做好的即使用微软官方的word并不能打开 发现只有用Libreoffice时候能解析

当然这个在ctf题中也有案例 感兴趣的师傅可以翻阅HackPack 2021 Indead v2 用一模一样的方法就可以

0x03 xxe 2


首先是关于

第一种方法被广流传之后 很多都进行了相对的修改 当然最暴力的方法就是直接禁止实体解析,当然也有做的相对柔和一点就是在document.xml里面检测了关键字 很显然这种方法并不全面 那我们需要探索的就是是否有别的位点

我注意到在线浏览或者转换pdf的地方还有一个回显点 就是页码

分享 | 浅谈一种特殊格式的XXE漏洞

经过简单翻找可以看到

分享 | 浅谈一种特殊格式的XXE漏洞

在docProps/app.xml标签里面

在pages这里面加入xxe语句即可

0x04 ole to readfile


然后就是出自前几天比赛学习的一种新手法 这种手法只适用于Libreoffice 并且在实战场景是有利用空间的 很多在线网站word转pdf用的都是libreoffice

分享 | 浅谈一种特殊格式的XXE漏洞

这道题的设计背景就是 试了xxe发现不行 然后就各种搜索资料 发现word文档是可以以文件的方式嵌入和链接OLE对象 OLE就是一种面向对象技术 利用这种方式就可以把文件 声音 图像表格 应用程序组合在一起

选择插入 OLE Object

分享 | 浅谈一种特殊格式的XXE漏洞

然后在这里选择Link to file

分享 | 浅谈一种特殊格式的XXE漏洞

可以看到这里面可以成功读取

分享 | 浅谈一种特殊格式的XXE漏洞

然后我们保存 这里面要注意一个坑 不能直接保存为docx格式 要先保存为odt格式 我们再手动修改扩展名

这时候以zip格式打开就可以看到

分享 | 浅谈一种特殊格式的XXE漏洞

格式大概是这样 我们打开content.xml

分享 | 浅谈一种特殊格式的XXE漏洞

可以看到在xlink: href 这里面连接到/etc/passwd 那你也能想到我们可以把他修改/flag上传

分享 | 浅谈一种特殊格式的XXE漏洞

这时候我们发现是可行的 但是这种方法读取的行数是有限的 读不到完整flag

解决方法也很简单 我们自己写个文本框来解析 代码如下

<text:section text:name="string"><text:section-source xlink:href="../../../../../../flag" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/></text:section>                                                    

分享 | 浅谈一种特殊格式的XXE漏洞

以看到能过成功解析读取flag

0x05 docx压缩包的其他考点


回过头来我们想当他本质是个压缩包的话 php有丰富的伪协议 zip 如果我们在php网站有这种上传docx的地方 也可以考虑 把php一句话写入 然后用zip://把它解压出来

分享 | 浅谈一种特殊格式的XXE漏洞

后来发现早有师傅想到这个点了

【往期推荐】

【内网渗透】内网信息收集命令汇总

【内网渗透】域内信息收集命令汇总

【超详细 | Python】CS免杀-Shellcode Loader原理(python)

【超详细 | Python】CS免杀-分离+混淆免杀思路

【超详细 | 钟馗之眼】ZoomEye-python命令行的使用

【超详细 | 附EXP】Weblogic CVE-2021-2394 RCE漏洞复现

【超详细】CVE-2020-14882 | Weblogic未授权命令执行漏洞复现

【超详细 | 附PoC】CVE-2021-2109 | Weblogic Server远程代码执行漏洞复现

【漏洞分析 | 附EXP】CVE-2021-21985 VMware vCenter Server 远程代码执行漏洞

【CNVD-2021-30167 | 附PoC】用友NC BeanShell远程代码执行漏洞复现

【奇淫巧技】如何成为一个合格的“FOFA”工程师

【超详细】Microsoft Exchange 远程代码执行漏洞复现【CVE-2020-17144】

【超详细】Fastjson1.2.24反序列化漏洞复现

  记一次HW实战笔记 | 艰难的提权爬坑

【漏洞速递+检测脚本 | CVE-2021-49104】泛微E-Office任意文件上传漏洞

免杀基础教学(上卷)

免杀基础教学(下卷)

走过路过的大佬们留个关注再走呗分享 | 浅谈一种特殊格式的XXE漏洞

往期文章有彩蛋哦分享 | 浅谈一种特殊格式的XXE漏洞

分享 | 浅谈一种特殊格式的XXE漏洞

一如既往的学习,一如既往的整理,一如即往的分享分享 | 浅谈一种特殊格式的XXE漏洞

如侵权请私聊公众号删文

推荐阅读↓↓↓

我知道你在看 

原文始发于微信公众号(渗透Xiao白帽):分享 | 浅谈一种特殊格式的XXE漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月19日01:40:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   分享 | 浅谈一种特殊格式的XXE漏洞http://cn-sec.com/archives/919284.html

发表评论

匿名网友 填写信息