新聞中心
一、XSS概述

成都創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、小程序定制開發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立十多年以來,已經(jīng)為成百上千成都辦公空間設(shè)計(jì)各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)。現(xiàn)在,服務(wù)的成百上千客戶與我們一路同行,見證我們的成長(zhǎng);未來,我們一起分享成功的喜悅。
注:因此沒有反射型XSS、存儲(chǔ)型XSS、DOM XSS這種分類,因?yàn)榉诸愐罁?jù)都不同…
XSS的實(shí)質(zhì)其實(shí)是HTML代碼與Javscript代碼的注入。但由于XSS的攻擊對(duì)象是與客戶對(duì)等的Browser端,因此常常不被開發(fā)者所重視。
一般意義上的XSS通??梢杂煤?jiǎn)單的方法檢測(cè)出來:當(dāng)用戶輸入中某個(gè)參數(shù)的全部或其中一部分,原封不動(dòng)地在源代碼里出現(xiàn)時(shí),我們就可以認(rèn)為這個(gè)參數(shù)存在XSS漏洞。
我們可以在掃描器的幫助下鏟除絕大多數(shù)的常規(guī)XSS,因?yàn)閽呙杵魉瞄L(zhǎng)的模式識(shí)別很容易從HTML代碼里找出自己剛剛輸入的東西…
直到某一天,出現(xiàn)了一類不會(huì)在源代碼中回顯的XSS…此時(shí)我們才意識(shí)到,原來XSS并不像想象中的那么簡(jiǎn)單
二、文件對(duì)象模型簡(jiǎn)介
2.1 DOM簡(jiǎn)介
文檔對(duì)象模型(Document Object Model),即大名鼎鼎的DOM。
DOM可以被認(rèn)為是一種通過將頁面元素以對(duì)象的樹形方式表現(xiàn),以便由Javascript組織處理的實(shí)現(xiàn)方法。
2.2 常用的DOM方法
用戶可通過 JavaScript (以及其他編程語言)對(duì) HTML DOM 進(jìn)行訪問。所有 HTML 元素被定義為對(duì)象,而編程接口則是對(duì)象方法和對(duì)象屬性。
2.3 四個(gè)重要的DOM屬性
nodeName 屬性:規(guī)定節(jié)點(diǎn)的名稱。
- nodeName 是只讀的
- 元素節(jié)點(diǎn)的 nodeName 與標(biāo)簽名相同
- 屬性節(jié)點(diǎn)的 nodeName 與屬性名相同
- 文本節(jié)點(diǎn)的 nodeName 始終是 #text
- 文檔節(jié)點(diǎn)的 nodeName 始終是 #document
nodeValue 屬性:規(guī)定節(jié)點(diǎn)的值。
- 元素節(jié)點(diǎn)的 nodeValue 是 undefined 或 null
- 文本節(jié)點(diǎn)的 nodeValue 是文本本身
- 屬性節(jié)點(diǎn)的 nodeValue 是屬性值
nodeType 屬性:返回節(jié)點(diǎn)的類型。
- nodeType 是只讀的。
innerHTML 屬性:獲取元素內(nèi)容,如:
即text的值為Hello World!
innerHTML可以被賦值,也可讀,因此是被引用次數(shù)最多的對(duì)象屬性,同時(shí)也是最容易產(chǎn)生安全問題的對(duì)象屬性。
2.4 輸入一般在哪里
Location 對(duì)象屬性
JS通常會(huì)通過調(diào)用DOM內(nèi)置對(duì)象location來獲得用戶輸入,如引用參數(shù)切分可使用location.search,引用完整URL可使用location.href等。
三、DOM base XSS
3.1 兩個(gè)典型的DOM過程
1)反射型DOM base XSS
2)存儲(chǔ)型DOM base XSS
3.2 需要了解的知識(shí)點(diǎn)
比起常規(guī)XSS,DOM base XSS的漏洞發(fā)現(xiàn)過程更像是代碼審計(jì)..
3.3 典型DOM base XSS實(shí)例
3.4 mxss
如果用戶輸入“出入”DOM兩次以上,則有可能觸發(fā)更高級(jí)別的DOM base XSS:mXSS
3.5 容易出現(xiàn)mXSS的場(chǎng)景
由于innerHTML會(huì)將HTML實(shí)體,CSS轉(zhuǎn)義字符,ANSI編碼等進(jìn)行反轉(zhuǎn)義,因此原來被轉(zhuǎn)義之后認(rèn)為安全的用戶輸入很有可能在繞過過濾器之后被反轉(zhuǎn)回去。
四、過濾器繞過
4.1 先來幾個(gè)栗子
常規(guī)XSS的過濾器繞過
4.2 過濾器繞過方法
一般意義上而言,DOM base XSS的首先要通過服務(wù)端的過濾器清洗一番,然后還要通過頁面加載的各個(gè)JS腳本,繞過難度相對(duì)較大…
編碼繞過:
我們要插入的代碼:
HTML5特性:
4.3 XSS修復(fù)建議
(1)不含有富文本編輯器(自定義樣式)且沒有使用DOM的站點(diǎn):
- 輸入:過濾雙引號(hào),單引號(hào),左右尖括號(hào),分號(hào)。
- 輸出:對(duì)上述字符進(jìn)行HTML實(shí)體編碼即可。
(2)不含有富文本編輯器(自定義樣式)但使用DOM的站點(diǎn):
- 輸入:在DOM中轉(zhuǎn)義雙引號(hào),單引號(hào),左右尖括號(hào),分號(hào)。
- 輸出:在輸出之前進(jìn)行編碼,如:innerHTML=encodeHTML(output)
(3)含有富文本編輯器(自定義樣式)但沒有使用DOM的站點(diǎn):
- 輸入:過濾雙引號(hào),單引號(hào),分號(hào)。
- 輸出:對(duì)上述字符進(jìn)行HTML實(shí)體編碼即可。
(4)含有富文本編輯器(自定義樣式)且使用DOM的站點(diǎn):
- 沒辦法…指哪兒修哪兒…
五、學(xué)習(xí)資料
- http://sandbox.host.smartgslb.com
- http://html5sec.org/
- http://drops.wooyun.org/tips/956
- http://www.w3school.com.cn/
- http://www.slideshare.net/x00mario/the-innerhtml-apocalypse
- http://app.baidu.com/app/enter?appid=280383
分享文章:XSS攻擊進(jìn)階篇——那些年我們看不懂的XSS
當(dāng)前路徑:http://fisionsoft.com.cn/article/ccchgdd.html


咨詢
建站咨詢
