常見漏洞-XSS以及相關知識點

乾坤未定,你我皆是黑馬

1、XSS漏洞概述

跨站腳本(Cross Site Scripting)攻擊,是指攻擊者利用網站程序對用戶輸入過濾不足,輸入可以顯示在頁面上對其他用戶造成影響的HTML代碼,從而盜取用戶資料,利用用戶身份進行某種動作或者訪問者進行病毒侵害的一種攻擊方式。
沒有對web前端的輸入邊界進行嚴格的過濾是XSS漏洞的主要原因。
XSS漏洞發生在web前端,主要對網站用戶造成危害,並不會直接危害服務器後臺數據。

2、XSS分類

①. 反射型XSS

指是簡單地對用戶輸入的數據直接或未經過完善的安全過濾就在瀏覽器直接輸出,導致輸出的數據中存在可被瀏覽器執行的代碼。
一般是頁面彈窗

嵌入iframe(點擊劫持、釣魚等)
<iframe src="http://www.xxx.com"></iframe>
當一個頁面出現類似這種語句時候<?php echo "<p>hello, $_GET['user']</p>";?>,在訪問時候設置/?user=</p><script>alert("hack")</script><p>,則會觸發預設的JavaScript代碼。

②. 存儲型XSS

是指web應用程序對用戶輸入的數據不嚴格,導致web應用程序將黑客輸入的惡意跨站攻擊數據信息保存到服務端的數據庫或者其他文件中,當頁面進行數據查詢展示時,會從數據庫中獲取數據內容,並將數據內容在頁面中進行輸出展示,進而導致跨站腳本代碼的執行。
存儲型XSS腳本攻擊最爲常見的場景就是在留言板,博客或者新聞發佈系統,惡意代碼直接寫入文章,評論 ,留言中,瀏覽時即會執行相應的腳本代碼。

③. DOM型XSS

基於DOM型的XSS跨站腳本攻擊是通過修改頁面DOM節點數據信息而形成的XSS跨站腳本攻擊,不同於反射型XSS和存儲型XSS,基於DOM的XSS跨站腳本攻擊往往需要針對具體的JavaScriptDOM代碼進行分析,並根據實際情況進行XSS跨站腳本攻擊的利用。

簡單寫一段代碼:
function xsstest()
{
	var str=document.getElementById("input").vlaue:
	document.getElementById("outout").innerHTML="<img src='"+str"'></img>";
}

此時輸入 #‘οnerrοr='javascript:alert(/DOM Base XSS Test/) 既可觸發

④. Blind XSS

儲存型XSS的一種,它保存在某些存儲中,當一個“受害者”訪問這個頁面時執行,並且在文檔對象模型(DOM)中呈現payload。 它被歸類爲盲目的原因是因爲它通常發生在通常不暴露給用戶的功能上

3、XSS漏洞測試過程

①. 在目標站點上找到輸入點,比如查詢接口,留言板等
②. 輸入一個“唯一”字符,點擊提交後,查看當前狀態下的源碼文件
③. 通過搜索定位到唯一字符,集合唯一字符前後語法構造script語句,併合理的對HTML標籤進行閉合
④. 提交構造的script語句,看是否成功執行,如何成功執行則說明存在XSS漏洞

一些小技巧:

①. 一般查詢接口容易出現反射型XSS,留言板容易出現存儲型XSS
②. 由於後臺可能存在過濾措施,構造的script語句可能會被過濾掉,而無法生效,或者瀏覽器限制了執行。這裏我們可以使用開源的一些XSS平臺。
③. 通過構造不同的script語句,嘗試繞過後臺過濾機制
④. 最快的發現XSS漏洞的方法還是通過web漏洞掃描工具,如Nessus,AWVS,Appscan等

4、XSS漏洞防範措施

①. 對前端輸入進行過濾和編碼
—比如只允許輸入指定類型的字符,比如電話號碼格式,用戶名限制等,輸入檢查需要在服務器完成,在前端完成的限制是容易被繞過的

②. 對輸出進行過濾和編碼
—在變量值輸出到前端的HTML時進行編碼或者轉義

③. 給關鍵的cookie使用http-only

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