XXE简介

1.   什么是XML

      xml: eXtensibleMarkup Language,可扩展标记语言,使用简单的标记来描述数据。

      xml是一种非常灵活的语言,类似于HTML语言,但是并没有固定的标签,所有的标签都可以自定义,其设计的宗旨是传输数据,而不是像HTML一样显示数据。

      xml不会做任何事情,它是被设计用来结构化、存储以及传输信息,也就是xml文件所携带的信息,需要被其他的语言或者程序来解析,才能发挥作用。

2.   XML的用处

      通常,xml被用于信息的记录和传递(比如,数据库的导出导入会很麻烦,但是xml会很方便),也会被用于充当配置文件。也会被应用于Web 开发的许多方面,常用于简化数据的存储和共享。如:

      XML 把数据从 HTML 分离,更方便在HTML文档中显示动态数据。

      XML 简化数据共享,XML数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。这让创建不同应用程序可以共享的数据变得更加容易。

      XML 简化数据传输,由于可以通过各种不兼容的应用程序来读取数据,以 XML 交换数据降低了不兼容系统之间交换书据的复杂性。

      XML 简化平台变更,使用XML存储一些不兼容的数据,可以在系统或软件升级,转换大量的数据时,避免数据的丢失。

      XML 使您的数据更有用,XML可以使不同的应用程序都能够访问您的数据,使得数据的用途更广。

      XML 用于创建新的互联网语言,如XHTML、WSDL、WAP 和 WML、RSS 、RDF 和 OWL等

3.   什么是XML注入

      XML与HTML一样,也存在注入漏洞。比如:一个 web 应用,在进行用户注册时,选择以 xml 来存储数据到 xmldb 数据库中,当用户填写用户名,密码和邮箱时,后台存储的文件格式及内容如下:

      

 

      那么攻击者就可以在注册的时候构造恶意的数据,假设他在用户名与密码的输入框中输入正常的文本,在最后的邮箱输入框中输入如下内容:

 

      

      那么就会多注册一个名为admin的用户。

      综合上面的小例子,我们可以知道,能够进行XML注入攻击的前提是,用户能够控制数据的输入,程序没有对输入的内容进行过滤且拼接了数据。那么相应的,破坏掉其中一个前提就可以进行防御了,既然我们无法限制用户的输入,那么就可以对数据进行过滤,将XML语言本身的“保留字符”进行过滤或者转意即可。

4.   什么是XXE注入漏洞:

      XXE注入也是XML注入的一部分,但相较于普通的XML注入,XXE注入的攻击面更广,危害更大。

      XXE注入(XML External Entity Injection) 全称为 XML 外部实体注入,从名字就能看出来,所注入的对象就是我们实验任务一中提到的重点: XML外部实体。当遇见能够解析XML内容的页面时,如果能注入外部实体并且成功解析的话,这就会大大拓宽我们 XML 注入的攻击面。

      XXE的攻击形式主要分为:带内数据实体注入、基于错误的实体注入和带外数据实体注入

      带内数据实体注入:in-band ,XML解析后的数据会直接显示在屏幕上

      基于错误:error-based,解析结果只有一大堆的错误

      带外数据:out-of-band,也叫XXE盲注,注入的XML解析后无任何输出响应,必须执行一些带外请求把数据提取出来。

5.   XXE注入能做什么:

      a. 任意文件读

      b. SSRF,服务端请求伪造,借助漏洞实现内网探测,

      c. DOS攻击

      d. 远程命令执行

6.   PHP的XXE注入产生的条件:

      a. Libxml的版本尽可能的低,libxml是PHP的xml解析库,因为从2.8.0版本开始,libxml默认是不加载外部实体的,如果要使用较高版本的libxml的话,需要在编写代码的时候对参数做设置。

      b. 目标主机没有禁用外部实体的引用。

      c.  用户可以控制xml的输入内容

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值