网络安全-XXE(XML外部实体注入)原理、攻击及防御

目录

前言

简介

原理

攻击

防御

禁用外部实体

过滤用户提交的XML数据


前言

XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。

博主之前用xml也没有使用过DTD,因为是可选的嘛,这里就简单说一下,学过的跳过。

DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可以在 XML 文档内声明,也可以外部引用。

内部声明DTD

引用外部DTD文档

内部声明实体

引用外部实体

调用方式:&实体名称;

简介

XML外部实体注入(XML External Entity,为什么不取首字母呢...),简称XXE漏洞。

原理

服务端接收并解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入。

攻击

使用靶机:pikachu

网络安全-XXE(XML外部实体注入)原理、攻击及防御_第1张图片



]>
&hacker;

 

网络安全-XXE(XML外部实体注入)原理、攻击及防御_第2张图片 字符串回显


]>
&hacker;

 

网络安全-XXE(XML外部实体注入)原理、攻击及防御_第3张图片 敏感文件查看

防御

禁用外部实体

PHP中使用libxml_disable_entity_loader(true);
其他语言(C++、Java等):owasp XXE防御备忘录

博主在做项目时使用的是xml.etree.ElementTree,在python官方文档中也提到对于错误xml以及恶意构建的xml可能存在解析漏洞。不过,python在外部实体注入方面认为是安全的。

过滤用户提交的XML数据

过滤掉关键词:SYSTEM和PUBLIC

更多内容查看:网络安全-自学笔记

喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。

你可能感兴趣的:(网络安全)