OWASP TOP10(2017)之【XML 外部实体(XXE)】

目录

XML以及XXE漏洞介绍

实战

利用XXE漏洞读取文件(有回显)

①读取.ext文件

②读取php文件

利用XXE漏洞读取文件(无回显)

XXE防御策略

XXE漏洞消亡原因

XXE漏洞防御


XML以及XXE漏洞介绍

XML是指可扩展标记语言,用来传输和存储数据。XML文档结构包括XML声明,DTD文档类型定义(可选),文档元素。XML的焦点是数据的内容,它把数据从HTML分离,是独立于软件和硬件的信息传输工具。HTML旨在显示信息,XML旨在传输和存储信息。

XXE漏洞全称XML External Entity Injection,即XML外部实体注入漏洞。XXE漏洞发生在应用程序解析XML时,没有禁止外部实体的加载,导致客家在恶意外部文件,造成文件读取,命令执行,内网端口扫描,攻击内网网站,发起dos攻击等危害。 

XXE漏洞的触发点往往是可以上传XML文件的位置没有对上传的xml文件进行过滤,导致可上传恶意xml文件。

DTD内容参考:DTD 简介 (w3school.com.cn)

实战

注)会涉及到一些php代码。靶场的配置什么的见视频吧。。。实战里面只简述XXE的实现方法 

利用XXE漏洞读取文件(有回显)

几种文件路径格式:

  • file://path/to/file.ext(读取本地文件)
  • http://url/file.ext(读取远程文件)
  • php://filter/read=convert.base64-encode/resource=conf.php(php文件需要使用base64编码来读取)

①读取.ext文件

Payload:

OWASP TOP10(2017)之【XML 外部实体(XXE)】_第1张图片

如下图所示,直接在请求体写入Payload。返回体里显示已经读取到相应内容。

OWASP TOP10(2017)之【XML 外部实体(XXE)】_第2张图片

②读取php文件

Payload:

OWASP TOP10(2017)之【XML 外部实体(XXE)】_第3张图片如下图所示,直接在请求体写入Payload。返回体里显示已经读取到相应内容。

OWASP TOP10(2017)之【XML 外部实体(XXE)】_第4张图片

然后再将返回的内容通过base64解密即可得到php文件的内容。

利用XXE漏洞读取文件(无回显)

 本节测试原理:(服务器:192.168.1.105,攻击者server:192.168.1.103)

  1. 攻击者发送一个XML请求到服务器端(参考文件【请求XML】)
  2. 服务器端接收到攻击者的请求,去攻击者自定义的server端获取dtd校验文件(参考文件【test.dtd】)
  3. 攻击者server返回dtd文件到服务器端
  4. 服务器执行对应的XML,在服务器本地获取相应数据,然后将数据信息返回给攻击者server

OWASP TOP10(2017)之【XML 外部实体(XXE)】_第5张图片

 请求XML:

OWASP TOP10(2017)之【XML 外部实体(XXE)】_第6张图片

攻击者构建的dtd文件(test.dtd):

文件内容解析:

  1. 获取服务器本地的/etc/passwd文件,并将其保存到变量p1中
  2. 通过http请求使用con参数把p1的内容传递到对应的服务器上

注)前提是服务器存在XXE漏洞这些语句才能执行成功

XXE防御策略

XXE漏洞消亡原因

libxml2.9.0以后,默认不解析外部实体,导致XXE漏洞逐渐消亡。

XXE漏洞防御

①使用开发语言提供的禁用外部实体的方法:

OWASP TOP10(2017)之【XML 外部实体(XXE)】_第7张图片

②过滤用户提交的XML数据

关键词:

视频教程:2019超详细 渗透测试/黑客入门/漏洞学习视频教程

你可能感兴趣的:(Web安全相关,网络安全)