黑客攻防技術寶典(第2版)

黑客攻防技術寶典(第2版)

《黑客攻防技術寶典(第2版)》是2012年人民郵電出版社出版的圖書,作者是英DafyddStuttard,英MarcusPinto。

基本介紹

  • 作者:英 Dafydd Stuttard                       /            英 Marcus Pinto
  • 譯者:石華耀                       /            傅志紅
  • ISBN:9787115283924
  • 頁數:626
  • 定價:99.00元
  • 出版社:人民郵電出版社
  • 出版時間:2012-7
  • 裝幀:平裝
  • 副標題:Web實戰篇(第2版)
  • 叢書:  黑客攻防技術寶典
內容介紹,作者介紹,作品目錄,

內容介紹

內容簡介:
Web套用無處不在,安全隱患如影隨形。承載著豐富功能與用途的Web應用程式中布滿了各種漏洞,攻擊者能夠利用這些漏洞盜取用戶資料,實施詐欺,破壞其他系統等。近年來,一些公司的網路系統頻頻遭受攻擊,導致用戶信息泄露,造成不良影響。因此,如何確保Web應用程式的安全,已成為擺在人們眼前亟待解決的問題。
本書是Web安全領域專家的經驗結晶,系統闡述了如何針對Web應用程式展開攻擊與反攻擊,深入剖析了攻擊時所使用的技巧、步驟和工具,條理清晰,內容詳盡。第2版全面升級,涵蓋了最新的攻擊技巧與應對措施,此外,書中還列出了幾百個“漏洞實驗室”,以幫助讀者對所學內容進行鞏固和實戰演習。

作者介紹

作者簡介:
Dafydd Stuttard 世界知名安全顧問、作家、軟體開發人士。牛津大學博士,MDSec公司聯合創始人,尤其擅長Web應用程式和編譯軟體的滲透測試。Dafydd以網名PortSwigger蜚聲安全界,是眾所周知的Web應用程式集成攻擊平台Burp Suite的開發者。
Marcus Pinto 資深滲透測試專家,劍橋大學碩士,MDSec公司聯合創始人。Marcus為全球金融、政府、電信、博彩、零售等行業頂尖組織和機構提供Web應用程式滲透測試和安全防禦的諮詢與培訓。

作品目錄

目 錄
第1章  Web應用程式安全與風險 1
1.1  Web應用程式的發展歷程 1
1.1.1  Web應用程式的常見功能 3
1.1.2  Web應用程式的優點 4
1.2  Web應用程式安全 4
1.2.1  “本站點是安全的” 5
1.2.2  核心安全問題:用戶可提交任意輸入 6
1.2.3  關鍵問題因素 7
1.2.4  新的安全邊界 8
1.2.5  Web應用程式安全的未來 10
1.3  小結 10
第2章  核心防禦機制 12
2.1  處理用戶訪問 12
2.1.1  身份驗證 13
2.1.2  會話管理 13
2.1.3  訪問控制 14
2.2  處理用戶輸入 15
2.2.1  輸入的多樣性 15
2.2.2  輸入處理方法 16
2.2.3  邊界確認 18
2.2.4  多步確認與規範化 20
2.3  處理攻擊者 21
2.3.1  處理錯誤 21
2.3.2  維護審計日誌 22
2.3.3  向管理員發出警報 23
2.3.4  應對攻擊 24
2.4  管理應用程式 25
2.5  小結 26
2.6  問題 26
第3章  Web應用程式技術 27
3.1  HTTP 27
3.1.1  HTTP請求 27
3.1.2  HTTP回響 28
3.1.3  HTTP方法 29
3.1.4  URL 30
3.1.5  REST 31
3.1.6  HTTP訊息頭 31
3.1.7  cookie 33
3.1.8  狀態碼 33
3.1.9  HTTPS 34
3.1.10  HTTP代理 35
3.1.11  HTTP身份驗證 35
3.2  Web功能 36
3.2.1  伺服器端功能 36
3.2.2  客戶端功能 40
3.2.3  狀態與會話 46
3.3  編碼方案 47
3.3.1  URL編碼 47
3.3.2  Unicode編碼 48
3.3.3  HTML編碼 48
3.3.4  Base64編碼 49
3.3.5  十六進制編碼 49
3.3.6  遠程和序列化框架 49
3.4  下一步 50
3.5  問題 50
第4章  解析應用程式 51
4.1  枚舉內容與功能 51
4.1.1  Web抓取 51
4.1.2  用戶指定的抓取 54
4.1.3  發現隱藏的內容 56
4.1.4  應用程式頁面與功能路徑 67
4.1.5  發現隱藏的參數 69
4.2  分析應用程式 69
4.2.1  確定用戶輸入入口點 70
4.2.2  確定伺服器端技術 72
4.2.3  確定伺服器端功能 76
4.2.4  解析受攻擊面 79
4.2.5  解析Extreme Internet Shopping應用程式 80
4.3  小結 81
4.4  問題 82
第5章  避開客戶端控制項 83
5.1  通過客戶端傳送數據 83
5.1.1  隱藏表單欄位 84
5.1.2  HTTP cookie 86
5.1.3  URL參數 86
5.1.4  Referer訊息頭 86
5.1.5  模糊數據 88
5.1.6  ASP.NET ViewState 89
5.2  收集用戶數據:HTML表單 91
5.2.1  長度限制 91
5.2.2  基於腳本的確認 93
5.2.3  禁用的元素 94
5.3  收集用戶數據:瀏覽器擴展 95
5.3.1  常見的瀏覽器擴展技術 96
5.3.2  攻擊瀏覽器擴展的方法 97
5.3.3  攔截瀏覽器擴展的流量 97
5.3.4  反編譯瀏覽器擴展 100
5.3.5  附加調試器 109
5.3.6  本地客戶端組件 111
5.4  安全處理客戶端數據 112
5.4.1  通過客戶端傳送數據 112
5.4.2  確認客戶端生成的數據 112
5.4.3  日誌與警報 113
5.5  小結 114
5.6  問題 114
第6章  攻擊驗證機制 115
6.1  驗證技術 115
6.2  驗證機制設計缺陷 116
6.2.1  密碼保密性不強 116
6.2.2  蠻力攻擊登錄 117
6.2.3  詳細的失敗訊息 120
6.2.4  證書傳輸易受攻擊 122
6.2.5  密碼修改功能 124
6.2.6  忘記密碼功能 125
6.2.7  “記住我”功能 127
6.2.8  用戶偽裝功能 129
6.2.9  證書確認不完善 131
6.2.10  非唯一性用戶名 131
6.2.11  可預測的用戶名 132
6.2.12  可預測的初始密碼 133
6.2.13  證書分配不安全 133
6.3  驗證機制執行缺陷 134
6.3.1  故障開放登錄機制 134
6.3.2  多階段登錄機制中的缺陷 135
6.3.3  不安全的證書存儲 138
6.4  保障驗證機制的安全 139
6.4.1  使用可靠的證書 140
6.4.2  安全處理證書 140
6.4.3  正確確認證書 141
6.4.4  防止信息泄露 142
6.4.5  防止蠻力攻擊 143
6.4.6  防止濫用密碼修改功能 144
6.4.7  防止濫用賬戶恢復功能 145
6.4.8  日誌、監控與通知 146
6.5  小結 146
6.6  問題 147
第7章  攻擊會話管理 148
7.1  狀態要求 148
7.2  會話令牌生成過程中的薄弱環節 151
7.2.1  令牌有一定含義 152
7.2.2  令牌可預測 153
7.2.3  加密令牌 162
7.3  會話令牌處理中的薄弱環節 170
7.3.1  在網路上泄露令牌 170
7.3.2  在日誌中泄露令牌 173
7.3.3  令牌—會話映射易受攻擊 175
7.3.4  會話終止易受攻擊 176
7.3.5  客戶端暴露在令牌劫持風險之中 177
7.3.6  寬泛的cookie範圍 178
7.4  保障會話管理的安全 180
7.4.1  生成強大的令牌 181
7.4.2  在整個生命周期保障令牌的安全 182
7.4.3  日誌、監控與警報 184
7.5  小結 185
7.6  問題 185
第8章  攻擊訪問控制 187
8.1  常見漏洞 187
8.1.1  完全不受保護的功能 188
8.1.2  基於標識符的功能 190
8.1.3  多階段功能 191
8.1.4  靜態檔案 191
8.1.5  平台配置錯誤 192
8.1.6  訪問控制方法不安全 192
8.2  攻擊訪問控制 193
8.2.1  使用不同用戶賬戶進行測試 194
8.2.2  測試多階段過程 197
8.2.3  通過有限訪問許可權進行測試 199
8.2.4  測試“直接訪問方法” 201
8.2.5  測試對靜態資源的控制 202
8.2.6  測試對HTTP方法實施的限制 202
8.3  保障訪問控制的安全 203
8.4  小結 206
8.5  問題 207
第9章  攻擊數據存儲區 208
9.1  注入解釋型語言 208
9.2  注入SQL 210
9.2.1  利用一個基本的漏洞 211
9.2.2  注入不同的語句類型 213
9.2.3  查明SQL注入漏洞 216
9.2.4  “指紋”識別資料庫 219
9.2.5  UNION操作符 220
9.2.6  提取有用的數據 224
9.2.7  使用UNION提取數據 224
9.2.8  避開過濾 226
9.2.9  二階SQL注入 227
9.2.10  高級利用 229
9.2.11  SQL注入之外:擴大資料庫攻擊範圍 236
9.2.12  使用SQL注入工具 238
9.2.13  SQL語法與錯誤參考 241
9.2.14  防止SQL注入 246
9.3  注入NoSQL 249
9.4  注入XPath 250
9.4.1  破壞應用程式邏輯 251
9.4.2  謹慎XPath注入 252
9.4.3  盲目XPath注入 252
9.4.4  查找XPath注入漏洞 253
9.4.5  防止XPath注入 254
9.5  注入LDAP 254
9.5.1  利用LDAP注入 255
9.5.2  查找LDAP注入漏洞 257
9.5.3  防止LDAP注入 258
9.6  小結 258
9.7  問題 258
第10章  測試後端組件 260
10.1  注入作業系統命令 260
10.1.1  例1:通過Perl注入 261
10.1.2  例2:通過ASP注入 262
10.1.3  通過動態執行注入 264
10.1.4  查找OS命令注入漏洞 264
10.1.5  查找動態執行漏洞 267
10.1.6  防止OS命令注入 268
10.1.7  防止腳本注入漏洞 268
10.2  操作檔案路徑 268
10.2.1  路徑遍歷漏洞 269
10.2.2  檔案包含漏洞 278
10.3  注入XML解釋器 279
10.3.1  注入XML外部實體 279
10.3.2  注入SOAP 281
10.3.3  查找並利用SOAP注入 283
10.3.4  防止SOAP注入 284
10.4  注入後端HTTP請求 284
10.4.1  伺服器端HTTP重定向 285
10.4.2  HTTP參數注入 287
10.5  注入電子郵件 290
10.5.1  操縱電子郵件標頭 290
10.5.2  SMTP命令注入 291
10.5.3  查找SMTP注入漏洞 292
10.5.4  防止SMTP注入 293
10.6  小結 294
10.7  問題 294
第11章  攻擊應用程式邏輯 296
11.1  邏輯缺陷的本質 296
11.2  現實中的邏輯缺陷 297
11.2.1  例1:徵求提示 297
11.2.2  例2:欺騙密碼修改功能 298
11.2.3  例3:直接結算 299
11.2.4  例4:修改保險單 300
11.2.5  例5:入侵銀行 302
11.2.6  例6:規避交易限制 303
11.2.7  例7:獲得大幅折扣 305
11.2.8  例8:避免轉義 305
11.2.9  例9:避開輸入確認 306
11.2.10  例10:濫用搜尋功能 308
11.2.11  例11:利用調試訊息 310
11.2.12  例12:與登錄機制競賽 311
11.3  避免邏輯缺陷 312
11.4  小結 313
11.5  問題 314
第12章  攻擊其他用戶 315
12.1  XSS的分類 316
12.1.1  反射型XSS漏洞 316
12.1.2  保存型XSS漏洞 320
12.1.3  基於DOM的XSS漏洞 322
12.2  進行中的XSS攻擊 323
12.2.1  真實XSS攻擊 323
12.2.2  XSS攻擊有效載荷 324
12.2.3  XSS攻擊的傳送機制 327
12.3  查找並利用XSS漏洞 329
12.3.1  查找並利用反射型XSS漏洞 331
12.3.2  查找並利用保存型XSS漏洞 352
12.3.3  查找並利用基於DOM的XSS漏洞 357
12.4  防止XSS攻擊 360
12.4.1  防止反射型與保存型XSS漏洞 360
12.4.2  防止基於DOM的XSS漏洞 364
12.5  小結 365
12.6  問題 365
第13章  攻擊用戶:其他技巧 366
13.1  誘使用戶執行操作 366
13.1.1  請求偽造 366
13.1.2  UI偽裝 374
13.2  跨域捕獲數據 377
13.2.1  通過注入HTML捕獲數據 377
13.2.2  通過注入CSS捕獲數據 378
13.2.3  JavaScript劫持 380
13.3  同源策略深入討論 384
13.3.1  同源策略與瀏覽器擴展 384
13.3.2  同源策略與HTML5 386
13.3.3  通過代理服務應用程式跨域 388
13.4  其他客戶端注入攻擊 389
13.4.1  HTTP訊息頭注入 389
13.4.2  cookie注入 393
13.4.3  開放式重定向漏洞 396
13.4.4  客戶端SQL注入 402
13.4.5  客戶端HTTP參數污染 402
13.5  本地隱私攻擊 403
13.5.1  持久性cookie 404
13.5.2  快取Web內容 404
13.5.3  瀏覽歷史記錄 405
13.5.4  自動完成 406
13.5.5  Flash本地共享對象 406
13.5.6  Silverlight獨立存儲 406
13.5.7  Internet Explorer userData 407
13.5.8  HTML5本地存儲機制 407
13.5.9  防止本地隱私攻擊 407
13.6  攻擊ActiveX控制項 408
13.6.1  查找ActiveX漏洞 409
13.6.2  防止ActiveX漏洞 410
13.7  攻擊瀏覽器 411
13.7.1  記錄鍵擊 411
13.7.2  竊取瀏覽器歷史記錄與搜尋查詢 412
13.7.3  枚舉當前使用的應用程式 412
13.7.4  連線埠掃描 412
13.7.5  攻擊其他網路主機 413
13.7.6  利用非HTTP服務 413
13.7.7  利用瀏覽器漏洞 414
13.7.8  DNS重新綁定 414
13.7.9  瀏覽器利用框架 415
13.7.10  中間人攻擊 416
13.8  小結 418
13.9  問題 418
第14章  定製攻擊自動化 419
14.1  套用定製自動化攻擊 419
14.2  枚舉有效的標識符 420
14.2.1  基本步驟 420
14.2.2  探測“觸點” 421
14.2.3  編寫攻擊腳本 422
14.2.4  JAttack 423
14.3  獲取有用的數據 428
14.4  常見漏洞模糊測試 431
14.5  整合全部功能:Burp Intruder 434
14.6  實施自動化的限制 442
14.6.1  會話處理機制 443
14.6.2  CAPTCHA控制項 448
14.7  小結 451
14.8  問題 451
第15章  利用信息泄露 453
15.1  利用錯誤訊息 453
15.1.1  錯誤訊息腳本 453
15.1.2  棧追蹤 454
15.1.3  詳盡的調試訊息 455
15.1.4  伺服器與資料庫訊息 456
15.1.5  使用公共信息 458
15.1.6  製造詳盡的錯誤訊息 459
15.2  收集公布的信息 460
15.3  使用推論 461
15.4  防止信息泄露 462
15.4.1  使用常規錯誤訊息 462
15.4.2  保護敏感信息 462
15.4.3  儘量減少客戶端信息泄露 463
15.5  小結 463
15.6  問題 463
第16章  攻擊本地編譯型應用程式 466
16.1  緩衝區溢出漏洞 467
16.1.1  棧溢出 467
16.1.2  堆溢出 467
16.1.3  “一位偏移”漏洞 468
16.1.4  查找緩衝區溢出漏洞 470
16.2  整數漏洞 472
16.2.1  整數溢出 472
16.2.2  符號錯誤 472
16.2.3  查找整數漏洞 473
16.3  格式化字元串漏洞 474
16.4  小結 475
16.5  問題 475
第17章  攻擊應用程式架構 477
17.1  分層架構 477
17.1.1  攻擊分層架構 478
17.1.2  保障分層架構的安全 482
17.2  共享主機與應用程式服務提供商 483
17.2.1  虛擬主機 484
17.2.2  共享的應用程式服務 484
17.2.3  攻擊共享環境 485
17.2.4  保障共享環境的安全 490
17.3  小結 491
17.4  問題 491
第18章  攻擊Web伺服器 493
18.1  Web伺服器配置缺陷 493
18.1.1  默認證書 493
18.1.2  默認內容 494
18.1.3  目錄列表 499
18.1.4  WebDAV方法 500
18.1.5  Web伺服器作為代理伺服器 503
18.1.6  虛擬主機配置缺陷 504
18.1.7  保障Web伺服器配置的安全 504
18.2  易受攻擊的伺服器軟體 505
18.2.1  應用程式框架缺陷 505
18.2.2  記憶體管理漏洞 507
18.2.3  編碼與規範化漏洞 508
18.2.4  查找Web伺服器漏洞 512
18.2.5  保障Web伺服器軟體的安全 513
18.3  Web應用程式防火牆 514
18.4  小結 515
18.5  問題 516
第19章  查找原始碼中的漏洞 517
19.1  代碼審查方法 517
19.1.1 “黑盒”測試與“白盒”
測試 517
19.1.2  代碼審查方法 518
19.2  常見漏洞簽名 519
19.2.1  跨站點腳本 519
19.2.2  SQL注入 520
19.2.3  路徑遍歷 520
19.2.4  任意重定向 521
19.2.5  OS命令注入 522
19.2.6  後門密碼 522
19.2.7  本地代碼漏洞 522
19.2.8  原始碼注釋 524
19.3  Java平台 524
19.3.1  確定用戶提交的數據 524
19.3.2  會話互動 525
19.3.3  潛在危險的API 526
19.3.4  配置Java環境 528
19.4  ASP.NET 529
19.4.1  確定用戶提交的數據 529
19.4.2  會話互動 530
19.4.3  潛在危險的API 531
19.4.4  配置ASP.NET環境 533
19.5  PHP 534
19.5.1  確定用戶提交的數據 534
19.5.2  會話互動 536
19.5.3  潛在危險的API 536
19.5.4  配置 PHP 環境 540
19.6  Perl 542
19.6.1  確定用戶提交的數據 542
19.6.2  會話互動 543
19.6.3  潛在危險的API 543
19.6.4  配置Perl環境 544
19.7  JavaScript 545
19.8  資料庫代碼組件 546
19.8.1  SQL注入 546
19.8.2  調用危險的函式 547
19.9  代碼瀏覽工具 547
19.10  小結 548
19.11  問題 548
第20章  Web應用程式黑客工具包 550
20.1  Web瀏覽器 550
20.1.1  Internet Explorer 550
20.1.2  Firefox 551
20.1.3  Chrome 552
20.2  集成測試套件 552
20.2.1  工作原理 553
20.2.2  測試工作流程 566
20.2.3  攔截代理伺服器替代工具 568
20.3  獨立漏洞掃描器 570
20.3.1  掃描器探測到的漏洞 570
20.3.2  掃描器的內在限制 571
20.3.3  掃描器面臨的技術挑戰 572
20.3.4  當前產品 574
20.3.5  使用漏洞掃描器 576
20.4  其他工具 577
20.4.1  Wikto/Nikto 577
20.4.2  Firebug 577
20.4.3  Hydra 578
20.4.4  定製腳本 578
20.5  小結 581
第21章  Web應用程式滲透測試方法論 582
21.1  解析應用程式內容 584
21.1.1  搜尋可見的內容 584
21.1.2  瀏覽公共資源 585
21.1.3  發現隱藏的內容 586
21.1.4  查找默認的內容 586
21.1.5  枚舉標識符指定的功能 586
21.1.6  調試參數 587
21.2  分析應用程式 587
21.2.1  確定功能 587
21.2.2  確定數據進入點 587
21.2.3  確定所使用的技術 588
21.2.4  解析受攻擊面 588
21.3  測試客戶端控制項 588
21.3.1  通過客戶端傳送數據 589
21.3.2  客戶端輸入控制項 589
21.3.3  測試瀏覽器擴展組件 590
21.4  測試驗證機制 592
21.4.1  了解驗證機制 592
21.4.2  測試密碼強度 593
21.4.3  測試用戶名枚舉 593
21.4.4  測試密碼猜測的適應性 593
21.4.5  測試賬戶恢復功能 594
21.4.6  測試“記住我”功能 594
21.4.7  測試偽裝功能 594
21.4.8  測試用戶名唯一性 595
21.4.9  測試證書的可預測性 595
21.4.10  檢測不安全的證書傳輸 595
21.4.11  檢測不安全的證書分配 596
21.4.12  測試不安全的存儲 596
21.4.13  測試邏輯缺陷 596
21.4.14  利用漏洞獲取未授權訪問 597
21.5  測試會話管理機制 598
21.5.1  了解會話管理機制 598
21.5.2  測試令牌的含義 599
21.5.3  測試令牌的可預測性 599
21.5.4  檢查不安全的令牌傳輸 600
21.5.5  檢查在日誌中泄露的令牌 600
21.5.6  測試令牌?會話映射 601
21.5.7  測試會話終止 601
21.5.8  測試會話固定 602
21.5.9  檢查 CSRF 602
21.5.10  檢查cookie範圍 602
21.6  測試訪問控制項 603
21.6.1  了解訪問控制要求 603
21.6.2  使用多個賬戶測試 604
21.6.3  使用有限的許可權測試 604
21.6.4  測試不安全的訪問控制方法 605
21.7  測試基於輸入的漏洞 605
21.7.1  模糊測試所有請求參數 605
21.7.2  測試 SQL 注入 607
21.7.3  測試 XSS和其他回響注入 609
21.7.4  測試 OS 命令注入 611
21.7.5  測試路徑遍歷 612
21.7.6  測試腳本注入 613
21.7.7  測試檔案包含 613
21.8  測試特殊功能方面的輸入漏洞 613
21.8.1  測試 SMTP 注入 614
21.8.2  測試本地代碼漏洞 614
21.8.3  測試SOAP注入 616
21.8.4  測試 LDAP 注入 616
21.8.5  測試XPath注入 617
21.8.6  測試後端請求注入 617
21.8.7  測試XXE注入 617
21.9  測試邏輯缺陷 618
21.9.1  確定關鍵的受攻擊面 618
21.9.2  測試多階段過程 618
21.9.3  測試不完整的輸入 619
21.9.4  測試信任邊界 619
21.9.5  測試交易邏輯 619
21.10  測試共享主機漏洞 620
21.10.1  測試共享基礎架構之間的隔離 620
21.10.2  測試使用ASP主機的應用程式之間的隔離 620
21.11  測試Web伺服器漏洞 621
21.11.1  測試默認證書 621
21.11.2  測試默認內容 621
21.11.3  測試危險的HTTP方法 622
21.11.4  測試代理功能 622
21.11.5  測試虛擬主機配置不當 622
21.11.6  測試Web伺服器軟體漏洞 622
21.11.7  測試Web應用程式防火牆 623
21.12  其他檢查 623
21.12.1  測試基於 DOM 的攻擊 624
21.12.2  測試本地隱私漏洞 624
21.12.3  測試脆弱的SSL加密算法 625
21.12.4  檢查同源策略配置 625
21.13  檢查信息泄露 625

相關詞條

熱門詞條

聯絡我們