28. 注入篇——XML注入
阿新 • • 發佈:2019-02-12
XML
XML是The Extensible Markup Language(可擴充套件標識語言)的簡寫。XML最初設計的目的是彌補HTML的不足,後來逐漸用於網路資料的轉換和描述。XML的設計宗旨是傳輸資料,而非顯示資料。
目前,XML在WEB中的應用已經非常廣泛。下面舉一個簡單的XML例項:
<?xml version="1.0" encoding="utf-8"> <manager> <admin id="1"> <name>admin</name> <password>admin</password> <admin> <admin id=2> <name>root</name> <password>root</password> </admin> </manager>
XML注入
XML與HTML一樣,也存在注入攻擊,甚至在注入的方法上也非常相似。
對於上面的xml檔案,如果攻擊者能夠掌控password欄位,那麼就會產生XML注入,如攻擊者輸入:
admin </password></admin><admin id="100"><name>hack</name><password>hacker</password></admin>
最終的修改後的XML為:
<?xml version="1.0" encoding="utf-8"> <manager> <admin id="1"> <name>admin</name> <password>admin</password> </admin> <admin id="100"> <name>hack</name> <password>hacker</password> </admin>
以上的程式碼相當於添加了一個名為hack、密碼為:hacker的新的使用者到管理員組內!
XML注入時的兩大注意點:
(1)標籤閉合(關鍵所在)
(2)獲取XML的表結構
XML注入的前提條件
(1)使用者能夠控制資料的輸入
(2)程式有拼湊的資料
XML注入防禦
(1)對使用者的輸入進行過濾
(2)對使用者的輸入進行轉義
預定義字元 | 轉以後的預定義字元 |
< | < |
> | > |
& | & |
' | ' |
" | " |