【網絡安全】——客戶端安全(瀏覽器安全、XSS、CSRF、Clickjacking)

​ 近在學習網絡安全相關的知識,於是先從業內一本系統講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: 受到同源策略影響。但是當儲存有敏感信息時,也有可能成爲被攻擊的目標。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章