XML参数实体
参数实体必须定义在单独的DTD文档中或XML文档的DTD区(但是引用只能在DTD文档中,即外部子集,而不能在XML文档的DTD区),前者为该XML文档的外部子集,后者为该XML文档的内部子集
参数实体的作用是作为DTD中的元素的条件控制。参数实体定义以%作为开头,引用也以%开头,以;结尾。一般实体的定义无%开头,引用以&开头,以;结尾

由于参数实体只能在DTD引用,因此参数实体看上去无害。利用参数实体进行攻击的payload。

malicious.dtd文件里的内容如下:

由于外部参数实体是允许的,实体远程将在数据解析时扩展,然后从攻击者设置的恶意网站获取DTD的另一部分,如上例中的internal。
在解析XML数据时,任何引用internal的地方都将被文件/ etc / passwd的内容替换。


网友评论