XXE注入安全
一、XXE注入安全
XXE即XML外部注入漏洞。XXE漏洞发送在应用程序解析XML输入时,没有禁止外部实体的加载,导致可以加载恶意外部文件,造成文件读取、命令执行等。XXE漏洞出发点在可以上传XML文件的位置,对上传的XML文件过滤,导致上传恶意XML文件。
二、XML基础必备
用来传输和存储数据。没有预定义标签,用户可以自定义标签。
2.1 XML语法基础
https://www.w3school.com.cn/xml/xml_syntax.asp
- 所有XML元素都必须有关闭元素。
- XML标签对大小写敏感。
- XML必须正确的嵌套。
- XML元素必须有跟元素。
- XML的属性值必须添加引号。
2.2 实体引用
- <、>、&、'、"在XML中时特殊符号,需要用实体表示
特殊符号 | 实体 | 说明 |
---|---|---|
< | < | 小于 |
> | > | 大于 |
& | & | 和号 |
’ | ' | 单引号 |
" | " | 双引号 |
2.3 DTD文档类型定义
DTD是定义XML文档合法构建的模块,可以在XML文档定义,也可以在外部引用。
2.3.1 内部的文档声明
- <! DOCTYPE 根元素[元素声明]>
<?xml version="1.0" ?> <!DOCTYPE note[ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>xiaohong</to> <from>Xiaoming</from> <heading>hello</heading> <body>hi,xiaohong</body> </note>
2.3.2 外部的文档声明
假如DTD位于XML源文件的外部,那么它应通过下面的语法被封装在一个DOCTYPE定义中
-
<! DOCTYPE 根元素 SYSTEM “文件名”>
<?xml <