來源:http://bbs.ichunqiu.com/thread-10436-1-1.html?from=ch
作者:萬年死宅
既然如此艘狭,我們就試試看能不能插入...標(biāo)簽吧,我們就那alert(/XSS/)來演示吧:
確實彈窗了滞谢,那童鞋們肯定又要問了涧狮,彈個窗又能有什么用呢反璃?貌似還是沒什么用吧荣月?
這就不然了,嘿嘿袭蝗,首先唤殴,在不講其他知識的前提下,第一點就是可以用來釣魚到腥,例如:
[XHTML]純文本查看復(fù)制代碼
1
看效果:
OK朵逝,至于怎么把密碼傳回來,這個后面再講乡范。我們現(xiàn)在就來總結(jié)下XSS是個啥情況配名。首先,其實XSS是屬于Code Injection的一種晋辆。就和SQL注射一樣都是屬于Code Injection漏洞段誊,只是Injection的代碼不同,SQL注射注射的是SQL語句栈拖,XSS則是注射的HTML和JS的語句。
目的都是一樣的没陡,妄圖執(zhí)行被注射的代碼涩哟,來達到攻擊者的目的。
root@2~# XSS的分類
接著盼玄,我們來說XSS的分類贴彼,剛才在root1的地方,大家可能就一直聽我說反射型XSS了埃儿,對器仗,這也是XSS分類的一種。
一般來說XSS普遍分為三種:
存儲型XSS
反射型XSS
DOM型XSS
這三種存在這很多異同之處童番,這個就只能靠大家自己去體會了精钮。我只能給大家粗淺的講一下了。
我們先說存儲型的XSS剃斧,我們知道很多地方都有評論啊這些功能轨香,如果我們鍵入評論并提交了,那么我們的評論內(nèi)容存在什么地方了呢幼东?
答案就是數(shù)據(jù)庫臂容,我們來數(shù)據(jù)庫里建立一個xssDemo數(shù)據(jù)庫科雳,然后建立一個如下結(jié)構(gòu)的表:
然后向其中插入一條數(shù)據(jù):
然后,我們編寫一個PHP的文件脓杉,代碼如下:
我們接下來訪問頁面:
這就是存儲型XSS糟秘,我們可以看到URL中沒有傳參,POST也沒球散,這就是直接從數(shù)據(jù)庫得到的數(shù)據(jù)然后渲染時執(zhí)行尿赚。
這是最不受限制的一種XSS,因為反射型的XSS只能在Firefox下執(zhí)行沛婴,IE和Chrome都已經(jīng)有對應(yīng)的解決方案了吼畏。
但是存儲型XSS則不受這個限制。而且更具有隱蔽性嘁灯。因為代碼不出現(xiàn)在URL里面泻蚊。
接著,我們來說反射型的XSS丑婿,只是這次換成一行的Demo性雄,嘿嘿。如下:
我們在瀏覽器上訪問如下:
然后插入JS羹奉,如下:
相比存儲型的XSS來說秒旋,反射型的XSS的利用方案就有不同,一般都會事先寫好一個Payload诀拭,然后將鏈接發(fā)給用戶迁筛,誘使用戶訪問含有Payload的URL達到JS代碼執(zhí)行的目的,而且僅僅限于Firefox耕挨,而且這種XSS在誘使用戶點擊的時候我們也不知道用戶是否登錄细卧,從而導(dǎo)致不一定能讀取得到Cookie。
接著我們來說DOM型XSS筒占,這個其實是基于DOM執(zhí)行的XSS贪庙,我們看如下Demo:
我們用瀏覽器加載下:
輸入
a
,點擊OK翰苫,如下:我們可以看到止邮,HTML成功執(zhí)行了,那我們試試彈窗:
成功奏窑!嘿嘿导披,DOM-XSS和存儲型XSS是一樣的,不會因為瀏覽器的不同而存在不能執(zhí)行的問題埃唯。
OK了盛卡,XSS的分類就這些了,我們來進入這篇paper的最后一個主題筑凫。
root@3~# 簡單理解同源策略(SOP)
OK滑沧,這篇paper的最后一個內(nèi)容就是SOP了并村,所有講XSS的書都有說SOP對于搞前端安全Very重要。所以滓技,我們不得不提一下哩牍。
所謂SOP,其實是一個所有瀏覽器都遵循的規(guī)定令漂。它限制著JS對瀏覽器上的一些元素的讀寫的權(quán)限膝昆。
正是因為有了SOP,瀏覽器的世界才不混亂叠必,不然的話荚孵,我們iframe嵌入一個頁面,直接在本地域就能直接讀取嵌入的Iframe的域的cookie這些敏感內(nèi)容了纬朝。而且如果沒有SOP收叶,我們甚至可以控制所有頁面在客戶端(瀏覽器)的邏輯。
我們試想這樣的局面存在共苛,那么Web的世界根本就不可能存在安全的概念判没,因為這個客戶端都是“假”的,我們無法看到“真”的內(nèi)容隅茎。每一步操作可能都是“攻擊者”布下的陷阱澄峰,或許要一次點擊就是災(zāi)難的來臨。
所以SOP顯得由為重要辟犀!Web世界的一切都離不開SOP俏竞!這一點絕對不用質(zhì)疑的!
所以堂竟,我們今天就來先簡單的學(xué)習(xí)一下SOP胞此。
首先,SOP的規(guī)定換成“人話”來說就是:不同域的客戶端腳本在未授權(quán)的情況下不能讀寫別的域的資源跃捣。
其實這句話很好理解,但是其中的幾個概念需要專門說一下夺蛇,首先就是“同域”的概念疚漆。什么情況能被瀏覽器視為“同域”?
如下圖(這經(jīng)典的圖刁赦,余弦哥哥的書里扣來的):
這個就是同域和不同域的概念娶聘,很清晰了。至于客戶端腳本甚脉,就是JS丸升,VBS,AS這些能在瀏覽器這個容器里只能個的腳本牺氨。
至于明確授權(quán)的話就是有個HTTP響應(yīng)頭:
Access-Control-Allow-Origin
這個頭的值將表明允許跨域的情況狡耻。然后就是在不同域的情況下兩個不同的域的腳本無法讀寫對方的資源(明確授權(quán)情況除外)墩剖。
好了,這篇paper就到這里夷狰,下一篇岭皂,我們來講如何利用XSS做一些Evil的事情,嘿嘿沼头。