關于DOM型XSS

學號:16030140019

姓名:?? 莫益彰

【嵌牛導讀】:DOM,全稱Document Object Model,是一個平臺和語言都中立的接口,可以使程序和腳本能夠動態(tài)訪問和更新文檔的內(nèi)容、結構以及樣式。

【嵌牛鼻子】信息安全,dom

【嵌牛提問】:為什么要注意DOM型XSS漏洞?DOM-based XSS 與存儲性 XSS、反射型 XSS 有什么區(qū)別?

【嵌牛正文】

先以一張w3c的圖來說明,到底什么是dom:


dom就是一個樹狀的模型,你可以編寫Javascript代碼根據(jù)dom一層一層的節(jié)點,去遍歷/獲取/修改對應的節(jié)點,對象,值。了解了這么一個知識點,你就會發(fā)現(xiàn),其實dom xss并不復雜,他也屬于反射型xss的一種(domxss取決于輸出位置,并不取決于輸出環(huán)境,因此domxss既有可能是反射型的,也有可能是存儲型的),簡單去理解就是因為他輸出點在DOM。dom - xss是通過url傳入?yún)?shù)去控制觸發(fā)的)分析完dom-xss之后,再說說存儲型xss,其實也很好理解,存儲型xss,自然就是存入了數(shù)據(jù)庫,再取出來,導致的xss。3,)反射型xss實際上是包括了dom - xss了,關鍵點仍然是在通過url控制了頁面的輸出(dom-xss也類似,只因為輸出地點不同而導致結果不一致)。

DOM型XSS其實是一種特殊類型的反射型XSS,它是基于DOM文檔對象模型的一種漏洞。

在網(wǎng)站頁面中有許多頁面的元素,當頁面到達瀏覽器時瀏覽器會為頁面創(chuàng)建一個頂級的Document object文檔對象,接著生成各個子文檔對象,每個頁面元素對應一個文檔對象,每個文檔對象包含屬性、方法和事件??梢酝ㄟ^JS腳本對文檔對象進行編輯從而修改頁面的元素。也就是說,客戶端的腳本程序可以通過DOM來動態(tài)修改頁面內(nèi)容,從客戶端獲取DOM中的數(shù)據(jù)并在本地執(zhí)行?;谶@個特性,就可以利用JS腳本來實現(xiàn)XSS漏洞的利用。

可能觸發(fā)DOM型XSS的屬性

document.referer屬性

window.name屬性

location屬性

innerHTML屬性

documen.write屬性

······

利用DOM引發(fā)XSS

利用DOM來引發(fā)XSS的方法有很多,這里只演示幾種。

利用創(chuàng)建元素createElement():

以DVWA反射型XSS為例,先在Kali監(jiān)聽1234端口:


?然后在DVWA中輸入:


在Kali中可看到cookie信息:

利用innerHTML:

用于篡改頁面:


利用document.onkeypress:

即進行鍵盤記錄。

在Kali的網(wǎng)頁根目錄下保存Keylogger.js文件:


訪問一下確保可行:

接著就是將keylogger.php文件也保存在同一個目錄來是實現(xiàn)將鍵盤得到記錄保存到本地的keylog.txt文件中,即將接受到的key參數(shù)的取值保存到該文件中:

keylogger.php:


接著創(chuàng)建一個空的keylog.txt文件,然后賦予相應的可寫的權限,這里為了方便就將權限賦給所有的用戶:chmod 777 keylog.txt接著在Kali中打開的DVWA中輸入:然后在該網(wǎng)頁中隨意輸入內(nèi)容,查看keylog.txt文件可看到記錄了下來:


DOM型XSS的防御方法

DOM型XSS主要是由客戶端的腳本通過DOM動態(tài)地輸出數(shù)據(jù)到頁面而不是依賴于將數(shù)據(jù)提交給服務器端,而從客戶端獲得DOM中的數(shù)據(jù)在本地執(zhí)行,因而僅從服務器端是無法防御的。其防御在于:(1) 避免客戶端文檔重寫、重定向或其他敏感操作,同時避免使用客戶端數(shù)據(jù),這些操作盡量在服務器端使用動態(tài)頁面來實現(xiàn);(2) 分析和強化客戶端JS代碼,特別是受到用戶影響的DOM對象,注意能直接修改DOM和創(chuàng)建HTML文件的相關函數(shù)或方法,并在輸出變量到頁面時先進行編碼轉義,如輸出到HTML則進行HTML編碼、輸出到則進行JS編碼。

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

相關閱讀更多精彩內(nèi)容

  • 跨站腳本(XSS)是web應用中的一種典型的計算機安全漏洞。XSS允許攻擊者可以在其他用戶瀏覽的web頁面中注入客...
    留七七閱讀 8,300評論 1 26
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,535評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,917評論 25 709
  • 不管是裂變也好,社群營銷也好,首先我們要清晰為什么要去做,做這個事情對于我們的好處是什么。社群你可以簡單的理解叫微...
    愛徒步的紅姐閱讀 859評論 0 2
  • In my view, Chinese innovation is to imitate first and th...
    吳筱雨_8dbf閱讀 229評論 0 0

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