本書旨在打造一本W(wǎng)eb API安全的實(shí)用指南,全面介紹Web API的攻擊方法和防御策略。
本書分為4個(gè)部分,共16章。第一部分從API滲透測試的基礎(chǔ)理論入手,探討Web 應(yīng)用程序的基礎(chǔ)知識、Web API攻防的基本原理和常見的API漏洞。第二部分帶領(lǐng)讀者搭建自己的API測試實(shí)驗(yàn)室,結(jié)合2個(gè)實(shí)驗(yàn)案例,指導(dǎo)讀者找到脆弱的API目標(biāo)。第三部分通過偵察、端點(diǎn)分析、攻擊身份驗(yàn)證、模糊測試、利用授權(quán)漏洞、批量分配、注入這7章,幫助讀者了解API攻擊的過程和方法,結(jié)合7個(gè)實(shí)驗(yàn)案例,幫助讀者進(jìn)行API測試。第四部分介紹3個(gè)真實(shí)的API攻防案例,旨在針對性地找到提高API安全性的具體策略和方案。
本書可為初學(xué)者提供API及其漏洞的全面介紹,也可為安全從業(yè)人員提供高級工具和技術(shù)見解。
1. Amazon熱銷且長銷圖書:4.7星好評,位于電子書榜單TOP 7,被讀者稱為漏洞獵人和 API 開發(fā)人員一定要讀的書。
2. API安全行家之作:作者Corey Ball是API攻防方向的行家,是APIsec大學(xué)的創(chuàng)始人,他是API安全領(lǐng)域公認(rèn)的專家之一。
3. 免費(fèi)配套課程:本書配套課程API滲透測試在APIsec大學(xué)中收獲眾多好評,一年半時(shí)間內(nèi)收獲9.3萬播放量。
4. API全流程指南:市面上少有的從基礎(chǔ)理論到環(huán)境搭建,再到測試工具、流程介紹,以及實(shí)戰(zhàn)應(yīng)用的全流程API攻防圖書,適合網(wǎng)絡(luò)安全的初學(xué)者快速上手。
科里·鮑爾(Corey Ball)是 Moss Adams 的網(wǎng)絡(luò)安全咨詢經(jīng)理,也是滲透測試服務(wù)部門的負(fù)責(zé)人。他在信息技術(shù)和網(wǎng)絡(luò)安全領(lǐng)域積累了超過 10 年的豐富經(jīng)驗(yàn),涉及多個(gè)行業(yè),包括航空航天、農(nóng)業(yè)、能源、金融科技、政府服務(wù)以及醫(yī)療保健等。他曾在薩克拉門托州立大學(xué)取得英語與哲學(xué)雙學(xué)士學(xué)位,他還持有 OSCP、CCISO、CEH、CISA、CISM、CRISC 和 CGEIT 等專業(yè)資格認(rèn)證。
目 錄
第 一部分 Web API安全的原理
第0章 為安全測試做準(zhǔn)備 3
0.1 獲得授權(quán) 3
0.2 API測試的威脅建!4
0.3 應(yīng)該測試哪些API特性 6
0.3.1 API認(rèn)證測試 6
0.3.2 Web應(yīng)用程序防火墻 7
0.3.3 移動應(yīng)用測試 7
0.3.4 審計(jì)API文檔 8
0.3.5 速率限制測試 8
0.4 限制和排除 9
0.4.1 安全測試云API 10
0.4.2 DoS測試 11
0.5 報(bào)告和修復(fù)測試 11
0.6 關(guān)于漏洞賞金范圍的說明 12
0.7 小結(jié) 13
第 1章 Web應(yīng)用程序是如何運(yùn)行的 14
1.1 Web應(yīng)用程序基礎(chǔ) 14
1.1.1 URL 15
1.1.2 HTTP請求 16
1.1.3 HTTP響應(yīng) 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服務(wù)器數(shù)據(jù)庫 23
1.2.1 SQL 23
1.2.2 NoSQL 25
1.3 API如何融入整體架構(gòu) 25
1.4 小結(jié) 26
第 2章 Web API的原子論 27
2.1 Web API的工作原理 27
2.2 Web API的標(biāo)準(zhǔn)類型 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身份驗(yàn)證 45
2.5.1 基本身份驗(yàn)證 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 無身份驗(yàn)證 52
2.6 實(shí)操API:探索Twitter的API 52
2.7 小結(jié) 55
第3章 常見的API漏洞 56
3.1 信息泄露 56
3.2 對象級授權(quán)缺陷 57
3.3 用戶身份驗(yàn)證缺陷 60
3.4 過度數(shù)據(jù)暴露 61
3.5 資源缺乏和速率限制 62
3.6 功能級授權(quán)缺陷 63
3.7 批量分配 64
3.8 安全配置錯(cuò)誤 65
3.9 注入 68
3.10 不當(dāng)?shù)馁Y產(chǎn)管理 69
3.11 業(yè)務(wù)邏輯漏洞 70
3.12 小結(jié) 72
第二部分 搭建API測試實(shí)驗(yàn)室
第4章 API黑客系統(tǒng) 75
4.1 Kali Linux 75
4.2 使用DevTools分析Web應(yīng)用程序 76
4.3 使用Burp Suite捕獲并修改請求 78
4.3.1 設(shè)置FoxyProxy 79
4.3.2 添加Burp Suite證書 80
4.3.3 Burp Suite導(dǎo)航 82
4.3.4 攔截流量 83
4.3.5 使用Intruder更改請求 85
4.4 在Postman中編寫API請求 89
4.4.1 請求構(gòu)建器 91
4.4.2 環(huán)境變量 93
4.4.3 集合 95
4.4.4 集合運(yùn)行器 98
4.4.5 代碼片段 98
4.4.6 測試面板 99
4.5 配置Postman 100
4.6 補(bǔ)充工具 101
4.6.1 使用OWASP Amass進(jìn)行偵察 102
4.6.2 使用Kiterunner發(fā)現(xiàn)API端點(diǎn) 103
4.6.3 使用nikto掃描漏洞 105
4.6.4 使用OWASP ZAP掃描漏洞 106
4.6.5 使用Wfuzz進(jìn)行模糊測試 106
4.6.6 使用Arjun發(fā)現(xiàn)HTTP參數(shù) 108
4.7 小結(jié) 109
實(shí)驗(yàn)1:在REST API中枚舉用戶賬戶 110
第5章 設(shè)定有API漏洞的目標(biāo) 114
5.1 創(chuàng)建一個(gè)Linux主機(jī) 114
5.2 安裝Docker和Docker Compose 115
5.3 安裝易受攻擊的應(yīng)用程序 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 添加其他易受攻擊的應(yīng)用 119
5.5 在TryHackMe和HackTheBox上測試API 120
5.6 小結(jié) 121
實(shí)驗(yàn)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進(jìn)行基線掃描 145
6.2.3 在Robots.txt文件中查找隱藏路徑 145
6.2.4 使用Chrome DevTools查找敏感信息 146
6.2.5 使用Burp Suite驗(yàn)證API 149
6.2.6 使用OWASP ZAP爬取URI 150
6.2.7 使用Gobuster對URI進(jìn)行暴力破解 152
6.2.8 使用Kiterunner發(fā)現(xiàn)API內(nèi)容 154
6.3 小結(jié) 156
實(shí)驗(yàn)3:為黑盒測試執(zhí)行主動偵察 157
第7章 端點(diǎn)分析 162
7.1 尋找請求信息 162
7.1.1 在文檔中查找信息 163
7.1.2 導(dǎo)入API規(guī)范 166
7.1.3 逆向工程API 168
7.2 在Postman中添加API身份驗(yàn)證要求 171
7.3 分析功能 172
7.3.1 測試預(yù)期用途 173
7.3.2 執(zhí)行特權(quán)操作 175
7.3.3 分析API響應(yīng) 176
7.4 發(fā)現(xiàn)信息泄露 176
7.5 發(fā)現(xiàn)安全配置錯(cuò)誤 177
7.5.1 冗長的錯(cuò)誤消息 177
7.5.2 不良的傳輸加密 178
7.5.3 問題配置 178
7.6 發(fā)現(xiàn)過度數(shù)據(jù)暴露 179
7.7 發(fā)現(xiàn)業(yè)務(wù)邏輯漏洞 180
7.8 小結(jié) 181
實(shí)驗(yàn)4:構(gòu)建crAPI集合并發(fā)現(xiàn)過度的數(shù)據(jù)暴露 181
第8章 攻擊身份驗(yàn)證 186
8.1 經(jīng)典身份驗(yàn)證攻擊 186
8.1.1 暴力破解攻擊 187
8.1.2 密碼重置和多因素身份驗(yàn)證暴力破解攻擊 188
8.1.3 密碼噴灑 190
8.1.4 將Base64身份驗(yàn)證包含在暴力破解攻擊中 192
8.2 偽造令牌 194
8.2.1 手動加載分析 194
8.2.2 實(shí)時(shí)令牌捕獲分析 196
8.2.3 暴力破解可預(yù)測的令牌 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
實(shí)驗(yàn)5:破解crAPI JWT簽名 206
第9章 模糊測試 209
9.1 有效的模糊測試 209
9.1.1 選擇模糊測試的有效負(fù)載 211
9.1.2 檢測異!213
9.2 廣泛模糊測試與深入模糊測試 215
9.2.1 使用Postman進(jìn)行廣泛模糊測試 215
9.2.2 使用Burp Suite進(jìn)行深入模糊測試 218
9.2.3 使用Wfuzz進(jìn)行深入模糊測試 221
9.2.4 對資產(chǎn)管理不當(dāng)進(jìn)行廣泛模糊測試 223
9.3 使用Wfuzz測試請求方法 225
9.4 進(jìn)行深入的模糊測試以繞過輸入過濾 226
9.5 用于目錄遍歷的模糊測試 227
9.6 小結(jié) 228
實(shí)驗(yàn)6:對不當(dāng)?shù)馁Y產(chǎn)管理漏洞進(jìn)行模糊測試 228
第 10章 利用授權(quán)漏洞 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 授權(quán)漏洞挖掘技巧 240
10.3.1 Postman的集合變量 240
10.3.2 Burp Suite的匹配與替換 240
10.4 小結(jié) 241
實(shí)驗(yàn)7:查找另一個(gè)用戶的車輛位置 242
第 11章 批量分配 247
11.1 查找批量分配目標(biāo) 247
11.1.1 賬戶注冊 247
11.1.2 未經(jīng)授權(quán)訪問組織 248
11.2 查找批量分配變量 249
11.2.1 在文檔中找到變量 249
11.2.2 對未知變量進(jìn)行模糊測試 250
11.2.3 盲批量賦值攻擊 251
11.3 使用Arjun和Burp Suite Intruder自動化批量分配攻擊 252
11.4 結(jié)合使用BFLA和批量分配 253
11.5 小結(jié) 254
實(shí)驗(yàn)8:更改在線商店中商品的價(jià)格 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
實(shí)驗(yàn)9:使用NoSQL注入偽造優(yōu)惠券 272
第四部分 真實(shí)世界的API攻擊
第 13章 應(yīng)用規(guī)避技術(shù)和速率限制 測試 279
13.1 規(guī)避API安全控制 279
13.1.1 安全控制的工作原理 279
13.1.2 API安全控制檢測 281
13.1.3 使用一次性賬戶 282
13.1.4 規(guī)避技術(shù) 282
13.1.5 使用Burp Suite自動繞過 285
13.1.6 使用Wfuzz自動繞過 286
13.2 測試速率限制 288
13.2.1 關(guān)于寬松速率限制的說明 289
13.2.2 路徑繞過 291
13.2.3 源標(biāo)頭欺騙 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端點(diǎn) 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擴(kuò)展 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密鑰的價(jià)格 328
15.2.2 私有API授權(quán)問題 329
15.2.3 星巴克:從未發(fā)生的數(shù)據(jù)泄露 331
15.2.4 Instagram的GraphQL BOLA 334
15.3 小結(jié) 336
附錄 API黑客攻擊檢查清單 337
后記 340