亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

[深入學習Web安全] 深入利用XSS漏洞

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

前言

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

淺析XSS利用技術

XSS能干什么?

在我們學習XSS的利用技術之前,我們很有必要先知道XSS可以干什么?或者說有什么樣的危害:

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

· 網(wǎng)絡釣魚

· 盜取用戶Cookie

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

· 掛廣告,刷流量

· DDoS

· 網(wǎng)頁掛馬

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

· 傳播XSS Worm

   ……

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

Cookie是什么?

我們在進一步學習XSS之前,我們先來了解下瀏覽器Cookie是什么。我們要說Cookie就得先談到HTTP協(xié)議,我們先來想想C/S架構的程序,通常都是Client端鏈接Server端,通訊完成后就斷開連接。

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

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

正是利用這個Cookie來驗證的,每次瀏覽器發(fā)起HTTP請求就會帶上Cookie頭,而Cookie則是有每次響應的set-cookie來設置的。

我們總結一下上面講的,簡練的說就是:HTTP連接是無狀態(tài)連接,所以得使用Cookie來驗證用戶身份。

我們在Chrome瀏覽器上可以使用如下方法查看我們在網(wǎng)站上的Cookie:

1.訪問“chrome://settings/”:

2.最底下有個"顯示高級設置...",點一下:

 3.有個“隱私設置”:

4.標題下面有個“內(nèi)容設置”按鈕,我們點一下:

 

5.我們點擊“所有Cookie和網(wǎng)站數(shù)據(jù)...”按鈕,我們就能看到,我們在所有網(wǎng)站上的Cookie了:

 

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

 

我們每次訪問某個域的時候,瀏覽器就會吧我們在這個域的Cookie寫在訪問這個域的HTTP請求的Cookie頭里。而某個域想要給我們設置Cookie的時候就需要在HTTP響應里的set-cookie頭里寫。

PHP如何設置Cookie

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

 

然后用瀏覽器訪問這個頁面:

 

然后在頁面中右鍵-審查元素:

 

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

 

點擊一下那個請求:

 

可以看到橫欄里有個Cookies,點一下:

 

我們就能看到HTTP請求時帶的Cookie和HTTP響應了設置的Cookie了。

JS操作Cookie

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

 

然后用瀏覽器打開這個頁面:

 

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

 

我們再來訪問頁面:

 

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

 

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

利用HTML代碼發(fā)起HTTP請求(重點)

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

 

我們訪問該頁面,并且打卡審查元素的Network,然后刷新,如下圖:

 

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

 

我們還是一樣的,訪問頁面,Network,刷新頁面,如下:

 

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

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

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

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

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

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

 

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

 

我們來測試一下,傳入location=ichunqiu.com&cookie=abcdefg,嘗試如下:

 

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

 

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

 

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

 

我們訪問來看下效果:

 

接著,我們來說構造Exploit來盜取Cookie。首先,我們先來專門寫個測試Demo,就叫demo.php,代碼如下:

 

我們用Firefox來測試,如下

 

接著,我們得寫成script標簽的src屬性加載一個js,然后實現(xiàn)讀取cookie和location,然后發(fā)給stealCookie,嘿嘿(當然,現(xiàn)實生活中還有一道墻,同源策略,阿西吧,這里使用反射型XSS演示,完全是因為好演示些,啊西吧)

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

 

我們在XSS目錄下在建一個app.js,代碼的話,如下:

我們訪問如下URL:”http://localhost/xss/demo.php?xss=%3Cscript%20src=%22app.js%22%3E%3C/script%3E“:

 

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

 

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

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

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

相關文章

最新評論