千家信息网

如何利用Excel进行XXE攻击

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,今天就跟大家聊聊有关如何利用Excel进行XXE攻击,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。某次测试中,在某系统后台通过上传Excel文
千家信息网最后更新 2024年11月27日如何利用Excel进行XXE攻击

今天就跟大家聊聊有关如何利用Excel进行XXE攻击,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

某次测试中,在某系统后台通过上传Excel文件触发XXE攻击,这种姿势利用成功比较少,故在此将测试过程记录分享出来。

前言

Microsoft Office从2007版本引入了新的开放的XML文件格式,新的XML文件格式基于压缩的ZIP文件格式规范,由许多部分组成。

我们可以将其解压缩到特定的文件夹中来查看其包含的文件夹和文件,可以发现其中多数是描述工作簿数据、元数据、文档信息的XML文件。

所以不正确的读取2007版本Microsoft office格式文件也存在着XXE攻击的可能性。

测试过程

测试客户端与测试目标均处于纯内网环境
测试目标IP:29.xx.xx.xxx
客户端IP:10.xx.xx.xx

在人员管理>批量导入模块,发现可以通过上传Excel文件批量导入人员信息。

下载导入模板,模板是一个xls格式文件。


xls与xlsx格式不同,xls是一个特有的二进制格式,其核心结构是复合文档类型的结构,而xlsx的核心结构是XML类型的结构,采用的是基于XML的压缩方式。xls格式文件没办法插入Payload进行XXE攻击。

由于系统给出的默认模板user.xls没办法利用,那我们尝试自己新建一个xlsx格式文件进行上传,是否可行呢?

制作插入Payload的xlsx文件

新建一个xlsx格式文件test.xlsx,解压缩。

在[Content_Types].xml文件中插入Payload,如下图。作用是从10.xx.xx.xx:8080上读取eval.dtd文件。


在客户端进行监听

eval.dtd文件存放在客户端,内容如下图。作用是通过file协议读取测试目标的/etc/hostname文件,并将读取的结果通过HTTP请求的参数p带出。


在客户端的8080端口开启Web服务,供测试目标下载eval.dtd文件。

并使用nc监听本地8081端口,用于接收从测试目标读取的/etc/hostname文件。

上传

将插入Payload后的文件重新压缩,再将压缩包的后缀名修改为xlsx。

上传该xlsx文件。

虽然回显文件添加失败,但是从客户端Web服务日志中发现测试目标下载了evil.dtd文件,且nc成功在8081端口监听到测试目标的/etc/hostname文件内容。

利用Excel进行XXE攻击非常简单,使用版本较低的第三方库解析Excel文件时,基本都会引入XXE问题。

看完上述内容,你们对如何利用Excel进行XXE攻击有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0