xxe从入门到放弃 作者绝影小组_第1页
xxe从入门到放弃 作者绝影小组_第2页
xxe从入门到放弃 作者绝影小组_第3页
xxe从入门到放弃 作者绝影小组_第4页
xxe从入门到放弃 作者绝影小组_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XXE从入门到放弃作者:绝影小组 原文链接:/s/hIsqVU6MJ6OEbQVnvF6-xQ 收集整理:/test/index.php本文由 干货一、认识XML和XXEXXE全称XML External Entity Injection,也就是XML外部实体注入攻击,是对非安全的外部实体数据进行处理时引发的安全问题。要想搞懂XXE,肯定要先了解XML语法规则和外部实体的定义及调用形式。 XML基础知识XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进

2、行定义的源语言。XML文档结构包括XML声明、DTD文档 类型定义(可选)、文档元素。 XML语法规则如下:1. 所有的 XML 元素都必须有一个关闭标签标签对大小写敏感必须正确嵌套2. XML3. XML4. XML 属性值必须加引号 ”5. 实体引用 (在标签属性,以及对应的位置值可能会出现 符号,但是这些符号在对应的 XML 中都是有特殊含义的,这时候我们必须使用对应 html 的实体对应的表示,比如 符号对应的实体就是 gt ) 6. 在 XML 中,空格会被保留 (案例如: a 空格 B ,这时候 a 和 B 之间的空格就会被保留)1 XML 元素介绍XML元素是指从(且包括)开始标

3、签直到(且包括)结束标签的部分。 每个元素又有可以有对应的属性。 XML属性必须加引号。注意: 文档必须有一个根元素元素都必须有一个关闭标签标签对大小写敏感元素必须被正确的嵌套(1) XML(2) XML(3) XML(4) XML2属性值必须加引号 (5)XMLXML DTD介绍DTD文档类型定义,约束了xml文档的结构。 拥有正确语法的 XML被称为“形式良好”的XML,通过DTD验证约束XML是“合法”的XML。 3 4 DTD是什么?XML 文档有自己的一个格式规范,这个格式规范是由一个叫做 DTD 文档类型定义 ( document type definition) 的东西控制的。

4、DTD用来描述xml文档的结构,一个DTD文档包含: 元素的定义规则;元素之间的关系规则;属性的定义规则。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。他就是长得下面这个样子: 5 冋郮皊 DOCTYPE 壶昔内部声明 DTD类型内部声明 DTD 类型声明: 弛甮夜郮室余我们主要关注 XML外部实体的定义和调用方式: 6 DTD 敶捴粁垑PCDATA 的意思是被解析的字符数据 /PCDATA 的意思是被解析的字符数据, PCDATA 是会被解析器解析的文本 CDATA 的意思是字符数据 CDATA 是不会被解析器解析的文本,在这些文本中的标签不会被当作标记来对待,其中的实体也

5、不会被展开。 DTD 实体介绍(实体定义)实体是用于定义引用普通文本或者特殊字符的快捷方式的变量 在 DTD 中的实体类型,一般分为:内部实体和外部实体,细分又分为一般实体和参数实体。除外部参数实体引用以字符( % )开始外,其它实体都以字符( & )开始,以字符( ; )结束。 7内部实体: 外部实体:外部参数实体:8 XML注入产生的原理XXE漏洞全称XML External Entity Injection即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等

6、。xxe漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。 xxe漏洞触发的点往往是可以上传XML文件约位置,没有对上传的XML文件进行过滤,导致可以上传恶意的XML文件。 怎么判断网站是否存在 XXE 漏洞最直接的方法就是用 burp抓包,然后,修改HTTP请求方法,修改Content-Type头部字段等等,查看返回包的响应,看看应用程序是否解析了发送的内容,一旦解析了,那么有可能XXE攻击漏洞,接下来,来看一个小小的展示: 这个是测试 xxe 的测试点: 2/bWAPP/xxe-1.php我们点击下面的

7、Any bugs 然后用 burp抓包 9 10 我们随便输入下11 从上面我们可以看到, web应用正在解析xml的内容,接受用户特定或者自定义的输入,然后呈现给用户。为了验证,我们可以构造如下的输入: 可以看到应用程序确实是直接解析了 xml,那么如果xml文档中有一个参数是用来调用远程服务器的内容?这个参数是可控的 ,我们可以做什么? 12 XXE 漏洞 - 文件读取PHP中测试POC F ile:/path/to/file.ext http:/url/file.ext PHP:/filter/read=convert.base64-encode/resource=/home/bee/t

8、est.php 谁叜斍桩有回显的xxe利用Payload:13谁叜 php 斍仼直接读取 php文件会报错,因为php文件里面有/等特殊字符,xml解析时候会当成xml语法来解析。这时候就分不清处哪个是真正的xml语句了, 直接利用 file协议读取PHP文件,就会产生报错。那么需要base64编码来读取, Payload: 进行后得到对应内容14 本地测试无回显注入读取文件但是,在实际情况中,大多数情况下服务器上的 XML 并不是输出用的,所以就少了输出这一环节,这样的话,即使漏洞存在,我们的payload的也被解析了,但是由于没有输出,我们也不知道解析得到的内容是什么,因此我们想要现实中利

9、用这个漏洞就必须找到一个不依靠其回显的方法外带数据 先看一下漏洞示例: 15 相较于前面有回显的漏洞代码,我们去掉了内容输出的一部分。这样,用之前的 payload就没有作用了: Payload的构造:有了前面使用外部DTD文件来拼接内部DTD的参数实体的经验,我们可以知道,通过外部DTD的方式可以将内部参数实体的内容与外部DTD声明的实体的内容拼接起来,那么我们就可以有这样的 设想: (1)(2)(3)(4)客户端发送 payload 1给web服务器 web服务器向vps获取恶意DTD,并执行文件读取payload2 web服务器带着回显结果访问VPS上特定的FTP或者HTTP 通过 VP

10、S获得回显(nc端口) 16 首先,我们使用ncat一个端口:也可以用 python创建一个建议的http服务。 python -m SimpleHTTPServer 端口 然后,我们构造payload: 我们选择使用外部DTD,在我们自己所能掌控(或是自己搭建)的主机上编写一个dtd文件: 我们注意到,第一个参数实体的声明中使用到了 php的base64编码,这样是为了尽量避免由于文件内容的特殊性,产生xml解析器错误。 Payload如下: 17 如图,我们先声明一个外部的 DTD引用,然后再xml文档内容中引用外部DTD中的一般实体。 开始攻击: 18 然后查看我们的端口Ps: 情况,会

11、发现我们收到了一个连接请求,问号后面的内容就是我们读取到的文件内容经过编码后的字符串:有时候也会出现报错的情况(这是我们在漏洞的代码中没有屏蔽错误和警告),比如我们这里的payload没有选用php的base64编码,这里报错了,但是同时也将所读取的内容爆了出来,只是特殊字符经过了HTML实体编码。 内网探测xxe 由于可以访问外部 url,也就有类似 ssrf 的攻击效果,同样的,也可以利用 xxe 来进行内网探测。 可以先通过 file 协议读取一些配置文件来判断内网的配置以及规模,以便于编写脚本来探测内网。 一个 python 脚本实例: 19 20 运行起来大概是这样21DDOS攻击

12、该攻击通过创建一项递归的 XML 定义,在内存中生成十亿个”abc”字符串,从而导致 DDoS 攻击。原理为:构造恶意的XML实体文件耗尽可用内存,因为许多XML解析器在解析XML文档时倾向于将它的整个结构保留在内存中,解析非常慢,造成了拒绝服务器攻击。 影响:此漏洞非常危险 , 因为此漏洞会造成服务器上敏感数据的泄露,和潜在的服务器拒绝服务攻击。防御方法:22 .禁用外部实体 过滤和验证用户提交的 XML数据 不允许 XML中含有任何自己声明的DTD 有效的措施:配置 XML parser只能使用静态DTD,禁止外来引入;对于Java来说,直接设置相应的属性值为false即可 参考文章如下: /backlion/p/930252

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论