本書旨在打造一本W(wǎng)eb API安全的實用指南,全面介紹Web API的攻擊方法和防御策略。
本書分為4個部分,共16章。第一部分從API滲透測試的基礎理論入手,探討Web 應用程序的基礎知識、Web API攻防的基本原理和常見的API漏洞。第二部分帶領讀者搭建自己的API測試實驗室,結(jié)合2個實驗案例,指導讀者找到脆弱的API目標。第三部分通過偵察、端點分析、攻擊身份驗證、模糊測試、利用授權漏洞、批量分配、注入這7章,幫助讀者了解API攻擊的過程和方法,結(jié)合7個實驗案例,幫助讀者進行API測試。第四部分介紹3個真實的API攻防案例,旨在針對性地找到提高API安全性的具體策略和方案。
本書可為初學者提供API及其漏洞的全面介紹,也可為安全從業(yè)人員提供高級工具和技術見解。
1. Amazon熱銷且長銷圖書:4.7星好評,位于電子書榜單TOP 7,被讀者稱為漏洞獵人和 API 開發(fā)人員一定要讀的書。
2. API安全行家之作:作者Corey Ball是API攻防方向的行家,是APIsec大學的創(chuàng)始人,他是API安全領域公認的專家之一。
3. 免費配套課程:本書配套課程API滲透測試在APIsec大學中收獲眾多好評,一年半時間內(nèi)收獲9.3萬播放量。
4. API全流程指南:市面上少有的從基礎理論到環(huán)境搭建,再到測試工具、流程介紹,以及實戰(zhàn)應用的全流程API攻防圖書,適合網(wǎng)絡安全的初學者快速上手。
科里·鮑爾(Corey Ball)是 Moss Adams 的網(wǎng)絡安全咨詢經(jīng)理,也是滲透測試服務部門的負責人。他在信息技術和網(wǎng)絡安全領域積累了超過 10 年的豐富經(jīng)驗,涉及多個行業(yè),包括航空航天、農(nóng)業(yè)、能源、金融科技、政府服務以及醫(yī)療保健等。他曾在薩克拉門托州立大學取得英語與哲學雙學士學位,他還持有 OSCP、CCISO、CEH、CISA、CISM、CRISC 和 CGEIT 等專業(yè)資格認證。
目 錄
第 一部分 Web API安全的原理
第0章 為安全測試做準備 3
0.1 獲得授權 3
0.2 API測試的威脅建模 4
0.3 應該測試哪些API特性 6
0.3.1 API認證測試 6
0.3.2 Web應用程序防火墻 7
0.3.3 移動應用測試 7
0.3.4 審計API文檔 8
0.3.5 速率限制測試 8
0.4 限制和排除 9
0.4.1 安全測試云API 10
0.4.2 DoS測試 11
0.5 報告和修復測試 11
0.6 關于漏洞賞金范圍的說明 12
0.7 小結(jié) 13
第 1章 Web應用程序是如何運行的 14
1.1 Web應用程序基礎 14
1.1.1 URL 15
1.1.2 HTTP請求 16
1.1.3 HTTP響應 17
1.1.4 HTTP狀態(tài)碼 19
1.1.5 HTTP請求方法 20
1.1.6 有狀態(tài)和無狀態(tài)的HTTP 21
1.2 Web服務器數(shù)據(jù)庫 23
1.2.1 SQL 23
1.2.2 NoSQL 25
1.3 API如何融入整體架構 25
1.4 小結(jié) 26
第 2章 Web API的原子論 27
2.1 Web API的工作原理 27
2.2 Web API的標準類型 30
2.2.1 RESTful API 30
2.2.2 GraphQL 35
2.3 REST API規(guī)范 39
2.4 API數(shù)據(jù)交換格式 40
2.4.1 JSON 40
2.4.2 XML 43
2.4.3 YAML 44
2.5 API身份驗證 45
2.5.1 基本身份驗證 46
2.5.2 API密鑰 46
2.5.3 JSON Web Token 48
2.5.4 HMAC 49
2.5.5 OAuth 2.0 50
2.5.6 無身份驗證 52
2.6 實操API:探索Twitter的API 52
2.7 小結(jié) 55
第3章 常見的API漏洞 56
3.1 信息泄露 56
3.2 對象級授權缺陷 57
3.3 用戶身份驗證缺陷 60
3.4 過度數(shù)據(jù)暴露 61
3.5 資源缺乏和速率限制 62
3.6 功能級授權缺陷 63
3.7 批量分配 64
3.8 安全配置錯誤 65
3.9 注入 68
3.10 不當?shù)馁Y產(chǎn)管理 69
3.11 業(yè)務邏輯漏洞 70
3.12 小結(jié) 72
第二部分 搭建API測試實驗室
第4章 API黑客系統(tǒng) 75
4.1 Kali Linux 75
4.2 使用DevTools分析Web應用程序 76
4.3 使用Burp Suite捕獲并修改請求 78
4.3.1 設置FoxyProxy 79
4.3.2 添加Burp Suite證書 80
4.3.3 Burp Suite導航 82
4.3.4 攔截流量 83
4.3.5 使用Intruder更改請求 85
4.4 在Postman中編寫API請求 89
4.4.1 請求構建器 91
4.4.2 環(huán)境變量 93
4.4.3 集合 95
4.4.4 集合運行器 98
4.4.5 代碼片段 98
4.4.6 測試面板 99
4.5 配置Postman 100
4.6 補充工具 101
4.6.1 使用OWASP Amass進行偵察 102
4.6.2 使用Kiterunner發(fā)現(xiàn)API端點 103
4.6.3 使用nikto掃描漏洞 105
4.6.4 使用OWASP ZAP掃描漏洞 106
4.6.5 使用Wfuzz進行模糊測試 106
4.6.6 使用Arjun發(fā)現(xiàn)HTTP參數(shù) 108
4.7 小結(jié) 109
實驗1:在REST API中枚舉用戶賬戶 110
第5章 設定有API漏洞的目標 114
5.1 創(chuàng)建一個Linux主機 114
5.2 安裝Docker和Docker Compose 115
5.3 安裝易受攻擊的應用程序 115
5.3.1 completely ridiculous API(crAPI) 116
5.3.2 OWASP DevSlop的Pixi 117
5.3.3 OWASP Juice Shop 118
5.3.4 DVGA 119
5.4 添加其他易受攻擊的應用 119
5.5 在TryHackMe和HackTheBox上測試API 120
5.6 小結(jié) 121
實驗2:查找易受攻擊的API 122
第三部分 攻擊API
第6章 偵察 129
6.1 被動偵察 129
6.1.1 被動偵察流程 130
6.1.2 Google Hacking 131
6.1.3 ProgrammableWeb的API搜索目錄 133
6.1.4 Shodan 135
6.1.5 OWASP Amass 137
6.1.6 GitHub上的信息泄露 139
6.2 主動偵察 142
6.2.1 主動偵察過程 142
6.2.2 使用Nmap進行基線掃描 145
6.2.3 在Robots.txt文件中查找隱藏路徑 145
6.2.4 使用Chrome DevTools查找敏感信息 146
6.2.5 使用Burp Suite驗證API 149
6.2.6 使用OWASP ZAP爬取URI 150
6.2.7 使用Gobuster對URI進行暴力破解 152
6.2.8 使用Kiterunner發(fā)現(xiàn)API內(nèi)容 154
6.3 小結(jié) 156
實驗3:為黑盒測試執(zhí)行主動偵察 157
第7章 端點分析 162
7.1 尋找請求信息 162
7.1.1 在文檔中查找信息 163
7.1.2 導入API規(guī)范 166
7.1.3 逆向工程API 168
7.2 在Postman中添加API身份驗證要求 171
7.3 分析功能 172
7.3.1 測試預期用途 173
7.3.2 執(zhí)行特權操作 175
7.3.3 分析API響應 176
7.4 發(fā)現(xiàn)信息泄露 176
7.5 發(fā)現(xiàn)安全配置錯誤 177
7.5.1 冗長的錯誤消息 177
7.5.2 不良的傳輸加密 178
7.5.3 問題配置 178
7.6 發(fā)現(xiàn)過度數(shù)據(jù)暴露 179
7.7 發(fā)現(xiàn)業(yè)務邏輯漏洞 180
7.8 小結(jié) 181
實驗4:構建crAPI集合并發(fā)現(xiàn)過度的數(shù)據(jù)暴露 181
第8章 攻擊身份驗證 186
8.1 經(jīng)典身份驗證攻擊 186
8.1.1 暴力破解攻擊 187
8.1.2 密碼重置和多因素身份驗證暴力破解攻擊 188
8.1.3 密碼噴灑 190
8.1.4 將Base64身份驗證包含在暴力破解攻擊中 192
8.2 偽造令牌 194
8.2.1 手動加載分析 194
8.2.2 實時令牌捕獲分析 196
8.2.3 暴力破解可預測的令牌 197
8.3 JSON Web Token濫用 199
8.3.1 識別和分析JWT 200
8.3.2 無算法攻擊 203
8.3.3 算法切換攻擊 203
8.3.4 JWT破解攻擊 205
8.4 小結(jié) 205
實驗5:破解crAPI JWT簽名 206
第9章 模糊測試 209
9.1 有效的模糊測試 209
9.1.1 選擇模糊測試的有效負載 211
9.1.2 檢測異!213
9.2 廣泛模糊測試與深入模糊測試 215
9.2.1 使用Postman進行廣泛模糊測試 215
9.2.2 使用Burp Suite進行深入模糊測試 218
9.2.3 使用Wfuzz進行深入模糊測試 221
9.2.4 對資產(chǎn)管理不當進行廣泛模糊測試 223
9.3 使用Wfuzz測試請求方法 225
9.4 進行深入的模糊測試以繞過輸入過濾 226
9.5 用于目錄遍歷的模糊測試 227
9.6 小結(jié) 228
實驗6:對不當?shù)馁Y產(chǎn)管理漏洞進行模糊測試 228
第 10章 利用授權漏洞 232
10.1 發(fā)現(xiàn)BOLA 232
10.1.1 定位資源ID 233
10.1.2 用于BOLA的A-B測試 234
10.1.3 BOLA側(cè)信道攻擊 235
10.2 發(fā)現(xiàn)BFLA 236
10.2.1 用于BFLA的A-B-A測試 237
10.2.2 在Postman中測試BFLA 237
10.3 授權漏洞挖掘技巧 240
10.3.1 Postman的集合變量 240
10.3.2 Burp Suite的匹配與替換 240
10.4 小結(jié) 241
實驗7:查找另一個用戶的車輛位置 242
第 11章 批量分配 247
11.1 查找批量分配目標 247
11.1.1 賬戶注冊 247
11.1.2 未經(jīng)授權訪問組織 248
11.2 查找批量分配變量 249
11.2.1 在文檔中找到變量 249
11.2.2 對未知變量進行模糊測試 250
11.2.3 盲批量賦值攻擊 251
11.3 使用Arjun和Burp Suite Intruder自動化批量分配攻擊 252
11.4 結(jié)合使用BFLA和批量分配 253
11.5 小結(jié) 254
實驗8:更改在線商店中商品的價格 255
第 12章 注入 259
12.1 發(fā)現(xiàn)注入漏洞 259
12.2 XSS攻擊 260
12.3 XAS攻擊 262
12.4 SQL注入 264
12.4.1 手動提交元字符 265
12.4.2 SQLmap 266
12.5 NoSQL注入 268
12.6 操作系統(tǒng)命令注入 270
12.7 小結(jié) 272
實驗9:使用NoSQL注入偽造優(yōu)惠券 272
第四部分 真實世界的API攻擊
第 13章 應用規(guī)避技術和速率限制 測試 279
13.1 規(guī)避API安全控制 279
13.1.1 安全控制的工作原理 279
13.1.2 API安全控制檢測 281
13.1.3 使用一次性賬戶 282
13.1.4 規(guī)避技術 282
13.1.5 使用Burp Suite自動繞過 285
13.1.6 使用Wfuzz自動繞過 286
13.2 測試速率限制 288
13.2.1 關于寬松速率限制的說明 289
13.2.2 路徑繞過 291
13.2.3 源標頭欺騙 292
13.2.4 在Burp Suite中輪換IP地址 293
13.3 小結(jié) 297
第 14章 攻擊GraphQL 298
14.1 GraphQL請求和集成開發(fā)環(huán)境 298
14.2 主動偵察 300
14.2.1 掃描 300
14.2.2 在瀏覽器中查看DVGA 302
14.2.3 使用DevTools 302
14.3 逆向工程GraphQL API 304
14.3.1 目錄暴力破解以獲取GraphQL端點 304
14.3.2 Cookie篡改以啟用GraphiQL IDE 306
14.3.3 逆向工程GraphQL請求 307
14.3.4 使用內(nèi)省逆向工程GraphQL集合 309
14.4 GraphQL API分析 311
14.4.1 使用GraphiQL Documentation Explorer編寫請求 311
14.4.2 使用InQL Burp擴展 313
14.5 用于命令注入的模糊測試 316
14.6 小結(jié) 321
第 15章 數(shù)據(jù)泄露和漏洞賞金 322
15.1 數(shù)據(jù)泄露 322
15.1.1 Peloton 323
15.1.2 USPS通知可見性API 324
15.1.3 T-Mobile API泄露 326
15.2 漏洞賞金 328
15.2.1 優(yōu)質(zhì)API密鑰的價格 328
15.2.2 私有API授權問題 329
15.2.3 星巴克:從未發(fā)生的數(shù)據(jù)泄露 331
15.2.4 Instagram的GraphQL BOLA 334
15.3 小結(jié) 336
附錄 API黑客攻擊檢查清單 337
后記 340