XXE基礎(chǔ)(1)--實(shí)體類別

DTD實(shí)體聲明的幾個(gè)重要類別

1.內(nèi)置實(shí)體

作用:通過(guò)內(nèi)置實(shí)體能夠表達(dá)特殊字符

特殊字符 替代符號(hào)
小于符號(hào)(<) <
大于符號(hào)(>) >
and符號(hào)(&) &
雙引符號(hào)(") "
單引符號(hào)(’) '

使用方式:

<?xml version="1.0" encoding="utf-8"?>
<test>
<to>
    &lt;script&gt;document.write("Hello,World")&lt;/script&gt;
</to>
</test>
使用實(shí)體,顯示Javascript代碼

2.字符實(shí)體

作用:通過(guò)字符不同進(jìn)制格式顯示Unicode字符

進(jìn)制 用法 顯示效果
十進(jìn)制 &#169; ?
十六進(jìn)制 &#xa9; ?

Unicode與中文在線互轉(zhuǎn)工具

3.引用實(shí)體

可以參考:XML引用(4)-DTD應(yīng)用
對(duì)于引用實(shí)體可以進(jìn)行連續(xù)性拼接使用
特點(diǎn):不僅僅可以在xml內(nèi)部使用,而且可以在DTD部分使用,但是在引用實(shí)體前,應(yīng)當(dāng)先完成實(shí)體聲明。

引用實(shí)體的連續(xù)性使用

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE to [
<!ENTITY SSH "port:22">
<!ENTITY scan "&SSH; is opening">
]>
<root>
<to>
    <ssh>&scan;</ssh>
</to>
</root>

通過(guò)多個(gè)實(shí)體的相關(guān)嵌套性使用可以進(jìn)行惡意拼接,就像是SQL Injection 攻擊手法

4.參數(shù)實(shí)體

關(guān)鍵符號(hào):%
特點(diǎn):只可以在DTD部分進(jìn)行使用。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE to [
<!ENTITY SSH "port:22">
<!ENTITY scan "&SSH; is opening">
<!ENTITY % ele "<!ELEMENT to (ssh)>">
%ele;
]>
<root>
<to>
    <ssh>&scan;</ssh>
</to>
</root>

參數(shù)實(shí)體成功執(zhí)行

XXE基本利用思路介紹

對(duì)于上面的使用演示都是基于內(nèi)部嵌入式DTD限制,XXE攻擊就是基于外部DTD實(shí)體聲明導(dǎo)致
基本思想:通過(guò)外部DTD引入任意文件或URL來(lái)進(jìn)行漏洞利用,加載至xml進(jìn)行實(shí)體利用回顯
例如:

<! ENTITY b SYSTEM "file:///etc/passwd">

參考資料:
https://www.ibm.com/developerworks/cn/xml/x-entities/#l2
https://blog.csdn.net/janchin/article/details/46849209


第一篇:XML簡(jiǎn)介(1)--頭部聲明
第二篇:XML編寫(2)--語(yǔ)法要求
第三篇:XML規(guī)范(3)--DTD限制
第四篇:XML引用(4)--DTD應(yīng)用
第六篇:XXE利用(2)--漏洞實(shí)現(xiàn)
第七篇:XXE后記(3)--拋磚引玉

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容