开工一周啦,技术分享继续搞起来~
某次测试中,在某系统后台通过上传Excel文件触发XXE攻击,这种姿势利用成功比较少,故在此将测试过程记录分享出来。
本文作者:kaiputenku
前言
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问题。
往期经典推荐:
----------------------------------------------------------------------
渗透实战(一)|BSides Vancouver 2018 (Workshop)
移动安全(一)|Android设备root及神器Xposed框架安装
>>关于我们:
WhITECat安全小组隶属于起源实验室分支安全小组,主要致力于分享小组成员技术研究成果、最新的漏洞新闻、安全招聘以及其他安全相关内容。团队成员暂时由起源实验室核心成员、一线安全厂商、某研究院、漏洞盒TOP10白帽子等人员组成。
欢迎各位大佬关注^_^
本文始发于微信公众号(WhITECat安全团队):漏洞笔记(二)|利用Excel进行XXE攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论