xxe
XXE
xml external entity injection
xml外部实体注入
概述
xml是可扩展的标记语言,涉及被用来传输、存储数据
html被用来显示数据
其中xml的标签没有预定义的,允许作者自己定义标签和文档结构。
组成
声名
<?xml version="1.0" encoding="UTF-8"?>
以上实例包含 XML 版本(
UTF-8 也是 HTML5, CSS, JavaScript, PHP, 和 SQL 的默认编码。
XML DTD
文档类型定义DTD(document type definition),是下面文档元素的规定可以叫约束,定义了格式
<!DOCTYPE note SYSTEM "Note.dtd">
DOCTYPE 声明是对外部 DTD 文件的引用
文档元素
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
利用
其中我们能利用的是DTD部分引入外部文档
xml文档定义语义约束
有三种方法
- DTD内部声名:
- DTD外部声名:其中外部引用支持http、file和ftp等
- 引用公共DTD:
<!DOCTYPE note
[
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>

如果一个接口支持接受xml数据,且没有对xml数据做任何安全上的措施,就可能导致xxe漏洞。
libxml在2.9.0(包含)之后默认禁止解析xml默认实体内容的。
用例
<?xml cersion="1.0">
<!DOCTYPE hack [
<!ENTITY xxe SYSTEM "file:///etc/password">
]>
<hack>&xxe;</hack>
"%name"(参数实体)实在DTD中被引用,而"&name;"是在xml文档中被引用的。
能怎么利用看支持什么协议,具体的参考
https://security.tencent.com/index.php/blog/msg/69
防御
方案一、使用开发语言提供的禁用外部实体的方法
PHP:
libxml_disable_entity_loader(true);
其他语言:
https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet
方案二、过滤用户提交的XML数据
关键词:,SYSTEM和PUBLIC。
参考:
https://security.tencent.com/index.php/blog/msg/69
https://zh.wikipedia.org/wiki/XML
https://www.runoob.com/xml/xml-usage.html
xxe的更多相关文章
- XML注入介绍--XXE,XEE,xpath等
XML注入指在请求的XML中插入攻击利用代码.根据不同的场景,可能会形成以下的漏洞形式: (1)XEE ----xml entity xpansion(xml实体膨胀,用于dos) 具体介绍:http ...
- XXE篇-本着就了解安全本质的想法,尽可能的用通俗易懂的语言去解释安全漏洞问题
0x01 Brief Description XXE(XML External Entity) XML外部实体攻击也是常见的web漏洞之一,在学习这个漏洞之前有必要了解一下xml,可以参考w3c的基本 ...
- 微信开源PHP商城系统一处blind xxe(无需登录,附POC)
测试版本wemall 3.3 下载地址 http://git.oschina.net/einsqing/wemall/repository/archive?ref=master 需要开源中国的账号 c ...
- xxe漏洞的学习与利用总结
前言 对于xxe漏洞的认识一直都不是很清楚,而在我为期不长的挖洞生涯中也没有遇到过,所以就想着总结一下,撰写此文以作为记录,加深自己对xxe漏洞的认识. xml基础知识 要了解xxe漏洞,那么一定得先 ...
- xxe漏洞检测及代码执行过程
这两天看了xxe漏洞,写一下自己的理解,xxe漏洞主要针对webservice危险的引用的外部实体并且未对外部实体进行敏感字符的过滤,从而可以造成命令执行,目録遍历等.首先存在漏洞的web服务一定是存 ...
- 漏洞经验分享丨Java审计之XXE(下)
上篇内容我们介绍了XXE的基础概念和审计函数的相关内容,今天我们将继续分享Blind XXE与OOB-XXE的知识点以及XXE防御方法,希望对大家的学习有所帮助! 上期回顾 ◀漏洞经验分享丨Java ...
- 漏洞经验分享丨Java审计之XXE(上)
最近在审计公司的某个项目时(Java方面),发现了几个有意思的Blind XXE漏洞,我觉得有必要分享给大家,尤其是Java审计新手,了解这些内容可以让你少走一些弯路. Java总体常出现的审计漏洞如 ...
- XXE漏洞学习
0x00 什么是XML 1.定义 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括XML声明.DTD文 ...
- 微信支付的安全漏洞之XXE
1.场景:国外安全社区公布微信支付官方SDK存在严重漏洞,可导致商家服务器被入侵(绕过支付的效果).目前,漏洞详细信息以及攻击方式已被公开,影响范围巨大(已确认陌陌.vivo因使用该SDK而存在该漏洞 ...
- ASP.NET微信支付XXE漏洞修复
1. XXE场景 关于XML解析存在的安全问题指引 微信支付商户,最近暴露的XML外部实体注入漏洞(XML External Entity Injection,简称 XXE),该安全问题是由XML组件 ...
随机推荐
- super關鍵字
super 关键字 我们知道,this关键字总是指向函数所在的当前对象,ES6 又新增了另一个类似的关键字super,指向当前对象的原型对象. const proto = { foo: 'hello' ...
- Html5 -- 语义标签兼容性处理
方法一:通过js处理 方法二:完美的处理方式 no.1 !--[if lte IE 8]> <script type="text/javascript" src=&qu ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:快速浮动
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 区块链 - 哈希(Hash)
章节 区块链 – 介绍 区块链 – 发展历史 区块链 – 比特币 区块链 – 应用发展阶段 区块链 – 非对称加密 区块链 – 哈希(Hash) 区块链 – 挖矿 区块链 – 链接区块 区块链 – 工 ...
- ES6中 ,var,let和const的区别
var的特点 没有代码块的概念,全局范围内都有效 存在“变量提升”现象,即变量可以在声明之前使用,值为undefined let的特点 声明的变量仅在块级作用域内有效,存在了代码块的概念 不存在“变量 ...
- 使用JavaScript实现一个简单的编译器
在前端开发中也会或多或少接触到一些与编译相关的内容,常见的有 将ES6.7代码编译成ES5的代码 将SCSS.LESS代码转换成浏览器支持的CSS代码 通过uglifyjs.uglifycss等工具压 ...
- yii2.0 引入权限控制插件
权限控制:"mdmsoft/yii2-admin": "~2.0" 教程:http://www.cnblogs.com/zyf-zhaoyafei/p/5825 ...
- 接口补偿机制需求分析&方案设计
接口补偿机制需求分析&方案设计文章目录接口补偿机制需求分析&方案设计需求分析背景解决方案业务示例注意事项示例业务Controller实现重试信息类&数据处理入库接口重试的主要方 ...
- spark shuffle发展历程
spark2.3 shuffle manager,默认sortShuffleManager // Let the user specify short names for shuffle manage ...
- Atcoder比赛副站
https://agc039.contest.atcoder.jp/