第1章 瀏覽器安全概述 1
1.1 首要問題 1
1.2 揭密瀏覽器 3
1.2.1 與Web應用休戚與共 3
1.2.2 同源策略 3
1.2.3 HTTP首部 4
1.2.4 標記語言 4
1.2.5 CSS 5
1.2.6 腳本 5
1.2.7 DOM 5
1.2.8 渲染引擎 5
1.2.9 Geolocation 6
1.2.10 Web 存儲 7
1.2.11 跨域資源共享 7
1.2.12 HTML5 8
1.2.13 隱患 9
1.3 發展的壓力 9
1.3.1 HTTP首部 9
1.3.2 反射型XSS過濾 11
1.3.3 沙箱 11
1.3.4 反網絡釣魚和反惡意軟件 12
1.3.5 混入內容 12
1.4 核心安全問題 12
1.4.1 攻擊麵 13
1.4.2 放棄控製 14
1.4.3 TCP協議控製 15
1.4.4 加密通信 15
1.4.5 同源策略 15
1.4.6 謬論 16
1.5 瀏覽器攻防方法 16
1.5.1 初始化 18
1.5.2 持久化 18
1.5.3 攻擊 19
1.6 小結 20
1.7 問題 21
1.8 注釋 21
第2章 初始控製 23
2.1 理解控製初始化 23
2.2 實現初始控製 24
2.2.1 使用XSS攻擊 24
2.2.2 使用有隱患的Web應用 34
2.2.3 使用廣告網絡 34
2.2.4 使用社會工程攻擊 35
2.2.5 使用中間人攻擊 45
2.3 小結 55
2.4 問題 55
2.5 注釋 56
第3章 持續控製 58
3.1 理解控製持久化 58
3.2 通信技術 59
3.2.1 使用XMLHttpRequest輪詢 60
3.2.2 使用跨域資源共享 63
3.2.3 使用WebSocket通信 63
3.2.4 使用消息傳遞通信 65
3.2.5 使用DNS隧道通信 67
3.3 持久化技術 73
3.3.1 使用內嵌框架 73
3.3.2 使用瀏覽器事件 75
3.3.3 使用底層彈齣窗口 78
3.3.4 使用瀏覽器中間人攻擊 80
3.4 躲避檢測 84
3.4.1 使用編碼躲避 85
3.4.2 使用模糊躲避 89
3.5 小結 96
3.6 問題 97
3.7 注釋 98
第4章 繞過同源策略 100
4.1 理解同源策略 100
4.1.1 SOP與DOM 101
4.1.2 SOP與CORS 101
4.1.3 SOP與插件 102
4.1.4 通過界麵僞裝理解SOP 103
4.1.5 通過瀏覽器曆史理解SOP 103
4.2 繞過SOP技術 103
4.2.1 在Java中繞過SOP 103
4.2.2 在Adobe Reader中繞過SOP 108
4.2.3 在Adobe Flash中繞過SOP 109
4.2.4 在Silverlight中繞過SOP 110
4.2.5 在IE中繞過SOP 110
4.2.6 在Safari中繞過SOP 110
4.2.7 在Firefox中繞過SOP 112
4.2.8 在Opera中繞過SOP 113
4.2.9 在雲存儲中繞過SOP 115
4.2.10 在CORS中繞過SOP 116
4.3 利用繞過SOP技術 117
4.3.1 代理請求 117
4.3.2 利用界麵僞裝攻擊 119
4.3.3 利用瀏覽器曆史 132
4.4 小結 139
4.5 問題 139
4.6 注釋 140
第5章 攻擊用戶 143
5.1 內容劫持 143
5.2 捕獲用戶輸入 146
5.2.1 使用焦點事件 147
5.2.2 使用鍵盤事件 148
5.2.3 使用鼠標和指針事件 150
5.2.4 使用錶單事件 152
5.2.5 使用IFrame按鍵記錄 153
5.3 社會工程學 154
5.3.1 使用標簽綁架 154
5.3.2 使用全屏 155
5.3.3 UI期望濫用 159
5.3.4 使用經過簽名的Java小程序 176
5.4 隱私攻擊 180
5.4.1 不基於cookie的會話追蹤 181
5.4.2 繞過匿名機製 182
5.4.3 攻擊密碼管理器 184
5.4.4 控製攝像頭和麥剋風 186
5.5 小結 192
5.6 問題 192
5.7 注釋 193
第6章 攻擊瀏覽器 195
6.1 采集瀏覽器指紋 196
6.1.1 使用HTTP首部 197
6.1.2 使用DOM屬性 199
6.1.3 基於軟件bug 204
6.1.4 基於瀏覽器特有行為 204
6.2 繞過cookie檢測 205
6.2.1 理解結構 206
6.2.2 理解屬性 207
6.2.3 繞過路徑屬性的限製 209
6.2.4 cookie存儲區溢齣 211
6.2.5 使用cookie實現跟蹤 214
6.2.6 Sidejacking攻擊 214
6.3 繞過HTTPS 215
6.3.1 把HTTPS降級為HTTP 215
6.3.2 攻擊證書 218
6.3.3 攻擊SSL/TLS層 219
6.4 濫用URI模式 220
6.4.1 濫用iOS 220
6.4.2 濫用三星Galaxy 222
6.5 攻擊JavaScript 223
6.5.1 攻擊JavaScript加密 223
6.5.2 JavaScript和堆利用 225
6.6 使用Metasploit取得shell 231
6.6.1 Metasploit起步 231
6.6.2 選擇利用 232
6.6.3 僅執行一個利用 233
6.6.4 使用Browser Autopwn 236
6.6.5 結閤使用BeEF和Metasploit 237
6.7 小結 240
6.8 問題 240
6.9 注釋 240
第7章 攻擊擴展 244
7.1 理解擴展的結構 244
7.1.1 擴展與插件的區彆 245
7.1.2 擴展與附加程序的區彆 245
7.1.3 利用特權 245
7.1.4 理解Firefox擴展 246
7.1.5 理解Chrome擴展 251
7.1.6 IE擴展 258
7.2 采集擴展指紋 259
7.2.1 使用HTTP首部采集指紋 259
7.2.2 使用DOM采集指紋 260
7.2.3 使用清單文件采集指紋 262
7.3 攻擊擴展 263
7.3.1 冒充擴展 263
7.3.2 跨上下文腳本攻擊 265
7.3.3 執行操作係統命令 277
7.3.4 操作係統命令注入 280
7.4 小結 284
7.5 問題 284
7.6 注釋 285
第8章 攻擊插件 288
8.1 理解插件 288
8.1.1 插件與擴展的區彆 289
8.1.2 插件與標準程序的區彆 290
8.1.3 調用插件 290
8.1.4 插件是怎麼被屏蔽的 292
8.2 采集插件指紋 292
8.2.1 檢測插件 293
8.2.2 自動檢測插件 295
8.2.3 用BeEF檢測插件 295
8.3 攻擊插件 297
8.3.1 繞過點擊播放 297
8.3.2 攻擊Java 302
8.3.3 攻擊Flash 311
8.3.4 攻擊ActiveX控件 314
8.3.5 攻擊PDF閱讀器 318
8.3.6 攻擊媒體插件 319
8.4 小結 323
8.5 問題 324
8.6 注釋 324
第9章 攻擊Web應用 327
9.1 發送跨域請求 327
9.1.1 枚舉跨域異常 327
9.1.2 前置請求 330
9.1.3 含義 330
9.2 跨域Web應用檢測 330
9.2.1 發現內網設備IP地址 330
9.2.2 枚舉內部域名 331
9.3 跨域Web應用指紋采集 333
9.4 跨域認證檢測 339
9.5 利用跨站點請求僞造 342
9.5.1 理解跨站點請求僞造 343
9.5.2 通過XSRF攻擊密碼重置 345
9.5.3 使用CSRF token獲得保護 346
9.6 跨域資源檢測 347
9.7 跨域Web應用漏洞檢測 350
9.7.1 SQL注入漏洞 350
9.7.2 檢測XSS漏洞 363
9.8 通過瀏覽器代理 366
9.8.1 通過瀏覽器上網 369
9.8.2 通過瀏覽器Burp 373
9.8.3 通過瀏覽器Sqlmap 375
9.8.4 通過Flash代理請求 377
9.9 啓動拒絕服務攻擊 382
9.9.1 Web應用的痛點 382
9.9.2 使用多個勾連瀏覽器DDoS 383
9.10 發動Web應用利用 387
9.10.1 跨域DNS劫持 387
9.10.2 JBoss JMX跨域遠程命令執行 388
9.10.3 GlassFish跨域遠程命令執行 390
9.10.4 m0n0wall跨域遠程命令執行 393
9.10.5 嵌入式設備跨域命令執行 395
9.11 小結 399
9.12 問題 400
9.13 注釋 400
第10章 攻擊網絡 404
10.1 識彆目標 404
10.1.1 識彆勾連瀏覽器的內部IP 404
10.1.2 識彆勾連瀏覽器的子網 409
10.2 ping sweep 412
10.2.1 使用XMLHttpReqeust 412
10.2.2 使用Java 416
10.3 掃描端口 419
10.3.1 繞過端口封禁 420
10.3.2 使用IMG標簽掃描端口 424
10.3.3 分布式端口掃描 426
10.4 采集非HTTP服務的指紋 428
10.5 攻擊非HTTP服務 430
10.5.1 NAT Pinning 430
10.5.2 實現協議間通信 434
10.5.3 實現協議間利用 446
10.6 使用BeEF Bind控製shell 458
10.6.1 BeEF Bind Shellcode 458
10.6.2 在利用中使用BeEF Bind 463
10.6.3 把BeEF Bind作為Web shell 472
10.7 小結 475
10.8 問題 475
10.9 注釋 476
第11章 結語:最後的思考 479
· · · · · · (
收起)