XML參數(shù)實(shí)體
參數(shù)實(shí)體必須定義在單獨(dú)的DTD文檔中或XML文檔的DTD區(qū)(但是引用只能在DTD文檔中,即外部子集,而不能在XML文檔的DTD區(qū)),前者為該XML文檔的外部子集,后者為該XML文檔的內(nèi)部子集
參數(shù)實(shí)體的作用是作為DTD中的元素的條件控制。參數(shù)實(shí)體定義以%作為開(kāi)頭,引用也以%開(kāi)頭,以;結(jié)尾。一般實(shí)體的定義無(wú)%開(kāi)頭,引用以&開(kāi)頭,以;結(jié)尾

DTD區(qū)
由于參數(shù)實(shí)體只能在DTD引用,因此參數(shù)實(shí)體看上去無(wú)害。利用參數(shù)實(shí)體進(jìn)行攻擊的payload。

malicious.dtd文件里的內(nèi)容如下:

由于外部參數(shù)實(shí)體是允許的,實(shí)體遠(yuǎn)程將在數(shù)據(jù)解析時(shí)擴(kuò)展,然后從攻擊者設(shè)置的惡意網(wǎng)站獲取DTD的另一部分,如上例中的internal。
在解析XML數(shù)據(jù)時(shí),任何引用internal的地方都將被文件/ etc / passwd的內(nèi)容替換。

