hiiir 資安講座 iii 用戶端攻擊與防禦

43
Taien內部資安講座 III 用戶端攻擊與防禦 2013.02.05 @ Hiiir Inc. Taien Wang<[email protected]> 英屬維京群島商時間軸科技股份有限公司新創事業部

Upload: hiiir-lab

Post on 22-May-2015

581 views

Category:

Technology


9 download

TRANSCRIPT

Page 1: Hiiir 資安講座 III 用戶端攻擊與防禦

Taien內部資安講座 III用戶端攻擊與防禦

2013.02.05 @ Hiiir Inc.

Taien Wang<[email protected]>

英屬維京群島商時間軸科技股份有限公司新創事業部

Page 2: Hiiir 資安講座 III 用戶端攻擊與防禦

大綱

• 現有瀏覽器安全設計

• 跨網站腳本(XSS)

• 跨網站請求偽造(CSRF)

• 點擊綁架(ClickJacking)

• HTML5安全

• OWASP相關檢測項目

Page 3: Hiiir 資安講座 III 用戶端攻擊與防禦

現有瀏覽器安全設計

• 沙盒

– 外掛程式獨立運行

• 跨網站腳本篩選器

• 惡意網站過濾

– SmartScreen

– 惡意程式列表

• PhishTank - http://www.phishtank.com/

• Google SafeBrowsing API -

https://developers.google.com/safe-browsing/

• 私密瀏覽

Page 4: Hiiir 資安講座 III 用戶端攻擊與防禦

沙盒

• http://www.youtube.com/watch?feature=player_embedded&v=2

9e0CtgXZSI

Page 5: Hiiir 資安講座 III 用戶端攻擊與防禦

跨網站腳本篩選器(1/2)

攻擊語法 <IMG SRC=“javascript:alert(document.cookie+', This XSS Attck');”>

Page 6: Hiiir 資安講座 III 用戶端攻擊與防禦

跨網站腳本篩選器(2/2)

攻擊語法 index.php?get=<img src=“javascript:alert('xss')”>

Page 7: Hiiir 資安講座 III 用戶端攻擊與防禦

惡意網站過濾

Page 8: Hiiir 資安講座 III 用戶端攻擊與防禦

私密瀏覽

Page 9: Hiiir 資安講座 III 用戶端攻擊與防禦

跨網站腳本(XSS)

• 維京百科

• 跨網站腳本(Cross-Site Scripting,通常簡稱為XSS或跨站指令碼或跨站指令碼攻擊)

是一種網站應用程式的安全漏洞攻擊,是代碼注入的一種。它允許惡意使用者將程式碼注

入到網頁上,其他使用者在觀看網頁時就會受到影響。這類攻擊通常包含了HTML以及使

用者端腳本語言

• XSS根據效果不同可以分兩種

– 反射型XSS(Reflected XSS),亦稱非持久型XSS(Non-Persistent XSS)

– 儲存型XSS(Stored XSS),亦稱持久型XSS(Persistent XSS)

– 跨站腳本DOM(DOM XSS)

• 本質上與反射型XSS相似,因歷史背景獨立提出

• 輸出到JavaScript或控制到HTML DOM元件

Page 10: Hiiir 資安講座 III 用戶端攻擊與防禦

XSS攻擊測試字串

• OWASP Testing Guide v3

– 提供測試攻擊字串

Page 11: Hiiir 資安講座 III 用戶端攻擊與防禦

攻擊利用方式(1/5)利用圖片

Page 12: Hiiir 資安講座 III 用戶端攻擊與防禦

攻擊利用方式(2/5)用JavaScript發送POST,用DOM建立表單

Page 13: Hiiir 資安講座 III 用戶端攻擊與防禦

攻擊利用方式(3/5)直接HTML建立表單

Page 14: Hiiir 資安講座 III 用戶端攻擊與防禦

攻擊利用方式(4/5)AJAX 透過 XMLHttpRequest 發送 POST

Page 15: Hiiir 資安講座 III 用戶端攻擊與防禦

攻擊利用方式(5/5)AJAX透過 jquery 發送 POST

Page 16: Hiiir 資安講座 III 用戶端攻擊與防禦

繞過不完美的XSS防禦

• 利用字元編碼

• 繞過長度

– 如有兩個input可利用註解<!-- -->

– 利用事件(event)

– location.hash

• http://evil.com/index.html#alert(1)

• eval(location.hash.substr(1))

• 利用<base>綁架

• Window.name

Page 17: Hiiir 資安講座 III 用戶端攻擊與防禦

實際案例(1/4)

Page 18: Hiiir 資安講座 III 用戶端攻擊與防禦

實際案例(2/4)

Page 19: Hiiir 資安講座 III 用戶端攻擊與防禦

實際案例(3/4)

Page 20: Hiiir 資安講座 III 用戶端攻擊與防禦

實際案例(4/4)

• http://forum.eviloctal.com/thread-28299-1-1.html

Page 21: Hiiir 資安講座 III 用戶端攻擊與防禦

JavaScript與Http除錯工具

• Firebug

• IE 8 Developer Tools

• Fiddler

• HttpWatch

• Firefox - Httpfox

Page 22: Hiiir 資安講座 III 用戶端攻擊與防禦

XSS伺服器端防禦 - 需要防禦的地方(1/4)

• 在正確的地方採取正確的防禦

– MVC架構下在View處理資料淨化

– 無特別輸出HTML指定Header

• header('Content-Type: text/javascript; charset=utf-8');

• 設定HttpOnly

– ini_set("session.cookie_httponly", 1);

– session_set_cookie_params(0, NULL, NULL, NULL, TRUE);

– header("Set-Cookie: hidden=value; httpOnly");

• 伺服器輸出透過 JavaScript 輸出到 HTML 頁面必經之路

– document.write()

– document.writeln()

– xxx.innerHTML()

– xxx.outerHTML()

– innerHTML.replace()

– document.attachEvent()

– window.attachEvent()

– document.location.replace()

– document.location.assign()

– ...

Page 23: Hiiir 資安講座 III 用戶端攻擊與防禦

XSS伺服器端防禦 - 需要防禦的地方(2/4)

• 其他地方

– 頁面中所有的inputs框

– window.location(href, hash等)

– window.name

– document.referer

– document.cookie

– localstorage

– XMLHttpRequest傳回的資料

– ...

Page 24: Hiiir 資安講座 III 用戶端攻擊與防禦

XSS伺服器端防禦 - 過濾HTML(3/4)

• PHP

– htmlentities()

– htmlspecialchars()

– ESAPI http://code.google.com/p/owasp-esapi-php/

• HTML輸出: encodeForHTML, encodeForHTMLAttribute

• Script或事件輸入: encodeForJavaScript

• CSS輸出: encodeForCSS

• 網址輸出: encodeForURL

• Python

– cgi.escape()

• ASP

– Server.HTMLEncode()

• ASP.NET

– Server.HtmlEncode(), Microsoft Anti-Cross Site Scripting Library

• Java

– xssprotect

• Node.js

– node-validator

Page 25: Hiiir 資安講座 III 用戶端攻擊與防禦

XSS伺服器端防禦 – Flash安全設定(4/4)

• 靜態

– 理論上沒有問題

• 動態指令檔

– allowNetworking

• all 允許所有網路通訊, 預設

• internal 不能與瀏覽器通訊如navigteToURL, 但可呼叫其他API

• none 禁止任何網路通訊

– allowScriptAccess, 定義flash能否與html溝通

• always 不限制

• sameDomain 同網域不限制, 預設

• never 都不行

Page 26: Hiiir 資安講座 III 用戶端攻擊與防禦

XSS客戶端防禦

• 除了瀏覽器內建防禦

• 關閉JavaScript

• Firefox - NoScript

Page 27: Hiiir 資安講座 III 用戶端攻擊與防禦

跨網站請求偽造(CSRF)

• 維京百科

• 跨網站請求偽造(Cross-site Request Forgery, CSRF)對於網站應用安全

一直是個嚴重的問題,即駭客利用網站對於合法使用者的信任,以合法使用

者的身分向網站發出偽造請求,並在使用者不知情的情況下執行一些惡意行

為,甚至執行駭客所指定的行為

Page 28: Hiiir 資安講座 III 用戶端攻擊與防禦

Cookie類型

• Session Cookie

– 臨時Cookie

• Third-party Cookie

– 長期Cookie或本機Cookie

– Http Header: Set-Cookie

Page 29: Hiiir 資安講座 III 用戶端攻擊與防禦

瀏覽器的原則

• 主流瀏覽器預設攔截Third-party Cookie

– IE6, IE7, IE8, Safari

• 不會攔截的

– Firefox 2, Firefox 3, Opera, Chrome, Android

• 可能造成預設攔截失效

– P3P Header

• W3C 制定的一項隱私標準, 全名為 The Platform for Privacy

Perferebces

Page 30: Hiiir 資安講座 III 用戶端攻擊與防禦

實際案例

Page 31: Hiiir 資安講座 III 用戶端攻擊與防禦

Google使用while(1);防禦CRSF?

Page 32: Hiiir 資安講座 III 用戶端攻擊與防禦

CSRF防禦

• 根本原因

– CSRF之所以可以成功, 最重要的原因是所有參數可以被攻擊者猜測到的

• 防禦方法

– 驗證碼

– Referer Check

– Anti CSRF Token

• Token不是為了重複傳送, 因此為了使用方便可以允許在一個使用者的有效生命

週期內, 在token消耗掉前都用同一個token

• 避免出現在頁面的 URL 中, 以防透過 referer 方式洩漏

– 敏感操作盡量避免 GET, 改採 POST

• 但如果網站有XSS弱點CSRF Token會變得無效, 此類搭配攻擊稱為XSRF

Page 33: Hiiir 資安講座 III 用戶端攻擊與防禦

ClickJacking

• 2008年

– Robert Hansen與Jeremiah Grossman發現了點擊綁架攻擊(ClickJacking)

• 之後相關攻擊

– Html ClickJacking

– Flash ClickJacking

– Cross Site Image Overlaying(圖片覆蓋攻擊)

– 拖曳綁架與資料竊取

• Next Generation Clickjacking

• 瀏覽器拖曳拖曳, 不受相同來源策略限制

• Paul Stone, BlackHat 2010

– TapJacking(觸摸螢幕綁架)

Page 34: Hiiir 資安講座 III 用戶端攻擊與防禦

HTML ClickJacking

Page 35: Hiiir 資安講座 III 用戶端攻擊與防禦

更多實際案例

Page 36: Hiiir 資安講座 III 用戶端攻擊與防禦

Flash ClickJacking

• http://guya.net/security/clickjacking/game.html

• http://www.youtube.com/watch?v=gxyLbpldmuU

Page 37: Hiiir 資安講座 III 用戶端攻擊與防禦

Cross Site Image Overlaying(圖片覆蓋攻擊)

• http://www.informit.com/blogs/blog.aspx?uk=XSIO--Cross-site-

Image-Overlay-A-discussion-and-example

Page 38: Hiiir 資安講座 III 用戶端攻擊與防禦

TapJacking

Page 39: Hiiir 資安講座 III 用戶端攻擊與防禦

ClickJacking防禦

• JavaScript: frame busting

– 可被繞過

• Http Header: X-Frame-Options

– DENY: 完全拒絕

– SAMEORIGIN: 相同來源

– ALLOW-FROM: 允許自訂可載入頁面

– 使用方式

1. 程式輸入header('X-FRAME-OPTIONS: DENY');

2. Web server設定

Page 40: Hiiir 資安講座 III 用戶端攻擊與防禦

HTML5安全

• HTML新標籤

– XSS防禦趕不上進度<vedio>

• Iframe沙盒的政策

– allow-same-origin: 允許同來源存取

– allow-top-navigation: 允許存取頂層視窗

– allow-forms: 允許傳送表單

– allow-scripts: 允許執行指令碼

• noreferrer

– 解決了CSRF referrer洩漏問題

• 其他安全問題

– Cross-Origin Resource Sharing

– 跨視窗傳遞

– Web Storage

Page 41: Hiiir 資安講座 III 用戶端攻擊與防禦

弱點揭露

• Exploits Database by Offensive Security

• Metasploit

• WooYun.org

Page 42: Hiiir 資安講座 III 用戶端攻擊與防禦

項目編號 項目 說明

OWASP-AT-006 記住密碼與密碼重置弱點測試

可透過AUTOCOMPLETE=“off”標籤屬性避免紀錄

OWASP-SM-001 連線管理模式測試 是否是在安全和非預知的情況下產生cookies和其他連線驗證碼?

OWASP-SM-002 Cookies屬性測試 Cookies是否設定Secure、HttpOnly、Domain與是否可竄改取得更高權限?

OWASP-SM-003 連線固定測試 在連線固定狀況下,是否可利用該弱點挾持用戶連線?

OWASP-SM-004 連線變數洩漏測試 連線ID(SessionID)是否加密?如無是否利用HTTPS保護?

OWASP-SM-005 CSRF測試 攻擊者是否可在用戶登入後暗中進行其他操作?

OWASP-AZ-002 繞過授權模式測試 是否可不經過驗證取得隱藏功能?

OWASP-AZ-003 權限提升測試 用戶是否可透過權限提升攻擊不經過正常管道提升權限?

OWASP-DV-001 跨站腳本反射測試 Reflected XSS

OWASP-DV-002 跨站腳本儲存測試 Stored XSS

OWASP-DV-003 跨站腳本DOM測試 DOM XSS

OWASP-DV-004 Flash跨站測試 Cross Site Flashing

Page 43: Hiiir 資安講座 III 用戶端攻擊與防禦

參考資料

• 吳翰清, 網路竟然這麼危險(白帽子讲Web安全), 2012

• IE 8 XSS Filter Architecture / Implementation

• 跨網站指令碼

• 跨網站的偽造要求(CSRF)

• OWASP, OWASP Testing Guide v3

• OWASP, OWASP Enterprise Security API

• OWASP, OWASP Secure Coding Practices

• Gustav Rydstedt, Elie Bursztein, Dan Boneh, and Collin Jackson, "Busting

frame busting: a study of clickjacking vulnerabilities at popular sites"

• Gustav Rydstedt, Elie Bursztein, and Dan Boneh, "raming Attacks on Smart

Phones and Dumb Routers: Tap-jacking and Geo-localization“

• HTML5 Security Cheatsheet