WEB安全實戰(二)帶你認識 XSS 攻擊
來源:程序員人生 發布時間:2014-11-12 08:21:04 閱讀次數:3785次
前言
上1篇文章寫了關于 WEB 安全方面的實戰,主要是解決 SQL 盲注的安全漏洞。這篇文章本來是要寫1篇關于如何防治 XSS 攻擊的,但是想來想去,還是決定先從理論上認識1下 XSS 吧。下1篇文章,再深入研究如何防治的問題。
概念
到底甚么是 XSS 攻擊呢?XSS 攻擊,全稱是“跨站點腳本攻擊”(Cross Site Scripting),之所以縮寫為 XSS,主要是為了和“層疊樣式表”(Cascading Style Sheets,CSS)區分開,以避免混淆。
XSS 是1種常常出現在web利用中的計算機安全漏洞,它允許歹意web用戶將代碼植入到提供給其它用戶使用的頁面中。比如這些代碼包括HTML代碼和客戶端腳本。對跨站腳本攻擊,黑客界共鳴是:跨站腳本攻擊是新型的“緩沖區溢出攻擊“,而JavaScript是新型的“ShellCode”。
XSS 是針對特殊 Web 站點的客戶隱私的攻擊,當客戶詳細信息失竊或受控時可能引發完全的安全要挾。大部份網站攻擊只觸及兩個群體:黑客和 Web 站點,或黑客和客戶端受害者。與那些攻擊不同的是,XSS 攻擊同時觸及3個群體:黑客、客戶端和 Web 站點。XSS
攻擊的目的是盜走客戶端 cookies,或任何可以用于在 Web 站點肯定客戶身份的其他敏感信息。手邊有了合法用戶的標記,黑客可以繼續扮演用戶與站點交互,從而冒充用戶。
舉例來講,在對1個大型公司的調查中表明,利用 XSS 攻擊窺視用戶的信譽卡號碼和私有信息是可能的。這是通過利用 Web 站點的訪問特權,在受害者(客戶端)閱讀器上運行歹意的 JavaScript 代碼來實現的。這些是非常有限的 JavaScript 特權,除與站點相干的信息,1般不允許腳本訪問其他任何內容。重點強調的是,雖然
Web 站點上存在安全漏洞,但是 Web 站點從未遭到直接傷害。但是這已足夠讓腳本搜集 cookies,并且將它們發送給黑客。
分析
如果某個懷有歹意的人(攻擊者)可以逼迫某個不知情的用戶(受害者)運行攻擊者選擇的客戶端腳本,那末便會產生跨站點腳本攻擊。“跨站點腳本”這個詞應當屬于用詞不當的情況,由于它不但與腳本有關,而且它乃至不1定是跨站點的。所以,它就是1個在發現這類攻擊時起的1個名字,并且1直沿用至今。從現在開始,我們將使用它常見的縮寫名稱“XSS”。
XSS 攻擊的進程觸及以下3者:
- 攻擊者
- 受害者
- 存在漏洞的網站(攻擊者可使用它對受害者采取行動)
在這3方當中,只有受害者會實際運行攻擊者的代碼。網站僅僅是發起攻擊的1個載體,1般不會遭到影響。可以用多種方式發起 XSS 攻擊。例如,攻擊者可通過電子郵件、IM 或其他途徑向受害者發送1個經過經心構造的歹意 URL。當受害者在 Web 閱讀器中打開該 URL 的時侯,網站會顯示1個頁面并在受害者的計算機上履行腳本。
那末,XSS 漏洞是甚么樣的呢?
作為1名 Web 開發人員或測試人員,您肯定知道 Web 利用程序的技術基礎是由 HTTP 和 HTML 組成的。HTTP 協議是 HTML 的傳輸機制,可以使用代碼設計 Web 頁面布局和生成頁面。
如果 Web 利用程序接受用戶通過 HTTP 要求(如 GET 或 POST)提交的輸入信息,然后使用輸出 HTML 代碼在某些地方顯示這些信息,即可能存在 XSS 漏洞。下面是1個最簡單的例子:
1. Web 要求以下所示:
GET http://www.somesite.com/page.asp?pageid=10&lang=en&title=Section%20Title
2. 在發出要求后,http://www.vxbq.cn/server/返回的 HTML 內容包括:
<h1>Section Title</h1>
可以看到,傳遞給“title”查詢字符串參數的用戶輸入可能被保存在1個字符串變量中并且由 Web 利用程序插入到 <h1> 標記中。通過提供輸入內容,攻擊者可以控制 HTML。
3. 現在,如果站點沒有在http://www.vxbq.cn/server/端對用戶輸入加以過濾(由于總是可以繞過客戶端控件),那末歹意用戶即可以使用許多手段對此漏洞加以濫用:
攻擊者可以通過擺脫 <h1> 標記來注入代碼:
<scrīpt>alert(‘XSS%20attack’)</scrīpt">http://www.somesite.com/page.asp?pageid=10&lang=en&title=Section%20Title</h1><scrīpt>alert(‘XSS%20attack’)</scrīpt>
這個要求的 HTML 輸出將為:
<h1>Section Title</h1><scrīpt>alert(‘XSS attack’)</scrīpt>
即使是這個最簡單的例子,攻擊者也能夠利用此連接完成數不清的事情。
結束語
看完這篇文章,相信你已了解了甚么是 XSS 攻擊,而這樣的攻擊在我們的生活中也不是沒有遇到過,不知道你發現沒有,偶爾我們的郵箱中就會有1些不明的 URL,而這些 URL 很有可能就是假裝好的攻擊腳本,固然,我們要有自我保護的意識,不要輕易的點擊這些鏈接之類的東東。不過,最重要的還是要知道他們攻擊的原理,了解了原理,避免這些漏洞就不遠了。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈