前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >漏洞笔记(二)|利用Excel进行XXE攻击

漏洞笔记(二)|利用Excel进行XXE攻击

作者头像
Power7089
发布2020-07-27 16:07:25
4.7K0
发布2020-07-27 16:07:25
举报

某次测试中,在某系统后台通过上传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问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员阿甘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档