首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

还不懂XXE漏洞的童鞋,看过来

一、 什么是XXE漏洞?

XXE (XML External Entity injection)XML 外部实体注入漏洞,如果XML 文件在引用外部实体时候,可以沟通构造恶意内容,可以导致读取任意文件,命令执行和对内网的攻击,这就是XXE漏洞, 这个漏洞需要大家还有一定的XML协议基础,因此为了更好的去理解漏洞本身原理,必须给大家普及一下XML相关的知识点。

二、 XML的基础知识点

需要大家安安静静好好看一下XML基础,这里给大家 提供一个学习参考地址:(https://www.w3cschool.cn/xml/xml-intro.html), 为了让大家快速理解上手,我梳理了一下, 提取了关键思路点如下:

2.1、什么是XML?

XML是可扩展的标记语言(eXtensible Markup Language),设计用来进行数据的传输和存储, 结构是树形结构,有标签构成,这点很想HTML语言。 但是XML和HTML有明显区别如下:

XML 被设计用来传输和存储数据。

HTML 被设计用来显示数据。

2.2、XML结构?

来看一个简单的XML 文件结构, 第一行XML的声明,第二 为根元素, 下面的to, from,heading和body 都是子元素,构成了一个出色的自我描述性的结构

Tove

Jani

Reminder

Don't forget me this weekend!

2.3 XML DTD (重点)

DTD全称为,Document Type Definition,中文翻译为文档类型定义,是一套为了进行程序间的数据交换而建立的关于标记符的语法规则。

文档类型定义(DTD)可定义合法的XML文档构建模块。 它使用一系列合法的元素来定义文档的结构。

DTD 有两种声明的方法,一种是内部声明,一种是外部声明,我们下面开具体看一下:

DTD 的内部声明:

外部需要一个DTD的文件,比如:note.dtc

]>

Tove

Jani

Reminder

Don't forget me this weekend!

DTD的外部声明:

]>

Tove

Jani

Reminder

Don't forget me this weekend!

三、XXE漏洞的成因和危害?

3.1 漏洞成因

XML数据在传输中数据被修改,服务器执行被恶意插入的代码,最终实现攻击的目的,XXE漏洞就是在XML在外部声明的时候出现了问题。 看一下修改后的代码:

]>

&content;

3.2 漏洞危害

读取系统文件

执行系统命令

探测内网端口

攻击内部网络

四、XXE漏洞利用过程

4.1 环境介绍

OS: Centos 6.5 Linux

中间件:apache

xml的靶场测试环境:https://github.com/vulnspy/phpaudit-XXE

PHP: PHP Version 5.3.3 ,php要求的libxml2.8以下,截图如下:

4.2 读取系统文件

step1:为浏览器配置好burpsuit的代理(具体配置不在讲述)step2:打开靶场测试的index.php

step3: 选择“SimpleXMLElement.php”测试,点击"submit"

step5:把数据放到repeater 模块step6:提交数据到服务器,读取了/etc/passwd 文件内容

五、 加固建议

禁止使用DTD的外部声明

对用户提交过来的XML数据进行过滤

备: 本人也在学习中,如果有不准确的地方,希望大牛能多多指正,也希望大家分享的XXE漏洞更多的攻击手法。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180809G1RXLM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券