Web安全測試技術詳解
李勇勝
商品描述
《Web安全測試技術詳解》基於開源安全測試工具SafeTool-51testing和靶機系統WebGoat,系統而深入地闡述了Web安全測試的核心知識、實用工具與關鍵技術。
《Web安全測試技術詳解》共12章,其內容涵蓋SQL註入、路徑遍歷、身份驗證、密碼重置、敏感信息泄露、XXE、訪問控制、XSS、反序列化、組件、請求偽造等主流漏洞的測試方法,並提供了相應的防禦策略。此外,本書還深入剖析了前端安全和CTF等Web攻防類型題目的解題思路及方法,為讀者提供了全面的Web安全測試指導。
《Web安全測試技術詳解》既可作為安全測試初學者的快速入門書,也可作為測試工程師的實戰指導書,還可作為相關培訓機構的教材。
作者簡介
李勇勝,資深軟件測試工程師,Gitee 平臺開源項目(安全測試工具和自動化測試工具)維護者,51Testing 軟件測試網簽約作者,擁有 10 餘年的軟件測試經驗,熱衷於分享自己的實踐經驗和測試技巧,曾多次在 51Testing 軟件測試網舉辦的講座上做專題分享,深受業界認可。
目錄大綱
第 1章 安全測試必備知識 1
1.1 安全測試概述 2
1.2 環境搭建 2
1.2.1 安裝安全測試工具運行環境 3
1.2.2 安裝Visual Studio Code 6
1.2.3 啟動服務器和安裝WebGoat系統 8
1.3 靶機系統 15
1.3.1 WebGoat系統 15
1.3.2 WebWolf系統 16
1.4 安全測試基礎知識 23
1.4.1 HTTP基礎知識 23
1.4.2 HTTP代理工具 29
1.4.3 開發者工具 30
1.4.4 信息安全三要素 34
1.4.5 加密與編碼基礎 37
第 2章 SQL註入漏洞 52
2.1 SQL註入漏洞基礎知識 52
2.1.1 SQL語句的類型與SQL註入漏洞的類型 53
2.1.2 SQL語句 53
2.1.3 DML語句 55
2.1.4 DDL語句 56
2.1.5 DCL語句 57
2.1.6 如何利用SQL註入漏洞 58
2.1.7 SQL註入的後果 59
2.1.8 影響SQL註入的因素 60
2.1.9 測試字符型SQL註入漏洞 62
2.1.10 測試數字型SQL註入漏洞 63
2.1.11 利用SQL註入漏洞獲取 敏感數據 68
2.1.12 註入SQL查詢鏈 70
2.1.13 SQL註入漏洞對系統可用性 的破壞 74
2.2 SQL註入漏洞進階 74
2.2.1 組合註入 74
2.2.2 組合註入技巧 76
2.2.3 SQL盲註 78
2.2.4 演示SQL盲註的方法 79
2.2.5 做筆試題 82
第3章 SQL註入防禦和路徑遍歷漏洞 85
3.1 SQL註入防禦 85
3.1.1 SQL註入的防禦方法 85
3.1.2 存儲過程 86
3.1.3 參數化查詢 87
3.1.4 編寫安全代碼 88
3.1.5 編寫可運行的安全代碼 90
3.1.6 參數化查詢的.NET方式 91
3.1.7 使用輸入驗證防禦SQL註入 漏洞 92
3.1.8 穿透薄弱的輸入驗證(一) 93
3.1.9 穿透薄弱的輸入驗證(二) 99
3.1.10 order by註入 101
3.1.11 如何利用order by註入 103
3.1.12 最小特權限制 109
3.2 路徑遍歷漏洞 109
3.2.1 路徑遍歷漏洞的原理 110
3.2.2 實現任意文件上傳 111
3.2.3 穿透薄弱的防禦規則 113
3.2.4 穿透頁面的過濾規則 114
3.2.5 獲取敏感文件 117
第4章 身份驗證 124
4.1 繞過身份驗證 124
4.1.1 身份驗證繞過的方式 124
4.1.2 雙因素身份認證中的密碼重置 127
4.2 會話令牌 132
4.2.1 JWT簡介 132
4.2.2 JWT的結構 133
4.2.3 如何使用JWT 136
4.2.4 JWT簽名算法的None漏洞 137
4.2.5 弱簽名密鑰的爆破攻擊 145
4.2.6 刷新令牌 150
4.2.7 刷新令牌存在的漏洞 154
4.2.8 越權操作漏洞 161
第5章 密碼重置和安全密碼 167
5.1 密碼重置 167
5.1.1 接收密碼重置郵件 168
5.1.2 確定已註冊的賬戶 173
5.1.3 安全問題存在的漏洞 173
5.1.4 如何設置安全問題 180
5.1.5 重置密碼鏈接存在的漏洞 181
5.1.6 如何設計安全的密碼重置功能 187
5.2 安全密碼 189
5.2.1 密碼標準 190
5.2.2 如何設置一個安全性足夠強的密碼 191
5.2.3 如何提高賬戶的安全性 191
5.2.4 如何安全地存儲密碼 192
第6章 敏感信息泄露和XXE漏洞 193
6.1 敏感信息泄露 193
6.1.1 為什麽需要對敏感數據進行加密 193
6.1.2 嗅探HTTP數據包的敏感內容 197
6.2 XXE漏洞 199
6.2.1 XML基礎知識 199
6.2.2 XML實體和XXE漏洞 202
6.2.3 XXE註入舉例 203
6.2.4 利用XXE漏洞顯示文件系統的目錄 205
6.2.5 針對測驗6.2的防禦方案 209
6.2.6 通過代碼審查找到XXE漏洞 210
6.2.7 REST框架的XXE漏洞 212
6.2.8 針對REST框架的XXE漏洞的解決方案 215
6.2.9 利用XXE漏洞實施的DoS 攻擊 216
6.2.10 XXE盲註 217
6.2.11 如何利用XXE盲註 218
6.2.12 如何防禦XXE漏洞 223
第7章 訪問控制漏洞 224
7.1 不安全的直接對象引用 224
7.1.1 什麽是IDOR 224
7.1.2 使用合法的用戶身份登錄 225
7.1.3 對比差異點 226
7.1.4 猜測和預測模式 228
7.1.5 測試不安全的對象引用 229
7.1.6 如何做到安全的對象引用 237
7.2 缺少功能級訪問控制 238
7.2.1 什麽是缺少功能級訪問控制 238
7.2.2 定位前端頁面隱藏功能 239
7.2.3 利用訪問控制漏洞收集用戶信息 244
第8章 XSS漏洞 249
8.1 XSS漏洞基礎知識 249
8.2 在前端執行JavaScript語句 254
8.3 可能存在XSS漏洞的位置 258
8.4 XSS漏洞的危害 258
8.5 反射型XSS漏洞的利用場景 259
8.6 測試反射型XSS漏洞 260
8.7 Self-XSS漏洞 269
8.8 基於DOM的XSS漏洞 270
8.9 識別基於DOM的XSS漏洞 271
8.10 測試基於DOM的XSS漏洞 274
8.11 涉及XSS漏洞的筆試題 278
第9章 反序列化漏洞 281
9.1 快速熟悉一門語言的思維框架 281
9.2 序列化和反序列化 285
9.3 如何利用Java反序列化漏洞 286
9.4 反序列化漏洞的調用鏈 296
9.5 如何利用反序列化漏洞 297
第 10章 組件漏洞 304
10.1 什麽是組件 304
10.2 開源組件的生態系統 305
10.3 OWASP對組件漏洞的描述 306
10.4 WebGoat系統的組件的安全性 309
10.5 前端組件jquery-ui的特定版本 310
10.6 軟件產品中引用開源組件需要註意的事項 311
10.7 如何生成物料清單 312
10.8 如何處理安全信息過載 318
10.9 如何處理許可證信息過載 318
10.10 開源組件在軟件架構中的 使用情況 319
10.11 開源組件的XStream漏洞 319
10.12 開源組件的安全現狀以及如何 應對安全風險 323
第 11章 請求偽造漏洞 325
11.1 CSRF漏洞 325
11.1.1 什麽是CSRF漏洞 325
11.1.2 GET型CSRF漏洞 326
11.1.3 測試GET型CSRF漏洞 326
11.1.4 測試POST型CSRF漏洞 332
11.1.5 如何防止CSRF漏洞 335
11.1.6 JSON型CSRF漏洞 336
11.1.7 測試JSON型CSRF漏洞 337
11.1.8 針對登錄請求的CSRF攻擊 341
11.1.9 CSRF漏洞的影響和解決
方案 346
11.2 SSRF漏洞 347
11.2.1 SSRF漏洞簡介 347
11.2.2 利用SSRF漏洞加載指定資源 350
11.2.3 利用SSRF漏洞偽造請求 354
11.2.4 SSRF漏洞的防禦方法 358
第 12章 前端安全和高階CTF挑戰 359
12.1 繞過前端限制 359
12.1.1 什麽是繞過前端限制 359
12.1.2 突破HTML代碼限制 360
12.1.3 突破JavaScript腳本限制 364
12.2 客戶端過濾 369
12.2.1 什麽是客戶端過濾 369
12.2.2 定位敏感信息 370
12.2.3 定位前端敏感功能 372
12.3 HTML篡改 376
12.3.1 什麽是HTML篡改 376
12.3.2 利用HTML篡改低價購物 377
12.3.3 如何防止HTML篡改 380
12.4 CTF題型之一 380
12.4.1 CTF題目規則 381
12.4.2 找回丟失的管理員登錄密碼 381
12.5 CTF題型之二 385
12.6 CTF題型之三 389
12.7 CTF題型之四 396