本節書摘來自華章計算機《web應用漏洞偵測與防禦:揭秘鮮為人知的攻擊手段和防禦技術》一書中的第2章,作者:(美) 希馬(shema, m.)著, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
大多數網絡攻擊都是采用跨站腳本(xss)攻擊。這種攻擊在站點之間頻繁發生,攻擊者隻需要了解html标簽和一些膚淺的javascript知識,就能徹底擊垮站點。跨站腳本攻擊的曆史和浏覽器的曆史一樣久遠,具體時間可以追溯到javascript仍被稱為livescript之時,當時黑客攻擊還被簡單地描述為“惡意html”。本章中,我們将會探索為什麼這種攻擊仍然如此難以預防,還會介紹現代浏覽器和html5規範怎樣影響攻擊者和防禦者之間的較量。
還記得邀請蒼蠅到它的客廳做客的蜘蛛嗎?還記得幫助蠍子渡河的烏龜嗎?這些故事都包含了獵手的天真和獵物的肮髒。internet充斥着陷阱、陰暗的角落、惡意行為,使得随意地浏覽網站成為了一種危險的行為。有些網站即便不存在明顯的危險,至少也值得高度懷疑,因為它們對浏覽器有潛在的敵意。提供盜版軟體、免費色情視訊、盜版音樂等内容的網站往往遍布病毒或惡意軟體,等待着不安全浏覽器對它進行通路。這些站點捕食不知情的通路者不足為怪。
惡意内容并不局限于這些邊緣站點,也不會讓人一眼就能看出來。它會出現在我們認為安全的網站,人們使用這些網站發送電子郵件、處理個人财務、閱讀新聞、參與社交網絡等。跨站腳本攻擊這種典型的網絡攻擊是廣泛且持續存在的頑疾。多虧反病毒資訊和作業系統安全設定,使得大多數人對下載下傳和運作不了解的程式非常警惕,而且在人們的電腦上也有足夠的警告及保護來阻止帶有病毒的可執行程式。
浏覽器一直以javascript的形式執行代碼,你并不清楚這些代碼的具體内容,代碼的執行也不需要經過你的同意,而且是發生在防病毒軟體或其他電腦防禦措施的作用範圍之外。來自網站的html和javascript在其信任的沙盒中執行各類操作。浏覽器可以顯示你收件箱的下一條消息或者顯示你銀行賬戶的目前餘額,浏覽器甚至可以提取你的密碼并發送到位于其他國家的伺服器上,或者在背景執行轉賬。從浏覽器的角度,所有這些動作都是正常的業務。
2005年10月,一名使用者登入到myspace并讀取了某人的個人資料。浏覽器執行了那個頁面中的javascript代碼,自動更新了使用者自己的個人資料并聲明samy是他們的英雄。然後一個朋友檢視了該使用者的個人資料,并且在他自己的個人資料上确認samy确實是“我的英雄”。然後另一個朋友,雖然他既沒有聽說過也沒有見過samy,通路了myspace并添加了相同的聲明。這種模式持續進行,并呈現爆炸性增長,時間長達24小時,samy有了超過一百萬的朋友,myspace因流量問題而崩潰。samy精心制作了一個跨站腳本(xss),使用了約4000個字元的文本,引發了針對有數千台伺服器的公司的拒絕服務攻擊,該公司當時的估值大約5億美元。這次攻擊還使得samy成為了跨站腳本攻擊産生的巨大影響的象征(<code>http: //blogoscoped. com/archive/2005-10-14-n81. html</code>為samy建立者的訪談錄)。
你經常被提示向網站重新認證嗎?你使用基于web的電子郵件嗎?你曾經線上檢視銀行賬戶嗎?發送twitter嗎?加某人為好友嗎?這些網站中的每一類操作都有xss漏洞的執行個體。
html注入攻擊的威力并不僅僅是惹惱使用者(攻破網站對于網站營運商而言就不光是滋擾了),它還可以用于下載下傳鍵盤記錄程式,該程式可用來擷取銀行和線上遊戲的證書。可用html注入來擷取浏覽器的cookie,進而可以在不知道被攻擊者使用者名和密碼的情況下通路他的賬戶。html注入攻擊是針對web浏覽器使用者的簡單但非常危險的攻擊的基礎。