Pentester Lab是一款老外编写的Web渗透练习环境。
XML注入相关概念:
XML是一种可扩展标记语言,可以理解为HTML的扩展语言,一般用于数据存储、数据传输、数据共享,其中DTD文档来解释XML文档。XML必须包含根元素,所有的标签都要闭合,对大小写敏感,并且属性值需要加引号。
XML注入即XXE(XML外部实体注入),是指利用可控的参数或入口来加载不可控的参数或代码,造成不可控的运行结果。
ENTITY实体:如果在XML文档中需要频繁使用某一条数据,可以预先给这个数据起一个别名。即一个ENTITY,然后再在文档中调用它。
XML定义了两种类型的ENTITY,一种在XML文档中使用,另一种在为参数在DTD文件中使用。
定义语法:<!DOCTYPE 文件名 [ <!ENTITY 实体名 "实体内容"> ] >
定义好的ENTITY在文档中通过“&实体名;”来使用。
正常来说,DTD分为内部DTD与外部DTD,内部DTD包含在XML文档中,外部DTD则通过URL引用。一个DTD文件是以.dtd结尾的文本文件 。前面还要加上SYSTEM,但是如果此处没有任何过滤,我们完全可以引用系统敏感文件的,前提是页面有回显,否则你只引用了文件但不知道文件内容。
漏洞产生原因:Xfire使用了STAX解析XML导致XML实体注入发生。
1、直接引入XML外部实体
2、未加任何过滤直接parse
漏洞危害:
1、任意文件读取:通过外部实体引用,可以获取文件内容