国产精品香蕉在线观看网,亚洲欧美精品综合在线观看,亚洲不卡av一区二区无码不卡,亚洲日本精品国产第一区二区

移動(dòng)安全 安全管理 應(yīng)用案例 網(wǎng)絡(luò)威脅系統(tǒng)安全 應(yīng)用安全 數(shù)據(jù)安全 云安全
當(dāng)前位置: 主頁(yè) > 信息安全 > 系統(tǒng)安全 >

XSS 的 原 理 分 析 與 解 剖

時(shí)間:2014-08-28 14:43來(lái)源:TuZhiJiaMi企業(yè)信息安全專家 點(diǎn)擊:
0×01 前言: 《xss攻擊手法》一開(kāi)始在互聯(lián)網(wǎng)上資料并不多(都是現(xiàn)成的代碼,沒(méi)有從基礎(chǔ)的開(kāi)始),直到刺的《白帽子講WEB安全》和cn4rry的《XSS跨站腳本攻擊剖析與防御》才開(kāi)始好轉(zhuǎn)。 我這里就不
Tags系統(tǒng)安全(735)XSS(21)  

  0×01 前言:

XSS的原理分析與解剖

  《xss攻擊手法》一開(kāi)始在互聯(lián)網(wǎng)上資料并不多(都是現(xiàn)成的代碼,沒(méi)有從基礎(chǔ)的開(kāi)始),直到刺的《白帽子講WEB安全》和cn4rry的《XSS跨站腳本攻擊剖析與防御》才開(kāi)始好轉(zhuǎn)。

  我這里就不說(shuō)什么xss的歷史什么東西了,xss是一門(mén)又熱門(mén)又不太受重視的Web攻擊手法,為什么會(huì)這樣呢,原因有下:

  1、耗時(shí)間

  2、有一定幾率不成功

  3、沒(méi)有相應(yīng)的軟件來(lái)完成自動(dòng)化攻擊

  4、前期需要基本的html、js功底,后期需要扎實(shí)的html、js、actionscript2/3.0等語(yǔ)言的功底

  5、是一種被動(dòng)的攻擊手法

  6、對(duì)website有http-only、crossdomian.xml沒(méi)有用

  但是這些并沒(méi)有影響黑客對(duì)此漏洞的偏愛(ài),原因不需要多,只需要一個(gè)。

  Xss幾乎每個(gè)網(wǎng)站都存在,google、baidu、360等都存在。

  0×02 原理:

  首先我們現(xiàn)在本地搭建個(gè)PHP環(huán)境(可以使用phpstudy安裝包安裝),然后在index.php文件里寫(xiě)入如下代碼:

  


'.$xss; ?>

  然后,你會(huì)在頁(yè)面看到這樣的頁(yè)面

XSS的原理分析與解剖

  我們?cè)囍斎隺bcd123,得到的結(jié)果為

XSS的原理分析與解剖

  我們?cè)诳纯丛创a

XSS的原理分析與解剖

  我們輸入的字符串被原封不動(dòng)的輸出來(lái)了,那這里我們提出來(lái)一個(gè)假設(shè),假設(shè)我們?cè)谒阉骺蜉斎胂旅娴拇a會(huì)出現(xiàn)什么呢?

  

  如果按照上面的例子來(lái)說(shuō),它應(yīng)該存在第12行的[br]與[/boby]>之間,變成:

  

  之后,應(yīng)該會(huì)彈出對(duì)話框。

  既然假設(shè)提出來(lái),那我們來(lái)實(shí)現(xiàn)下這個(gè)假設(shè)成不成立吧。

  我們輸入

  

  得到的頁(yè)面為

XSS的原理分析與解剖

  成功彈窗,這個(gè)時(shí)候基本上就可以確定存在xss漏洞。

  我們?cè)诳纯丛创a

XSS的原理分析與解剖

  看來(lái),我們的假設(shè)成功了,這節(jié)就說(shuō)說(shuō)XSS的原理,下面幾節(jié)說(shuō)說(shuō)xss的構(gòu)造和利用。

  0×03 xss利用輸出的環(huán)境來(lái)構(gòu)造代碼 :

  上節(jié)說(shuō)了xss的原理,但是我們的輸出點(diǎn)不一在[ br ]和[ /boby ]里,可以出現(xiàn)在html標(biāo)簽的屬性里,或者其他標(biāo)簽里面。所以這節(jié)很重要,因?yàn)椴灰欢?當(dāng)你輸入下面代碼就會(huì)出現(xiàn)彈窗。

  

  先貼出代碼:

  

把我們輸入的字符串 輸出到input里的value屬性里

'; }else{ echo ''; } ?>

  下面是代碼的頁(yè)面

XSS的原理分析與解剖

  這段代碼的作用是把第一個(gè)輸入框的字符串,輸出到第二個(gè)輸入框,我們輸入1,那么第二個(gè)input里的value值就是1,下面是頁(yè)面的截圖和源代碼的截圖(這里我輸入下面的代碼來(lái)測(cè)試)

  

XSS的原理分析與解剖

XSS的原理分析與解剖

  明顯的可以看到,并沒(méi)有彈出對(duì)話框,大家可能會(huì)疑惑為什么沒(méi)有彈窗呢,我們來(lái)看看源代碼

XSS的原理分析與解剖

  我們看到我們輸入的字符串被輸出到第15行input標(biāo)簽里的value屬性里面,被當(dāng)成value里的值來(lái)顯現(xiàn)出來(lái),所以并沒(méi)有彈窗,這時(shí)候我們?cè)撛趺崔k呢?聰明的人已經(jīng)發(fā)現(xiàn)了可以在

  

  前面加個(gè)">來(lái)閉合input標(biāo)簽。所以應(yīng)該得到的結(jié)果為

XSS的原理分析與解剖

  成功彈窗了,我們?cè)诳纯催@時(shí)的頁(yè)面

XSS的原理分析與解剖

  看到后面有第二個(gè)input輸入框后面跟有">字符串,為什么會(huì)這樣呢,我們來(lái)看看源代碼

XSS的原理分析與解剖

  這時(shí)可以看到我們構(gòu)造的代碼里面有兩個(gè)">,第一個(gè)">是為了閉合input標(biāo)簽,所以第二個(gè)">就被拋棄了,因?yàn)閔tml的容錯(cuò)性高,所以并沒(méi)有像php那樣出現(xiàn)錯(cuò)誤,而是直接把多余的字符串來(lái)輸出了,有的人是個(gè)完美主義者,不喜歡有多余的字符串被輸出,這時(shí)該怎么辦呢?

  這里我問(wèn)大家一個(gè)問(wèn)題,我之前說(shuō)的xss代碼里,為什么全是帶有標(biāo)簽的。難道就不能不帶標(biāo)簽么?!答:當(dāng)然可以。既然可以不用標(biāo)簽,那我們就用標(biāo)簽里的屬性來(lái)構(gòu)造XSS,這樣的話,xss代碼又少,又不會(huì)有多余的字符串被輸出來(lái)。

  還是這個(gè)環(huán)境,但是不能使用標(biāo)簽,你應(yīng)該怎么做。想想input里有什么屬性可以調(diào)用js,html學(xué)的好的人,應(yīng)該知道了,on事件,對(duì)的。我們可以用on事件來(lái)進(jìn)行彈窗,比如這個(gè)xss代碼 我們可以寫(xiě)成

  " onclick="alert('xss')

  這時(shí),我們?cè)趤?lái)試試,頁(yè)面會(huì)發(fā)生什么樣的變化吧。

XSS的原理分析與解剖

  沒(méi)有看到彈窗啊,失敗了么?答案當(dāng)然是錯(cuò)誤的,因?yàn)閛nclick是鼠標(biāo)點(diǎn)擊事件,也就是說(shuō)當(dāng)你的鼠標(biāo)點(diǎn)擊第二個(gè)input輸入框的時(shí)候,就會(huì)觸發(fā)onclick事件,然后執(zhí)行alert('xss')代碼。我們來(lái)試試看

XSS的原理分析與解剖

  當(dāng)我點(diǎn)擊后,就出現(xiàn)了彈窗,這時(shí)我們來(lái)看看源代碼吧

XSS的原理分析與解剖

  第15行,value值為空,當(dāng)鼠標(biāo)點(diǎn)擊時(shí),就會(huì)彈出對(duì)話框。這里可能就會(huì)有人問(wèn)了,如果要點(diǎn)擊才會(huì)觸發(fā),那不是很麻煩么,成功率不就又下降了么。我來(lái)幫你解答這個(gè)問(wèn)題,on事件不止onclick這一個(gè),還有很多,如果你想不需要用戶完成什么動(dòng)作就可以觸發(fā)的話,i可以把onclick改成

  Onmousemove 當(dāng)鼠標(biāo)移動(dòng)就觸發(fā)

  Onload 當(dāng)頁(yè)面加載完成后觸發(fā)

  還有很多,我這里就不一一說(shuō)明了,有興趣的朋友可以自行查詢下。

  別以為就這樣結(jié)束了,還有一類環(huán)境不能用上述的方法,

  那就是如果在[ textarea ]標(biāo)簽里呢?!或者其他優(yōu)先級(jí)比script高的呢?

  就下面這樣

XSS的原理分析與解剖

  這時(shí)我們?cè)撛趺崔k呢?既然前面都說(shuō)了閉合屬性和閉合標(biāo)簽了,那能不能閉合完整的標(biāo)簽?zāi)?,答案是肯定的。我們可以輸入下面的代碼就可以實(shí)現(xiàn)彈窗了。

  

  0×04 過(guò)濾的解決辦法

  假如說(shuō)網(wǎng)站禁止過(guò)濾了script 這時(shí)該怎么辦呢,記住一句話,這是我總結(jié)出來(lái)的“xss就是在頁(yè)面執(zhí)行你想要的js”不用管那么多,只要能運(yùn)行我們的js就OK,比如用img標(biāo)簽或者a標(biāo)簽。我們可以這樣寫(xiě)

  當(dāng)找不到圖片名為1的文件時(shí),執(zhí)行alert('xss') s 點(diǎn)擊s時(shí)運(yùn)行alert('xss')

------分隔線----------------------------

推薦內(nèi)容