Xxe总结

Xxe总结

原理:

XML

XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

DTD

通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。

通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。

而您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。

您还可以使用 DTD 来验证您自身的数据

XML文档的构建模块:

所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:

    元素

    属性

    实体

    PCDATA

    CDATA

实体类别介绍:

实体主要分为:

    内置实体 (Built-in entities)

即对XML⽂档中的元素、属性和实体的DTD的声明都在XML⽂档中

<!ENTITY 实体名称 "实体内容">

外部实体:

即对XML⽂档中的元素、属性和实体的DTD的声明都在⼀个独⽴的DTD⽂

件(.dtd)中

<!ENTITY 实体名称 SYSTEM "URI">

 

XXE的攻击与危害:

危害:

读取任意文件

命令执行

内网探测/SSRF

拒绝服务攻击

后端WEB漏洞如果可以通过URL加以利用,可造成WEB漏洞攻击

构件外部实体注入:

方式一:直接通过DTD外部实体声明

方式二:通过DTD文档引入外部DTD文档,再引入外部实体声明

方式三:通过DTD外部实体声明引入外部实体声明

 

支持的协议:

防御xxe攻击:

方案一、使用开发语言提供的禁用外部实体的方法

PHP:

libxml_disable_entity_loader(true);

JAVA:

DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();

dbf.setExpandEntityReferences(false);

Python:

from lxml import etree

xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))

方案二、过滤用户提交的XML数据

<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值