漏洞: 跨站腳本漏洞
跨站腳本攻擊(Cross-site scripting,通常簡稱為XSS)發生在客戶端,可被用于進行竊取隱私、釣魚欺騙、竊取密碼、傳播惡意代碼等攻擊。
XSS攻擊使用到的技術主要為HTML和Javascript,也包括VBScript和ActionScript等。XSS攻擊對WEB服務器雖無直接危害,但是它借助網站進行傳播,使網站的使用用戶受到攻擊,導致網站用戶帳號被竊取,從而對網站也產生了較嚴重的危害。
XSS的危害包括:
1)釣魚欺騙:最典型的就是利用目標網站的反射型跨站腳本漏洞將目標網站重定向到釣魚網站,或者注入釣魚JavaScript以監控目標網站的表單輸入,甚至發起基于DHTML更高級的釣魚攻擊方式。
2)網站掛馬:跨站時利用IFrame嵌入隱藏的惡意網站或者將被攻擊者定向到惡意網站上,或者彈出惡意網站窗口等方式都可以進行掛馬攻擊。
3)身份盜用:Cookie是用戶對于特定網站的身份驗證標志,XSS可以盜取到用戶的Cookie,從而利用該Cookie盜取用戶對該網站的操作權限。如果一個網站管理員用戶Cookie被竊取,將會對網站引發巨大的危害。
4)盜取網站用戶信息:當能夠竊取到用戶Cookie從而獲取到用戶身份使,攻擊者可以獲取到用戶對網站的操作權限,從而查看用戶隱私信息。
5)垃圾信息發送:比如在SNS社區中,利用XSS漏洞借用被攻擊者的身份發送大量的垃圾信息給特定的目標群。
6)劫持用戶Web行為:一些高級的XSS攻擊甚至可以劫持用戶的Web行為,監視用戶的瀏覽歷史,發送與接收的數據等等。
7)XSS蠕蟲:XSS 蠕蟲可以用來打廣告、刷流量、掛馬、惡作劇、破壞網上數據、實施DDoS攻擊等。
檢測方法
通常有一些方式可以測試網站是否有正確處理特殊字符:
><script>alert(document.cookie)</script>='><script>alert(document.cookie)</script>"><script>alert(document.cookie)</script><script>alert(document.cookie)</script><script>alert (vulnerable)</script>%3Cscript%3Ealert('XSS')%3C/script%3E<script>alert('XSS')</script><img src="javascript:alert('XSS')"><img src="http://888.888.com/999.png" onerror="alert('XSS')"><div style="height:expression(alert('XSS'),1)"></div>(這個僅于IE7(含)之前有效)
攻擊手段和目的
攻擊者使被攻擊者在瀏覽器中執行腳本后,如果需要收集來自被攻擊者的數據(如cookie或其他敏感信息),可以自行架設一個網站,讓被攻擊者通過JavaScript等方式把收集好的數據作為參數提交,隨后以數據庫等形式記錄在攻擊者自己的服務器上。
常用的XSS攻擊手段和目的有:
- 盜用cookie,獲取敏感信息。
- 利用植入Flash,通過crossdomain權限設置進一步獲取更高權限;或者利用Java等得到類似的操作。
- 利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻擊)用戶的身份執行一些管理動作,或執行一些一般的如發微博、加好友、發私信等操作。
- 利用可被攻擊的域受到其他域信任的特點,以受信任來源的身份請求一些平時不允許的操作,如進行不當的投票活動。
- 在訪問量極大的一些頁面上的XSS可以攻擊一些小型網站,實現DoS攻擊的效果。
漏洞的防御和利用
過濾特殊字符
避免XSS的方法之一主要是將用戶所提供的內容進行過濾,許多語言都有提供對HTML的過濾:
- PHP的
htmlentities()或是htmlspecialchars()。 - Python的
cgi.escape()。 - ASP的
Server.HTMLEncode()。 - ASP.NET的
Server.HtmlEncode()或功能更強的Microsoft Anti-Cross Site Scripting Library - Java的xssprotect (Open Source Library)。
- Node.js的node-validator。
使用HTTP頭指定類型
很多時候可以使用HTTP頭指定內容的類型,使得輸出的內容避免被作為HTML解析。如在PHP語言中使用以下代碼:
<?php
header('Content-Type: text/javascript; charset=utf-8');
?>
即可強行指定輸出內容為文本/JavaScript腳本(順便指定了內容編碼),而非可以引發攻擊的HTML。
網絡安全學院 社區 Wiki
推薦文章: