网络安全

XML注入介绍--XXE,XEE,xpath等

XML注入指在请求的XML中插入攻击利用代码。根据不同的场景,可能会形成以下的漏洞形式:

(1)XEE ----xml entity xpansion(xml实体膨胀,用于dos)

(2)XXE-----xml external entity injection(xml外部实体注入,最为常见的方法)

(3)soap注入

(4)xpath注入

XML实体攻击已经是一个很老的技术了,这里仅对学习的过程做一个记录。

$keyword= $_POST['keyword'];

$xml_obj= simplexml_load_string($keyword);

var_dump($xml_obj);

上面这段代码用于XXE实体攻击的练习,你可以将其保存至你的环境下用于测试。(记得删除:P)

XML讲解可以参考w3schools的教程。

这里简单说一下XML中的实体类型,大致有下面几种:

字符实体

命名实体

外部实体

参数实体

除参数实体外,其它实体都以字符(&)开始,以字符(;)结束。常规实体有:'(')、&(&)、"(")、<()。

字符实体类似html中的实体编码,形如:a(十进制)或者a(十六进制)。

命名实体可以说成是变量声明,命名实体只能声明在DTD或者XML文件开始部分(语句中)。如下面代码所示:

]>

&x;&y;

外部实体用于加载外部文件的内容。(XXE攻击主要利用此实体)

]>

&outfile;

参数实体用于DTD和文档的内部子集中。与一般实体相比它以字符(%)开始,以字符(;)结束。只有在DTD文件中才能在参数实体声明的时候引用其他实体。(XXE攻击常结合利用参数实体进行数据回显)

%dtd;

]>

&content

combine.dtd中的内容为:

上面combine.dtd中定义了一个基本实体,引用了3个参数实体:

%param1;,%param2;,%param3;。

解析后...中的内容为Hello World。

XML实体攻击主要利用了XML实体中的外部实体结合各种协议来读取服务器上的数据,在DTD文件中的参数实体声明时能够引用其他参数实体的值,因此在XXE攻击回显遇到困难时会用到。

*简单文件读取

因为可以进行外部实体加载,在XXE攻击中常用来进行本地文件读取。

]>

&content;

在使用file://协议时,有以下几种格式:

* Linux

file:///etc/passwd

* Windows

file:///c:/windows/win.ini

file://localhost/c:/windows/win.ini

(下面这两种在某些浏览器里是支持的)

file:///c|windows/win.ini

file://localhost/c|windows/win.ini

除了使用file://协议进行文件读取外,如果XML文档是用PHP进行解析的,那么还可以使用php://filter协议来进行读取。

]>

&content;

* DoS攻击

因为解析器会解析文档中的所有实体,因此如果实体声明层层嵌套的话,在一定数量上可以对服务器器造成DoS。

...

]>

&x100;

嵌套实体声明曾指数增长,可能造成对服务器的DoS。

]>

加载一个不稳定的文件描述也可能产生DoS。

*端口扫描

加载外部DTD时有两种加载方式,一种为私有private,第二种为公告public。

私有类型DTD加载:

公共类型DTD加载:

在公共类型DTD加载的时候,首先会使用DTD_name来检索,如果无法找到,则通过DTD_location来寻找此公共DTD。利用DTD_location,在一定的环境下可以用来做内网探测。

]>

&portscan;

因解析器种类不同,所以针对XXE攻击进行端口扫描需要一个合适的环境才能够实现,例如:有明显的连接错误信息。

*利用DTD进行数据回显

当利用XXE攻击进行文件读取时经常因为没有回显而显得鸡肋,这个时候就可以结合参数实体的特殊性,加载一个外部DTD来进行回显。

%dtd;

%send;

]>

其中evil.dtd的内容如下:

">

%payload;

在DTD文件中声明了参数实体payload,其值是一个实体参数声明,因为是在DTD里面,所以可以引用上文的%file;参数实体,%file;参数实体为c:/windows/win.ini文本的内容。最后在原XML里引用DTD中的参数实体,此时就可以讲本地文件读取的内容通过HTTP发送出去(为了让请求的URL有效,这里对使用了php://filter协议,并将内容使用base64进行了编码)。

此方法针对数据不回显的情况及其有用。

*远程命令执行

当然了,除了文件读取和DoS外,某些情况下还能进行RCE。例如在PHP开启了PECL上的Expect扩展时,就能使用expect://协议来执行命令。

]>

&content;

利用XXE攻击时需要结合实际环境才能发挥出其威力。:D

参考

内容来源于网络,如有侵权请联系客服删除

windows文件读取 xxe_XML注入介绍--XXE,XEE,xpath等相关推荐

  1. XML注入介绍--XXE,XEE,xpath等

    XML注入指在请求的XML中插入攻击利用代码.根据不同的场景,可能会形成以下的漏洞形式: (1)XEE ----xml entity xpansion(xml实体膨胀,用于dos) 具体介绍:http ...

  2. windows文件读取 xxe_java xxe漏洞

    一.XXE漏洞简介 1.XXE(XML外部实体注入,XML External Entity) ,在应用程序解析XML输入时,当允许引用外部实体时,可构造恶意内容,导致读取任意文件.探测内网端口.攻击内 ...

  3. windows文件读取 xxe_XXE任意文件读取(当xml解析内容有输出时)

    利用XXE漏洞读取文件 参考:https://www.jianshu.com/p/4fc721398e97 首先找到登录源码如下: 由题目可以利用XXE漏洞读取文件 先登录用Burp Suite抓包: ...

  4. windows文件读取 xxe_XXE漏洞学习

    0x00 什么是XML 1.定义 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括XML声明.DTD文 ...

  5. java assetmanager_Android学习--Assets资源文件读取及AssetManager介绍

    APK安装过程 复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录,An ...

  6. OC中文件读取类(NSFileHandle)介绍和常用使用方法

    NSFileHandle 1.NSFileManager类主要对于文件的操作(删除,修改,移动,赋值等等) //判断是否有 tagetPath 文件路径,没有就创建NSFileManager *fil ...

  7. 《从0到1:CTFer成长之路》1.3 任意文件读取漏洞

    文章目录 1.3.1 文件读取漏洞常见触发点 1.3.1.1 web语言 1. PHP 2.python 3.Java 4.Ruby 5.Node 1.3.1.2 中间件.服务件相关 1.Nginx错 ...

  8. python文件审计_Python代码审计实战案例总结之CRLF和任意文件读取

    文章目录 介绍 CRLF和任意文件读取的审计实战 CRLF 审计实战 urllib CRLF漏洞(CVE-2019-9740和CVE-2019-9947) httplib CRLF 漏洞 任意文件读取 ...

  9. WINDOWS 文件夹内容

    WINDOWS 文件夹内容 WINDOWS 文件夹内容的介绍,看了你就明白了. ├-WINDOWS │ ├-system32(存放Windows的系统文件和硬件驱动程序) │ │ ├-config(用 ...

最新文章

  1. 计算机视觉研究入门全指南----新手博士需要准备的资料
  2. shell 拿到service状态_9个实战及面试会经常用到的Shell脚本!
  3. 银河足球队 android 8,银河足球队手机版_银河足球队安卓游戏v1.0.1-游迅网
  4. 使用 Tye 辅助开发 k8s 应用竟如此简单(二)
  5. 软考考前冲刺第十三章UML建模
  6. 我去,这几个Linux指令太装B了|动图展示
  7. python数组类型_一文搞懂Python中的所有数组数据类型
  8. XenApp 6安装过程中的两个常见错误
  9. 微信小程序html modal,微信小程序 modal组件详细介绍
  10. 为什么每天工作那么努力,却无法突破职场瓶颈?
  11. 精选西门子PLC工程实例源码【共300套】
  12. spring事务之REQUIRED
  13. 每日excel学习之分类汇总和数据有效性
  14. python初步判断车牌
  15. python爬虫爬取美丽小姐姐图片美女壁纸
  16. WiFi辐射比手机电脑辐射数值小 60厘米外基本为0
  17. python—生成带logo的二维码(零基础向)
  18. 海底捞市值超大多数上市房企,火锅是怎么做到比卖房还赚钱的?
  19. C语言程序100例之C#版-024
  20. Android 13 NavigationBar

热门文章

  1. 达内科技:聪明的价格战
  2. arcgis栅格函数简介
  3. 计算机应用软件专业自学怎么学,自学考试计算机及应用专业应该怎么学
  4. 2022年自考专业考试(公关关系)公共关系口才练习题
  5. 什么是思维导图?思维导图高效学习法
  6. 袋鼠云数智之旅·德清站|受邀出席数字旅游最佳实践高峰论坛,分享数智良渚建设经验
  7. AARRR模型拆解「猪八戒网」用户生命周期
  8. 系分 - 法律法规与标准化
  9. 软件版本和实际有出入导致的后果_软件缺陷导致严重后果的典型案例
  10. rabbitmq重启