一、簡(jiǎn)介
什么是XSS?
百度百科的解釋: XSS又叫CSS (Cross Site Script) 箫津,跨站腳本攻擊侨糟。它指的是惡意攻擊者往Web頁(yè)面里插入惡意html代碼,當(dāng)用戶瀏覽該頁(yè)之時(shí)涨缚,嵌入其中Web里面的html代碼會(huì)被執(zhí)行,從而達(dá)到惡意用戶的特殊目的策治。
它與SQL注入攻擊類似脓魏,SQL注入攻擊中以SQL語(yǔ)句作為用戶輸入,從而達(dá)到查詢/修改/刪除數(shù)據(jù)的目的览妖,而在xss攻擊中轧拄,通過(guò)插入惡意腳本,實(shí)現(xiàn)對(duì)用戶游覽器的控制讽膏,獲取用戶的一些信息檩电。
二、分類
xss攻擊可以分成兩種類型:
1.非持久型攻擊
2.持久型攻擊
非持久型xss攻擊:顧名思義府树,非持久型xss攻擊是一次性的俐末,僅對(duì)當(dāng)次的頁(yè)面訪問(wèn)產(chǎn)生影響。非持久型xss攻擊要求用戶訪問(wèn)一個(gè)被攻擊者篡改后的鏈接奄侠,用戶訪問(wèn)該鏈接時(shí)卓箫,被植入的攻擊腳本被用戶游覽器執(zhí)行,從而達(dá)到攻擊目的垄潮。
持久型xss攻擊:持久型xss烹卒,會(huì)把攻擊者的數(shù)據(jù)存儲(chǔ)在服務(wù)器端闷盔,攻擊行為將伴隨著攻擊數(shù)據(jù)一直存在。
也可以分成三類:
反射型:經(jīng)過(guò)后端旅急,不經(jīng)過(guò)數(shù)據(jù)庫(kù)
存儲(chǔ)型:經(jīng)過(guò)后端逢勾,經(jīng)過(guò)數(shù)據(jù)庫(kù)
DOM:不經(jīng)過(guò)后端,DOM—based XSS漏洞是基于文檔對(duì)象模型Document Objeet Model,DOM)的一種漏洞,dom - xss是通過(guò)url傳入?yún)?shù)去控制觸發(fā)的。
三藐吮、原理
1.反射型
新建一個(gè)xss.php文件并加入以下代碼:
這段代碼中首先包含一個(gè)表單溺拱,用于向頁(yè)面自己發(fā)送 GET 請(qǐng)求,帶一個(gè)名為xss的參數(shù)谣辞。 然后 PHP 會(huì)讀取該參數(shù)迫摔,如果不為空,則直接打印出來(lái)泥从,這里不存在任何過(guò)濾句占。也就是說(shuō),如果xss中存在 HTML 結(jié)構(gòu)性的內(nèi)容歉闰,打印之后會(huì)直接解釋為 HTML 元素辖众。
部署好這個(gè)文件卓起,訪問(wèn)http://localhost/xss.php和敬,直接輸入一個(gè)js代碼,比如<script>alert('hack')</script>戏阅,
之后點(diǎn)擊test:
我們輸入的HTML代碼被執(zhí)行了昼弟。用Firebug查看,我們輸出的內(nèi)容直接插入到了頁(yè)面中奕筐,解釋為<script>標(biāo)簽舱痘。
反射型 XSS 的數(shù)據(jù)流向是:瀏覽器 -> 后端 -> 瀏覽器。
2.存儲(chǔ)型
把xss.php內(nèi)容改為(同時(shí)數(shù)據(jù)庫(kù)中需要配置相應(yīng)的表):
用戶輸入的內(nèi)容還是沒(méi)有過(guò)濾离赫,但是不直接顯示在頁(yè)面中芭逝,而是插入到了數(shù)據(jù)庫(kù)。
新建show.php渊胸,內(nèi)容為:
該代碼從數(shù)據(jù)庫(kù)讀取了之前插入的內(nèi)容旬盯,并將其顯示出來(lái)。
先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)xss,創(chuàng)建temp表
然后訪問(wèn)xss.php翎猛,像之前一樣輸入 HTML 代碼
點(diǎn)擊test胖翰,點(diǎn)擊之后卻發(fā)現(xiàn)沒(méi)有任何動(dòng)靜,但事實(shí)上切厘,我們的數(shù)據(jù)已經(jīng)插入到了數(shù)據(jù)庫(kù)中萨咳。
當(dāng)我們?cè)L問(wèn)show.php查詢這個(gè)值的時(shí)候,代碼就會(huì)被執(zhí)行疫稿。
存儲(chǔ)型 XSS 的執(zhí)行位置通常不同于輸入位置培他。我們可以看出鹃两,存儲(chǔ)行 XSS 的數(shù)據(jù)流向是:
瀏覽器 -> 后端 -> 數(shù)據(jù)庫(kù) -> 后端 -> 瀏覽器。
3.dom-xss
把xss.php內(nèi)容改為
DOM-XSS 的數(shù)據(jù)流向是:URL-->瀏覽器
總結(jié): 在易用上舀凛,存儲(chǔ)型XSS > DOM - XSS > 反射型 XSS怔毛。
注:反射型xss和dom-xss都需要在url加入js代碼才能夠觸發(fā)。
四腾降、利用
通過(guò) XSS 來(lái)獲得用戶 Cookie 或其他有用信息拣度,利用平臺(tái)負(fù)責(zé)接收并保存這些信息。XSS利用平臺(tái)有很多種如XSS Shell, BeEF, Anehta, CAL9000螃壤。這里使用xsser.me抗果、搭建過(guò)程可參考這:http://blog.csdn.net/u011781521/article/details/53895363
進(jìn)入搭建好的xsser.me平臺(tái)首頁(yè)輸入用戶名與密碼進(jìn)行登錄
成功之后會(huì)顯示主界面,左邊是模塊列表奸晴,右邊是項(xiàng)目列表:
我們點(diǎn)擊左邊“我的項(xiàng)目”旁邊的“創(chuàng)建”按鈕:
名稱和描述可以隨便取冤馏,不影響使用。輸入時(shí)候點(diǎn)擊“下一步”按鈕寄啼。之后會(huì)出現(xiàn)“配置代碼”界面:
點(diǎn)擊下一步逮光、就會(huì)看到這個(gè)項(xiàng)目的一些信息
點(diǎn)擊完成。然后我們會(huì)在首頁(yè)看到我們的新項(xiàng)目墩划,點(diǎn)擊這個(gè)項(xiàng)目:
之后點(diǎn)擊項(xiàng)目涕刚,進(jìn)入一個(gè)頁(yè)面再點(diǎn)擊右上方的查看代碼
就可以看到使用方法:
下面就演示下怎么利用
把<script src="..."></script>注入到反射型 XSS 的演示頁(yè)面中。
上面的src="xxxx"是我另外創(chuàng)建的一個(gè)項(xiàng)目的地址乙帮,把你創(chuàng)建好的那個(gè)項(xiàng)目杜漠,提供的那個(gè)地址放進(jìn)去,就可以了察净,雖然這個(gè)頁(yè)面沒(méi)反應(yīng)驾茴,但是xsser.me那個(gè)項(xiàng)目就收到消息了。