XXE实体注入漏洞知识点

  • 什么是XXE漏洞?

XXE,即XML外部实体注入漏洞,XXE 漏洞发生在应用程序解析 XML 输入时, 没有禁止外部实体的加载 ,导致可加载恶意外部文件,造成文件读取、命令执行、攻击内网网站等危险。

XXE漏洞触发的点往往是可以上传xml文件的位置,没有对上传的xml文件进行过滤,导致可上传恶意xml文件。

  • 什么是XML?

XML指可扩展标记语言,xml标签对大小写敏感
XML被设计用来传输和存储数据。xml元素必须要有一个关闭标签
XML语言没有预定义的标签,允许作者定义自己的标签和自己的文档结构。

  • xml和html结构类似,不同的是:

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

HTML 被设计用来显示数据。

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

  • 实体引用

实体引用是因为在浏览器中直接使用这几个符号可能无法成功打印出来,可能会有歧义,所以就需要实体引用起作用了

  • 什么是DTD?

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

DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

  • DTD实体

实体是用于定义引用普通文本或特殊字符的快捷方式的变量。

实体引用是对实体的引用。

实体可以在内部或外部进行声明

  • 实体ENTITY:

XML中的实体类型,一般有下面几种:

1.内部实体(变量声明)

<!ENTITY 实体名称 "实体的值">

内部实体可以说成是变量声明,内部实体只能在DTD或者XML文件开始部分(<!DOCTYPE>语句中) 

2.外部实体

     外部普通实体声明:

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

外部实体用于加载外部文件的内容。(显示XXE攻击主要利用普通实体) 

     外部参数实体声明:

<!ENTITY %实体名称 "值">

<!ENTITY %实体名称 SYSTEM ”URI”>

参数实体是以字符%开始,以字符(;)结束。只有在DTD文件中才能在参数实体声明的时候引用其他实体。(Blind(无回显) XXE攻击常利用参数实体进行数据回显)

外部声明默认协议及PHP扩展协议

其中PHP支持的伪协议较多。

防御XXE

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

#过滤用户提交的XML数据

过滤关键字:<\!DOCTYPE和<\!ENTITY,或者SYSTEM和PUBLIC。

不允许XML中含有自己定义的DTD

知识点源于:

XXE漏洞基础及简单利用_xxe漏洞的利用方法-CSDN博客

(渗透学习)XXE漏洞原理 & 挖掘 & 利用 & 防御_xxe漏洞挖掘-CSDN博客

浅谈XML实体注入漏洞 - FreeBuf网络安全行业门户

相关推荐

  1. 33-2 XXE漏洞 - XXE外部实体注入原理

    2023-12-17 18:48:03       14 阅读
  2. web安全——sql注入漏洞知识总结

    2023-12-17 18:48:03       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-17 18:48:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-17 18:48:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-17 18:48:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-17 18:48:03       20 阅读

热门阅读

  1. 字节面试题(懂车帝)后端开发

    2023-12-17 18:48:03       48 阅读
  2. Python学习之复习MySQL-Day2(DML)

    2023-12-17 18:48:03       52 阅读
  3. vue使用自定义指令使用滚动加载

    2023-12-17 18:48:03       48 阅读
  4. Android手机使用Termux终端模拟器

    2023-12-17 18:48:03       68 阅读
  5. 如何设定一个N层CNN的Layer,CNN初始化

    2023-12-17 18:48:03       39 阅读
  6. Linux与常用的Linux命令

    2023-12-17 18:48:03       38 阅读
  7. mysql原理--MySQL的数据目录

    2023-12-17 18:48:03       40 阅读
  8. 基于SpringBoot和微信小程序的农场信息管理系统

    2023-12-17 18:48:03       43 阅读
  9. Python3 字符串 ----20231216

    2023-12-17 18:48:03       44 阅读
  10. CRAG数据库

    2023-12-17 18:48:03       40 阅读