第1 篇 初探瀏覽器安全 1
1 漏洞與瀏覽器安全 3
1.1 漏洞的三要素 3
1.2 漏洞的生命周期 4
1.3 瀏覽器安全概述 5
1.4 瀏覽器安全的現狀 7
1.5 瀏覽器的應對策略 9
1.6 “白帽子”與瀏覽器廠商的聯手協作 9
1.7 全書概覽 10
1.8 本章小結 12
2 瀏覽器中常見的安全概念 13
2.1 URL 13
2.1.1 URL 的標準形式 15
2.1.2 IRI 16
2.1.3 URL 的“可視化”問題——字形欺騙釣魚攻擊 18
2.1.4 國際化域名字形欺騙攻擊 19
2.1.5 自糾錯與Unicode 字符分解映射 20
2.1.6 登錄信息釣魚攻擊 23
2.2 HTTP 協議 24
2.2.1 HTTP HEADER 25
2.2.2 發起HTTP 請求 26
2.2.3 Cookie 28
2.2.4 收到響應 29
2.2.5 HTTP 協議自身的安全問題 31
2.2.6 注入響應頭:CRLF 攻擊 31
2.2.7 攻擊響應:HTTP 401 釣魚 32
2.3 瀏覽器信息安全的保障 33
2.3.1 源 33
2.3.2 同源準則 34
2.3.3 源的特殊處理 34
2.3.4 攻擊同源準則:IE11 跨任意域腳本注入一例 35
2.4 特殊區域的安全限製 37
2.4.1 安全域 37
2.4.2 本地域 37
2.5 僞協議 38
2.5.1 data 僞協議 38
2.5.2 about 僞協議 40
2.5.3 javascript/vbscript 僞協議 41
2.5.4 僞協議邏輯齣錯:某瀏覽器跨任意域腳本注入一例 42
2.6 本章小結 43
3 探索瀏覽器的導航過程 45
3.1 導航開始 45
3.1.1 瀏覽器的導航過程 46
3.1.2 DNS 請求 46
3.1.3 DNS 劫持和DNS 汙染 47
3.1.4 導航尚未開始時的狀態同步問題 48
3.1.5 實例:針對導航過程發起攻擊 49
3.2 建立安全連接 50
3.2.1 HTTPS 50
3.2.2 HTTPS 請求中的Cookie 51
3.3 響應數據的安全檢查——XSS 過濾器 52
3.3.1 IE XSS Filter 的實現原理 53
3.3.2 Chrome XSSAuditor 的工作原理 55
3.4 文檔的預處理 56
3.4.1 瀏覽器對HTML 文檔的標準化 56
3.4.2 設置兼容模式 57
3.5 處理腳本 59
3.5.1 腳本的編碼 60
3.5.2 IE 的CSS expression 的各種編碼模式 62
3.5.3 瀏覽器的應對策略:CSP 63
3.5.4 “繞過”CSP:MIME Sniff 65
3.5.5 簡單的Fuzz:混淆CSS expression 錶達式 68
3.6 攻擊HTML 標準化過程繞過IE/Chrome 的XSS Filter 71
3.7 本章小結 73
4 頁麵顯示時的安全問題 75
4.1 點擊劫持 76
4.1.1 點擊劫持頁麵的構造 76
4.1.2 X-Frame-Options 78
4.2 HTML5 的安全問題 80
4.2.1 存儲API 81
4.2.2 跨域資源共享 83
4.2.3 基於FullScreen 和Notification API 的新型釣魚攻擊 84
4.2.4 組閤API 後可能導緻的安全問題 87
4.2.5 引入新的XSS 攻擊嚮量 87
4.2.6 互聯網威脅 89
4.3 HTTPS 與中間人攻擊 92
4.3.1 HTTPS 的綠鎖 92
4.3.2 HTTPS 有多安全? 94
4.3.3 HSTS 96
4.3.4 使用SSLStrip 阻止HTTP 升級HTTPS 97
4.3.5 使用Fiddler 對PC 端快速進行中間人攻擊測試 99
4.3.6 使用Fiddler 腳本和AutoResponse 自動發起中間人攻擊 101
4.4 本章小結 103
5 瀏覽器擴展與插件的安全問題 105
5.1 插件 106
5.1.1 ActiveX 106
5.1.2 ActiveX 的安全問題 107
5.1.3 ActiveX 的邏輯漏洞 108
5.1.4 NPAPI、PPAPI 111
5.2 定製瀏覽器的擴展和插件的漏洞 113
5.2.1 特權API 暴露 114
5.2.2 DOM 修改引入攻擊嚮量 114
5.2.3 Windows 文件名相關的多個問題 115
5.2.4 NPAPI DLL 的問題 116
5.2.5 同源檢查不完善 117
5.2.6 Content Script 劫持 118
5.2.7 權限隔離失敗 118
5.2.8 配閤切核策略+本地內部頁XSS 執行代碼 118
5.2.9 下載服務器限製寬鬆 119
5.2.10 TLDs 判定問題 119
5.2.11 經典漏洞 120
5.2.12 中間人 120
5.3 Adobe Flash 插件與Action Script 121
5.3.1 Flash 的語言——Action Script 121
5.3.2 Flash 文檔的反編譯、再編譯與調試 122
5.3.3 SWF 的網絡交互:URLLoader 124
5.3.4 crossdomain.xml 與Flash 的“沙盒” 125
5.3.5 ExternalInterface 126
5.3.6 FLASH XSS 126
5.3.7 Microsoft Edge 中的Flash ActiveX 130
5.4 瀏覽器的沙盒 131
5.4.1 受限令牌 132
5.4.2 完整性級彆與IE 的保護模式 133
5.4.3 任務對象 134
5.5 本章小結 135
6 移動端的瀏覽器安全 137
6.1 移動瀏覽器的安全狀況 138
6.2 移動端的威脅 141
6.2.1 通用跨站腳本攻擊 141
6.2.2 地址欄僞造 142
6.2.3 界麵僞裝 143
6.3 結閤係統特性進行攻擊 144
6.3.1 Android 一例漏洞:使用Intent URL Scheme 繞過Chrome SOP 144
6.3.2 iOS 的一例漏洞:自動撥號泄露隱私 146
6.3.3 Windows Phone 一例未修補漏洞:利用Cortana 顯示IE 中已保存密碼 147
6.4 本章小結 149
第2 篇 實戰網馬與代碼調試
7 實戰瀏覽器惡意網頁分析 153
7.1 惡意網站中“看得見的”攻防 153
7.2 惡意腳本的抓取和分析 155
7.2.1 發現含攻擊代碼的網址 156
7.2.2 使用rDNS 擴大搜索結果 156
7.2.3 下載攻擊代碼 157
7.2.4 搭建測試環境 158
7.2.5 初識網馬反混淆工具 158
7.2.6 惡意腳本中常見的編碼方式 159
7.3 一個簡單的掛馬代碼的處理 169
7.3.1 快速判斷掛馬 169
7.3.2 JS 代碼的格式化 170
7.4 更為復雜的代碼處理:對Angler 網馬工具包的反混淆 170
7.4.1 Angler EK 的特徵 170
7.4.2 推理:找齣代碼中的“解密-執行”模式 172
7.4.3 檢證:確定“解密-執行”模式的位置和方法 175
7.4.4 追蹤:使用瀏覽器特性判斷用戶環境 179
7.4.5 利用漏洞CVE-2014-6332 發起攻擊 188
7.5 本章小結 190
8 調試工具與Shellcode 191
8.1 調試工具的用法 191
8.1.1 調試符號 191
8.1.2 WinDbg 的用法 192
8.1.3 IDA 的用法 195
8.1.4 OllyDbg 的用法 199
8.2 與Shellcode 的相關名詞 201
8.2.1 機器指令 201
8.2.2 控製關鍵內存地址 203
8.2.3 NOP Slide 204
8.2.4 Magic Number 0x8123 205
8.3 Shellcode 的處理 205
8.3.1 實現通用的Shellcode 206
8.3.2 調試網馬中的Shellcode 212
8.4 本章小結 218
第3 篇 深度探索瀏覽器漏洞
9 漏洞的挖掘 221
9.1 挖0day 221
9.1.1 ActiveX Fuzzer 的原理 221
9.1.2 使用AxMan Fuzzer 來Fuzz ActiveX 插件 222
9.1.3 現場復現 225
9.2 DOM Fuzzer 的搭建 229
9.2.1 搭建運行Grinder 的環境 230
9.2.2 Fuzzer 的結構與修改 231
9.2.3 現場復現 232
9.3 崩潰分析 233
9.3.1 哪些典型崩潰不能稱作瀏覽器漏洞 233
9.3.2 ActiveX 崩潰一例 236
9.3.3 IE11 崩潰一例 238
9.4 本章小結 244
10 網頁的渲染 245
10.1 網頁的渲染 245
10.1.1 渲染引擎 245
10.1.2 DOM 結構模型 247
10.1.3 IE 解析HTML 的過程 249
10.1.4 IE 的Tokenize 251
10.1.5 Chrome 解析HTML 的過程 253
10.1.6 Chrome 的Tokenize 254
10.2 元素的創建 256
10.2.1 IE 中元素的創建過程 256
10.2.2 Chrome 中元素的創建過程 257
10.2.3 元素的生成規律 258
10.3 實戰:使用WinDbg 跟蹤元素的生成 260
10.4 實戰:使用WinDbg 跟蹤元素的插入 263
10.5 實戰:使用WinDbg 跟蹤元素的釋放 264
10.6 本章小結 266
11 漏洞的分析 267
11.1 分析IE 漏洞CVE-2012-4969 267
11.1.1 崩潰分析 268
11.1.2 追根溯源 270
11.2 分析JScript9 漏洞CVE-2015-2425 271
11.2.1 跟蹤漏洞 275
11.3 Hacking Team 的Flash 漏洞CVE-2015-5119 分析 276
11.3.1 靜態閱讀:成因分析 276
11.3.2 Vector 的覆蓋過程 278
11.4 本章小結 279
12 漏洞的利用 281
12.1 ShellCode 的編寫 281
12.2 CVE-2012-4969 的利用 284
12.2.1 DEP/ASLR 繞過 287
12.3 CVE-2015-5119 的Vector 296
12.4 本章小結 301
附錄 303
附錄A IE(Edge)的URL 截斷 303
附錄B IE 的控製颱截斷 304
附錄C 錶單中的mailto: 外部協議 305
附錄D 危險的regedit: 外部協議 306
附錄E IE XSS Filter 的漏洞也會幫助執行XSS 307
附錄F 更高級的策略保護——CSP Level 2 308
附錄G 更快的執行速度——JScript5 to Chakra 309
附錄H Chakra 的整數存儲 310
附錄I 安全實踐 311
參考資料 315
· · · · · · (
收起)