欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

[深入學(xué)習(xí)Web安全] 深入利用XSS漏洞

  發(fā)布時(shí)間:2016-09-12 11:25:14   作者:佚名   我要評(píng)論
從這節(jié)課開始,小宅再次更改排版,希望能給大家更好的閱讀體驗(yàn)。我們上節(jié)課就講了XSS的基本原理其實(shí)就是HTML代碼注入。這節(jié)課,我們將深入一點(diǎn),學(xué)習(xí)一下How To Exploit XSS

前言

從這節(jié)課開始,小宅再次更改排版,希望能給大家更好的閱讀體驗(yàn)。我們上節(jié)課就講了XSS的基本原理其實(shí)就是HTML代碼注入。這節(jié)課,我們將深入一點(diǎn),學(xué)習(xí)一下How To Exploit XSS。

淺析XSS利用技術(shù)

XSS能干什么?

在我們學(xué)習(xí)XSS的利用技術(shù)之前,我們很有必要先知道XSS可以干什么?或者說(shuō)有什么樣的危害:

· 篡改頁(yè)面,修改頁(yè)面內(nèi)容

· 網(wǎng)絡(luò)釣魚

· 盜取用戶Cookie

· 劫持用戶(瀏覽器)會(huì)話

· 掛廣告,刷流量

· DDoS

· 網(wǎng)頁(yè)掛馬

· 獲取客戶端信息(例如UA,IP,開放端口)

· 傳播XSS Worm

   ……

這些都是XSS能夠做到的(當(dāng)然,有些也受制與XSS存在的環(huán)境)。

Cookie是什么?

我們?cè)谶M(jìn)一步學(xué)習(xí)XSS之前,我們先來(lái)了解下瀏覽器Cookie是什么。我們要說(shuō)Cookie就得先談到HTTP協(xié)議,我們先來(lái)想想C/S架構(gòu)的程序,通常都是Client端鏈接Server端,通訊完成后就斷開連接。

但是HTTP協(xié)議不同,他的客戶端是瀏覽器,每次發(fā)送HTTP請(qǐng)求和接收HTTP響應(yīng)就是一次通訊,每次都是一個(gè)請(qǐng)求和一個(gè)響應(yīng),也就是發(fā)送請(qǐng)求到結(jié)束請(qǐng)求就是通訊過(guò)程,完了就斷開了。

那么,我們知道,有很多Web程序都是有登錄功能的,也就是有用戶身份識(shí)別功能。但是,每次一請(qǐng)求一響應(yīng),就結(jié)束了,網(wǎng)站怎么管理用戶會(huì)話呢?網(wǎng)站如何認(rèn)證用戶呢?

正是利用這個(gè)Cookie來(lái)驗(yàn)證的,每次瀏覽器發(fā)起HTTP請(qǐng)求就會(huì)帶上Cookie頭,而Cookie則是有每次響應(yīng)的set-cookie來(lái)設(shè)置的。

我們總結(jié)一下上面講的,簡(jiǎn)練的說(shuō)就是:HTTP連接是無(wú)狀態(tài)連接,所以得使用Cookie來(lái)驗(yàn)證用戶身份。

我們?cè)贑hrome瀏覽器上可以使用如下方法查看我們?cè)诰W(wǎng)站上的Cookie:

1.訪問(wèn)“chrome://settings/”:

2.最底下有個(gè)"顯示高級(jí)設(shè)置...",點(diǎn)一下:

 3.有個(gè)“隱私設(shè)置”:

4.標(biāo)題下面有個(gè)“內(nèi)容設(shè)置”按鈕,我們點(diǎn)一下:

 

5.我們點(diǎn)擊“所有Cookie和網(wǎng)站數(shù)據(jù)...”按鈕,我們就能看到,我們?cè)谒芯W(wǎng)站上的Cookie了:

 

Cookie呢,是以Key=Value的形式存在的,就和下圖一樣:

 

我們每次訪問(wèn)某個(gè)域的時(shí)候,瀏覽器就會(huì)吧我們?cè)谶@個(gè)域的Cookie寫在訪問(wèn)這個(gè)域的HTTP請(qǐng)求的Cookie頭里。而某個(gè)域想要給我們?cè)O(shè)置Cookie的時(shí)候就需要在HTTP響應(yīng)里的set-cookie頭里寫。

PHP如何設(shè)置Cookie

我們先啟動(dòng)apache2服務(wù),然后到Web根目錄,創(chuàng)建一個(gè)cookietest.php文件,代碼如下:

 

然后用瀏覽器訪問(wèn)這個(gè)頁(yè)面:

 

然后在頁(yè)面中右鍵-審查元素:

 

在橫欄上找到Network,然后刷新頁(yè)面,發(fā)現(xiàn)Network下面出現(xiàn)了一個(gè)HTTP請(qǐng)求:

 

點(diǎn)擊一下那個(gè)請(qǐng)求:

 

可以看到橫欄里有個(gè)Cookies,點(diǎn)一下:

 

我們就能看到HTTP請(qǐng)求時(shí)帶的Cookie和HTTP響應(yīng)了設(shè)置的Cookie了。

JS操作Cookie

接下來(lái),我們還得學(xué)習(xí)一個(gè)小知識(shí),用JS操作Cookie,嘿嘿。首先,我們得知道一個(gè)document的屬性cookie,我們先創(chuàng)建一個(gè)HTML文件,寫入如下代碼:

 

然后用瀏覽器打開這個(gè)頁(yè)面:

 

可以看到,當(dāng)前Cookie為空,我們修改剛才的代碼如下:

 

我們?cè)賮?lái)訪問(wèn)頁(yè)面:

 

可以看到設(shè)置成功了,但是這樣的Cookie并不標(biāo)準(zhǔn),后端也不能直接操作,還得專門編寫處理這種特殊“Cookie”的函數(shù),所以,我們來(lái)看一個(gè)JS設(shè)置Cookie的函數(shù):

 

我們可以看到,這個(gè)setCookie()函數(shù)并不復(fù)雜,首先傳入一個(gè)c_name,其實(shí)就是CookieName,和對(duì)應(yīng)值,最后是過(guò)期天數(shù)(每個(gè)Cookie都是存在生命周期的,在生命周期之內(nèi)的Cookie才可用)。

利用HTML代碼發(fā)起HTTP請(qǐng)求(重點(diǎn))

接下來(lái),我們就要來(lái)說(shuō)這篇paper的重點(diǎn)部分了,如何利用HTML代碼來(lái)發(fā)起HTTP請(qǐng)求,請(qǐng)大家準(zhǔn)備好,我們即刻開始,首先我們創(chuàng)建一個(gè)HTML文件,就叫“htmlRequest.html”吧,代碼如下:

 

我們?cè)L問(wèn)該頁(yè)面,并且打卡審查元素的Network,然后刷新,如下圖:

 

我們可以看到,我們利用src屬性發(fā)起了兩個(gè)GET請(qǐng)求,分別是www.xxx.com和[url=www.yyy.com]www.yyy.com[/url]。那么POST請(qǐng)求呢?(這個(gè)可能XSS用不到,但是CSRF一定會(huì)用到,而且是CSRF的重點(diǎn)),我們修改HTML代碼為:

 

我們還是一樣的,訪問(wèn)頁(yè)面,Network,刷新頁(yè)面,如下:

 

我們可以看到,是成功的提交了test-1&test=2到www.xxx.com/test的,這個(gè)POST請(qǐng)求也是成功的。

盜取Cookie的XSS-ShellCode的編寫與利用

我們,接著來(lái)學(xué)習(xí)XSS-ShellCode的編寫與利用,首先,例如我們有一個(gè)VPS,在Web跟目錄創(chuàng)建一個(gè)stealCookie.php和一個(gè)showData.php,我們來(lái)構(gòu)思一下,首先,我們對(duì)這兩個(gè)程序做一下需求分析:

stealCookie.php:我們的目的是程序可以接收GET參數(shù)location和cookie,并將其保存到數(shù)據(jù)庫(kù)中。showData.php:我們的目的是輸出數(shù)據(jù)庫(kù)中存儲(chǔ)的location和cookie。

所以,我們寫這個(gè)程序之前最重要的就是先把存儲(chǔ)數(shù)據(jù)的表搞好,于是我在mysql里創(chuàng)建了一個(gè)xss數(shù)據(jù)庫(kù),在該庫(kù)中創(chuàng)建了一個(gè)data表,data表里有l(wèi)ocation和cookie列。

接著,我們來(lái)編寫stealCookie程序,首先,要獲取GET參數(shù),我們就得使用超全數(shù)組GET[參數(shù)名],如下:

 

然后,我們鏈接數(shù)據(jù)庫(kù),并存儲(chǔ)數(shù)據(jù):

 

我們來(lái)測(cè)試一下,傳入location=ichunqiu.com&cookie=abcdefg,嘗試如下:

 

我們到數(shù)據(jù)庫(kù)去查看,如下:

 

可以看到,已經(jīng)成功的插入了,接著就是編寫showData程序了,首先呢,肯定要鏈接數(shù)據(jù)庫(kù),選擇xss庫(kù)(對(duì)了大家有沒(méi)注意到一個(gè)細(xì)節(jié),我們編寫的stealCookie是存在SQL注射漏洞的,嘿嘿)。

 

接著我們進(jìn)行查詢數(shù)據(jù),然后使用mysql_fetch_array()函數(shù)將查詢結(jié)果轉(zhuǎn)換成數(shù)組,然后輸出就行了:

 

我們?cè)L問(wèn)來(lái)看下效果:

 

接著,我們來(lái)說(shuō)構(gòu)造Exploit來(lái)盜取Cookie。首先,我們先來(lái)專門寫個(gè)測(cè)試Demo,就叫demo.php,代碼如下:

 

我們用Firefox來(lái)測(cè)試,如下

 

接著,我們得寫成script標(biāo)簽的src屬性加載一個(gè)js,然后實(shí)現(xiàn)讀取cookie和location,然后發(fā)給stealCookie,嘿嘿(當(dāng)然,現(xiàn)實(shí)生活中還有一道墻,同源策略,阿西吧,這里使用反射型XSS演示,完全是因?yàn)楹醚菔拘?,啊西吧?/p>

然后,由于我們要測(cè)試盜取Cookie,那沒(méi)有Cookie怎么行,所以修改demo.php代碼為:

 

我們?cè)赬SS目錄下在建一個(gè)app.js,代碼的話,如下:

我們?cè)L問(wèn)如下URL:”http://localhost/xss/demo.php?xss=%3Cscript%20src=%22app.js%22%3E%3C/script%3E“:

 

可以看到,只是加載了一張圖片,但是,我們回?cái)?shù)據(jù)庫(kù)一看:

 

可以看到,我們成功的盜取了用戶的Cookie。好了,這篇paper就到這里了,希望大家繼續(xù)支持深入學(xué)習(xí)Web安全系列文章!

本文轉(zhuǎn)自:i春秋社區(qū)

本文地址:http://bbs.ichunqiu.com/thread-10648-1-1.html?from=jbzj

相關(guān)文章

最新評(píng)論