近在學習網絡安全相關的知識,於是先從業內一本系統講Web安全的書《白帽子講Web安全》系統學習Web安全的相關知識。在此整理書中的知識層次,不求詳盡,只求自己對整個Web安全梗概有所瞭解,另外記錄下來以便以後溫習。
本書總共分爲四篇,作者的安全世界觀,客戶端腳本的安全、服務端應用的安全以及互聯網公司安全運營。這一篇博客記錄的是客戶端腳本安全的知識,包括安全世界觀、瀏覽器安全、XSS跨站腳本攻擊、跨站點請求劫持CSRF、點擊劫持和HTML5安全。
ps:閱讀本書時,發現作者是年西安交通大學少年班出身,在大學期間就成立了“幻影”,後成爲中國安全圈內極具影響力的組織 。算來還是學長,在此對學長的書以及學長在中國網絡安全界的影響,膜一波。
文章目錄
世界觀安全
-
安全三要素 CIA
- 機密性 Confidentiality
- 完整性 Integrity
- 可用性 Availability
-
安全評估
資產等級劃分=》威脅分析=》風險分析=》確認解決方案
-
互聯網的核心是由用戶數據驅動的
互聯網安全的核心問題,是數據安全的問題
-
威脅建模 STRIDE
僞裝,篡改,抵賴,信息泄露,拒絕服務,提升權限
-
風險模型 DREAD
-
白帽子兵法
- Secure By Default 原則(黑白名單)
- 最小權限原則
- 縱深防禦原則(1.多層面,多方面 2.正確的地方做正確的事)
- 數據與代碼分離原則
- 不可預測性原則
瀏覽器安全
-
同源策略 Same Origin Policy
源 瀏覽器爲了不讓瀏覽器的頁面行爲形成干擾,提出“源”。
影響源的因素有:host、子域名、端口、協議
對於當前頁面來說,重要在加載JS的域
在瀏覽器中 script、 img 、iframe 、link、 標籤跨域加載資源,實際發起一次GET請求,但不能讀寫返回的內容
XMLHttpRequest受到同源策略影響
-
瀏覽器沙箱
掛馬 在網頁中插入惡意代碼,利用瀏覽器漏洞執行任意代碼
sandbox 資源隔離類模塊,將不受信任的代碼隔離在訪問區之外,通過嚴格合法檢驗的API進行訪問,各個模塊分隔開
多進程瀏覽器 瀏覽器多進程,防止單頁面崩潰導致全局崩潰
-
惡意網址攔截
瀏覽器週期性從服務器端獲得一份最新的惡意網址黑名單
分類 1. 掛馬網站 2. 釣魚網站
PhishTank提供惡意網址黑名單
EVSSL證書(兼容X509標準)瀏覽器特別對待
-
高速發展的瀏覽器安全
Firefox 第一個支持CSP(Content Security Policy)的瀏覽器,插入一個http返回頭
跨站腳本攻擊 (XSS)
-
簡介
XSS: Cross Site Script
黑客通過“HTML注入”篡改了網頁,插入了惡意的腳本,從而在用戶瀏覽網頁時,控制用戶瀏覽器的一種攻擊。
分類
- 反射型XSS : 將用戶輸入的數據“反射”給瀏覽器 非持久性XSS
- 儲存型XSS : 將用戶輸入的數據儲存在服務端
- DOM Based XSS : 通過修改頁面的DOM節點形成的XSS
-
XSS攻擊進階
XSS Payload : JS或者其他富客戶端的腳本
常見:讀取cookie對象,發起cookie劫持。(插入一張看不見的圖片,將cookie發給遠程服務器)
HttpOnly可以防止cookie劫持
強大的XSS Payload
- 構造GET和POST請求 1.構造form表單 2.XMLHttpRequest 發送POST請求
- XSS釣魚 與用戶進行交互,eg:僞造出登錄框,將密碼發送至服務器
- 識別用戶瀏覽器 UserAgent對象,用JS腳本實現
- 識別用戶安裝的軟件 ActiveX控件,很多第三方軟件也會泄露電腦軟件信息
- CSS History Hack 通過CSS發現用戶曾經訪問過的網站
- 獲取用戶真實IP地址 通過第三方軟件完成,eg:JAVA的Java Applet接口
常見XSS攻擊平臺 Attack API,BeEF, XSS-Proxy
XSS worm Samy Worm 通過CSS構造出XSS
百度空間蠕蟲
XSS構造技巧
- 利用字符編碼
- 繞過長度限制(1將惡意代碼隱藏起來 eg:location.hash不會發送 2.利用註釋符繞過兩個文本框從而增加長度)
- 使用base標籤:設定緊接其後的相對路徑的host
- window.name 由於window對象很多時候不受同源策略的影響
**變廢爲寶 碟中諜 Mission impossible **
- Apache Expect Header XSS :JS控制的瀏覽器環境無法控制http頭,但是利用flash發起請求可以自定義大多數HTTP頭
- Anehta的迴旋鏢:將要利用的反射型XSS嵌入一個儲存型XSS中
Flash XSS 在Flash中可以嵌入ActionScript腳本 ,如果一定要用Flash,要求轉碼爲flv靜態文件,或者配置參數
JS 框架的XSS漏洞 信任了用戶傳入的參數,用戶可能上傳惡意代碼
-
XSS的防禦
- 四兩撥千斤HttpOnly:禁止JS訪問帶有HttpOnly屬性的Cookie
- 輸入檢查 : 客戶端服務端同時檢查 XSS Filter
- 輸出檢查 : 編碼或者轉義 JavaScriptEncode() HtmlEncode() ,大部分XSS漏洞可以再模板系統中解決
- 正確地防禦XSS , XSS 實質上是一種 HTML注入,用戶數據被當成HTML代碼來執行,所以要在所有XSS可能出現的場景一一解決
- 構造script標籤,執行腳本——使用HtmlEncode,以及JavaScriptEncode
- CSS,style中出現漏洞——使用encodeForCSS()函數
- 地址欄中——URLencode
- 處理富文本,富文本是完整的HTML代碼——使用白名單
- 防禦DOM Based XSS
跨站點請求僞造(CSRF)
-
CSRF簡介
攻擊者利用用戶的身份,進行http請求,從而造成破壞,不需要獲得cookie直接利用用戶
-
CSRF進階
-
瀏覽器的Cookie策略
cookie分爲 Session Cookie臨時cookie 和Third-party cookie 本地cookie ,IE,Safari默認攔截本地cookie的發送
-
P3P頭的副作用 允許iframe,script等標籤就不會攔截第三方cookie的發送
-
GET/POST的漏洞,php的$_REQUEST 和POST,創建隱形的iframe讓用戶發起POST請求
-
Flash CSRF (已經不能發送本地cookie)
-
CSRF Worm
-
-
CSRF防禦
- 驗證碼,強制讓用戶與應用進行 交互才能發起合法的網絡請求
- Referer Check 用於檢查請求是否來自合法的源
- Anti CSRF Token
- CSRF能夠成功的原因是攻擊者可以猜到重要操作的所有參數
- 增加Token在Session或者Cookie中,提交時,需要驗證表單中的Token
- Token使用原則(根據不可預測性原則):1.足夠隨機生成 2.可以考慮生成多個有效的Token解決多頁面共存的問題 3.Token的保密性
- 防止Token泄露:1.Token放在表單中 2.敏感操作由GET換爲POST 3.以form表單或者AJAX的形式提交
點擊劫持(Clickjacking)
-
什麼是點擊劫持
視覺上的欺騙手段。攻擊者通過使用一個透明的、不可見的iframe覆蓋在一個網頁上,然後誘使用戶在該網頁上進行操作,此時用戶將在不知情的情況下點擊透明的iframe頁面。通過調整iframe的位置,可以誘使用戶恰好點擊iframe頁面的一些功能按鈕。
-
Flash點擊劫持
在Flash遊戲上覆蓋一個iframe最終可以在用戶不知情的情況下達到目的。
-
圖片覆蓋攻擊
在可信的網站上,通過覆蓋圖片 XSIO 方式,讓用戶進入釣魚網站或者利用用戶完成某些操作。
-
拖拽劫持與數據竊取
瀏覽器拖拽事件,利用隱形的iframe來誘導用戶完成需要的操作。
-
Clickjacking3.0觸屏劫持
手機OS系統瀏覽器中很多時候會隱藏地址欄,從而攻擊者僞造出一個iframe來欺騙用戶。
-
Clickjacking防禦
通過禁止跨域的iframe來防範。
- frame busting 防止iframe的嵌套
- X-Frame-Options (Http頭)可以選擇性決定是否加載或者是否加載不同源的iframe,屬性值有DENY, SAMEORIGIN, ALLOW-FORM origin
HTML5安全
-
HTML5新標籤
- 新標籤的XSS : 、等新標籤的XSS攻擊
- iframe的sandbox: iframe新屬性sandbox能夠將iframe標籤加載的內容視作一個獨立的源,禁止執行腳本,表單禁止提交,插件禁止被加載,指向其他瀏覽對象的鏈接也會被禁止
- Link Types:noreferrer 瀏覽器請求該標籤不再發送Referer,需要開發者手動添加
- Canvas的妙用:使用Canvas在線破解驗證碼
-
其他安全問題
- Cross-Origin Resource Sharing:jsonp,iframe合法跨域,發起請求的時候必須帶上一個Origin Header(判斷請求是否來自一個合法的源),服務器返回一個HTTPHeader
- postMessage——跨窗口傳遞:允許每一個window向其他窗口發送文本消息,從而實現跨窗口的消息傳遞,不受同源策略的影響。1.在接受窗口驗證Domain甚至URL 2.對消息進行檢查,防止XSS攻擊
- Web Storage: 受到同源策略影響。但是當儲存有敏感信息時,也有可能成爲被攻擊的目標。