第1章 Web安全的關鍵點 1
1.1 數據與指令 1
1.2 瀏覽器的同源策略 4
1.3 信任與信任關係 7
1.4 社會工程學的作用 9
1.5 攻防不單一 9
1.6 場景很重要 10
1.7 小結 11
第2章 前端基礎 12
2.1 W3C的世界法則 12
2.2 URL 14
2.3 HTTP協議 15
2.4 鬆散的HTML世界 19
2.4.1 DOM樹 20
2.4.2 iframe內嵌齣一個開放的世界 21
2.4.3 HTML內嵌腳本執行 22
2.5 跨站之魂——JavaScript 23
2.5.1 DOM樹操作 23
2.5.2 AJAX風險 25
2.5.3 模擬用戶發起瀏覽器請求 30
2.5.4 Cookie安全 33
2.5.5 本地存儲風險 43
2.5.6 E4X帶來的混亂世界 48
2.5.7 JavaScript函數劫持 49
2.6 一個僞裝齣來的世界——CSS 51
2.6.1 CSS容錯性 51
2.6.2 樣式僞裝 52
2.6.3 CSS僞類 52
2.6.4 CSS3的屬性選擇符 53
2.7 另一個幽靈——ActionScript 55
2.7.1 Flash安全沙箱 55
2.7.2 HTML嵌入Flash的安全相關配置 59
2.7.3 跨站Flash 61
2.7.4 參數傳遞 64
2.7.5 Flash裏的內嵌HTML 65
2.7.6 與JavaScript通信 67
2.7.7 網絡通信 71
2.7.8 其他安全問題 71
第3章 前端黑客之XSS 72
3.1 XSS概述 73
3.1.1 “跨站腳本”重要的是腳本 73
3.1.2 一個小例子 74
3.2 XSS類型 76
3.2.1 反射型XSS 76
3.2.2 存儲型XSS 77
3.2.3 DOM XSS 78
3.3 哪裏可以齣現XSS攻擊 80
3.4 有何危害 81
第4章 前端黑客之CSRF 83
4.1 CSRF概述 84
4.1.1 跨站點的請求 84
4.1.2 請求是僞造的 84
4.1.3 一個場景 84
4.2 CSRF類型 89
4.2.1 HTML CSRF攻擊 89
4.2.2 JSON HiJacking攻擊 90
4.2.3 Flash CSRF攻擊 94
4.3 有何危害 96
第5章 前端黑客之界麵操作劫持 97
5.1 界麵操作劫持概述 97
5.1.1 點擊劫持(Clickjacking) 98
5.1.2 拖放劫持(Drag&Dropjacking) 98
5.1.3 觸屏劫持(Tapjacking) 99
5.2 界麵操作劫持技術原理分析 99
5.2.1 透明層+iframe 99
5.2.2 點擊劫持技術的實現 100
5.2.3 拖放劫持技術的實現 101
5.2.4 觸屏劫持技術的實現 103
5.3 界麵操作劫持實例 106
5.3.1 點擊劫持實例 106
5.3.2 拖放劫持實例 111
5.3.3 觸屏劫持實例 119
5.4 有何危害 121
第6章 漏洞挖掘 123
6.1 普通XSS漏洞自動化挖掘思路 124
6.1.1 URL上的玄機 125
6.1.2 HTML中的玄機 127
6.1.3 請求中的玄機 134
6.1.4 關於存儲型XSS挖掘 135
6.2 神奇的DOM渲染 135
6.2.1 HTML與JavaScript自解碼機製 136
6.2.2 具備HtmlEncode功能的標簽 140
6.2.3 URL編碼差異 142
6.2.4 DOM修正式渲染 145
6.2.5 一種DOM fuzzing技巧 146
6.3 DOM XSS挖掘 150
6.3.1 靜態方法 150
6.3.2 動態方法 151
6.4 Flash XSS挖掘 153
6.4.1 XSF挖掘思路 153
6.4.2 Google Flash XSS挖掘 156
6.5 字符集缺陷導緻的XSS 159
6.5.1 寬字節編碼帶來的安全問題 160
6.5.2 UTF-7問題 161
6.5.3 瀏覽器處理字符集編碼
BUG帶來的安全問題 165
6.6 繞過瀏覽器XSS Filter 165
6.6.1 響應頭CRLF注入繞過 165
6.6.2 針對同域的白名單 166
6.6.3 場景依賴性高的繞過 167
6.7 混淆的代碼 169
6.7.1 瀏覽器的進製常識 169
6.7.2 瀏覽器的編碼常識 175
6.7.3 HTML中的代碼注入技巧 177
6.7.4 CSS中的代碼注入技巧 190
6.7.5 JavaScript中的代碼注入技巧 196
6.7.6 突破URL過濾 201
6.7.7 更多經典的混淆CheckList 202
6.8 其他案例分享——Gmail Cookie XSS 204
第7章 漏洞利用 206
7.1 滲透前的準備 206
7.2 偷取隱私數據 208
7.2.1 XSS探針:xssprobe 208
7.2.2 Referer惹的禍 214
7.2.3 瀏覽器記住的明文密碼 216
7.2.4 鍵盤記錄器 219
7.2.5 偷取黑客隱私的一個小技巧 222
7.3 內網滲透技術 223
7.3.1 獲取內網IP 223
7.3.2 獲取內網IP端口 224
7.3.3 獲取內網主機存活狀態 225
7.3.4 開啓路由器的遠程訪問能力 226
7.3.5 內網脆弱的Web應用控製 227
7.4 基於CSRF的攻擊技術 228
7.5 瀏覽器劫持技術 230
7.6 一些跨域操作技術 232
7.6.1 IE res:協議跨域 232
7.6.2 CSS String Injection跨域 233
7.6.3 瀏覽器特權區域風險 235
7.6.4 瀏覽器擴展風險 237
7.6.5 跨子域:document.domain技巧 240
7.6.6 更多經典的跨域索引 245
7.7 XSS Proxy技術 246
7.7.1 瀏覽器<script>請求 247
7.7.2 瀏覽器跨域AJAX請求 248
7.7.3 服務端WebSocket推送指令 249
7.7.4 postMessage方式推送指令 251
7.8 真實案例剖析 254
7.8.1 高級釣魚攻擊之百度空間登錄DIV層釣魚 254
7.8.2 高級釣魚攻擊之Gmail正常服務釣魚 261
7.8.3 人人網跨子域盜取MSN號 265
7.8.4 跨站獲取更高權限 267
7.8.5 大規模XSS攻擊思想 275
7.9 關於XSS利用框架 276
第8章 HTML5安全 277
8.1 新標簽和新屬性繞過黑名單策略 278
8.1.1 跨站中的黑名單策略 278
8.1.2 新元素突破黑名單策略 280
8.2 History API中的新方法 282
8.2.1 pushState()和replaceState() 282
8.2.2 短地址+History新方法=完美隱藏URL惡意代碼 283
8.2.3 僞造曆史記錄 284
8.3 HTML5下的僵屍網絡 285
8.3.1 Web Worker的使用 286
8.3.2 CORS嚮任意網站發送跨域請求 287
8.3.3 一個HTML5僵屍網絡實例 287
8.4 地理定位暴露你的位置 290
8.4.1 隱私保護機製 290
8.4.2 通過XSS盜取地理位置 292
第9章 Web蠕蟲 293
9.1 Web蠕蟲思想 294
9.2 XSS蠕蟲 295
9.2.1 原理+一個故事 295
9.2.2 危害性 297
9.2.3 SNS社區XSS蠕蟲 300
9.2.4 簡約且原生態的蠕蟲 304
9.2.5 蠕蟲需要追求原生態 305
9.3 CSRF蠕蟲 307
9.3.1 關於原理和危害性 307
9.3.2 譯言CSRF蠕蟲 308
9.3.3 飯否CSRF蠕蟲——邪惡的Flash遊戲 314
9.3.4 CSRF蠕蟲存在的可能性分析 320
9.4 ClickJacking蠕蟲 324
9.4.1 ClickJacking蠕蟲的由來 325
9.4.2 ClickJacking蠕蟲技術原理分析 325
9.4.3 Facebook的LikeJacking蠕蟲 327
9.4.4 GoogleReader的ShareJacking蠕蟲 327
9.4.5 ClickJacking蠕蟲爆發的可能性 335
第10章 關於防禦 336
10.1 瀏覽器廠商的防禦 336
10.1.1 HTTP響應的X-頭部 337
10.1.2 遲到的CSP策略 338
10.2 Web廠商的防禦 341
10.2.1 域分離 341
10.2.2 安全傳輸 342
10.2.3 安全的Cookie 343
10.2.4 優秀的驗證碼 343
10.2.5 慎防第三方內容 344
10.2.6 XSS防禦方案 345
10.2.7 CSRF防禦方案 348
10.2.8 界麵操作劫持防禦 353
10.3 用戶的防禦 357
10.4 邪惡的SNS社區 359
· · · · · · (
收起)