注入攻击与防御_XXE(Web漏洞及防御)

91f49e3db66dbc7c6e31c37c8ea3bb3c.png

XEE:XML External Entity(XML外部实体)

(注意:XEE与XML注入、XPATH注入漏洞不一样的!)

XML:可扩展标记语言,用来结构化,存储以及传输信息!

XML文档结构:

  1. XML声明
  2. 文档类型定义(Document Type Definition,DTD,可选项)
  3. 文档元素
d04ab310454817b8b9b7badf85754fb6.png

DTD:用来约束一个XML文档的书写规范!

  1. 定义元素

(对应XML中的标签)

  1. 定义实体

(对应XML标签中的内容)

内部定义:将文档类型定义直接放在XML文档中

45c75c3e77a02bf82ab91ee51726b876.png

DOCTYPE note:定义此文档是note类型的文档!

ELEMENT note(to,from,heading,body)定义note有4个元素:

to,from,heading,body!

ELEMENT to(#PCDATA)定义to元素为#PCDATA类型

......

假如DTD文档位于XML源文件的内部

通过引用【外部文档说明】的方式进行引用!

ecedfda071dc62cfbaac8a406be413e1.png

外部引用:

文档类型定义的内容可以保存为单独的DTD文档

  1. DTD文档在本地

用SYSTEM标识,并写上”DTD的文件路径”,如下:

  1. DTD文档在公共网络上

用PUBLIC标识,如下:

称" "DTD文件的URL">

b1e66da5ce4ead81413ab597d312a9ef.png

DTD实体声明

  1. 内部实体声明
059feb9acf15610e395e971ba5a3fba9.png
  1. 外部实体声明
e2d96432d695b55fb793ff46826d44c6.png
ff6de33ae71af44011597a707f700cce.png
  1. 参数实体声明
68e0f6d2cd45099638d727d37280529c.png
  1. 引用公共实体

漏洞产生的原因

XXE是一种针对应用程序的解析XML输入的攻击,当输入包含外部实体引用的XML文件到未进行安全配置的XML解析器中时,易产生此类攻击!

XXE的利用

  1. 泄漏本地文件
// 通过加载外部实体,利用file://、php://等伪协议读取本地文件
c766feb657160bc2359d306e17679dc3.png
c07f44f349b7ce66ef59fb92dd3f0c81.png
  1. CSRF/SSRF攻击
// 攻击者使用受信任的应用程序来攻击内部的其他系统,通过HTTP请求或内部服务发起SSRF攻击
  1. 命令执行
expect://系统标识符执行系统命令
  1. 拒绝服务
// 执行特定的操作占用系统大量内存,从而造成系统瘫痪!
  1. 内网端口探测
// 访问特定的端口,来探测端口是否开放!
d6ecdcaf30a777a8e14590bab3d07407.png

注意:具体实例,会在<>篇详解!

XEE防御

  1. 禁用DTD中外部实体

防止外部实体的注入!

libxml_disable_loader(true)
  1. 过滤用户提交的XML数据

过滤关键字:

SYSTEM

PUBLIC

......

补充

XML解析器

DOM解析方式

SAX解析方式

JDOM

DOM4J

各种解析方式的工作原理,都支持外部实体的引用,因此防御过程中,一般都禁用对DTD的支持,需要支持的话,一定要禁用对DTD中外部实体引用的支持!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值