本書(shū)旨在打造一本W(wǎng)eb API安全的實(shí)用指南,全面介紹Web API的攻擊方法和防御策略。
本書(shū)分為4個(gè)部分,共16章。第一部分從API滲透測(cè)試的基礎(chǔ)理論入手,探討Web 應(yīng)用程序的基礎(chǔ)知識(shí)、Web API攻防的基本原理和常見(jiàn)的API漏洞。第二部分帶領(lǐng)讀者搭建自己的API測(cè)試實(shí)驗(yàn)室,結(jié)合2個(gè)實(shí)驗(yàn)案例,指導(dǎo)讀者找到脆弱的API目標(biāo)。第三部分通過(guò)偵察、端點(diǎn)分析、攻擊身份驗(yàn)證、模糊測(cè)試、利用授權(quán)漏洞、批量分配、注入這7章,幫助讀者了解API攻擊的過(guò)程和方法,結(jié)合7個(gè)實(shí)驗(yàn)案例,幫助讀者進(jìn)行API測(cè)試。第四部分介紹3個(gè)真實(shí)的API攻防案例,旨在針對(duì)性地找到提高API安全性的具體策略和方案。
本書(shū)可為初學(xué)者提供API及其漏洞的全面介紹,也可為安全從業(yè)人員提供高級(jí)工具和技術(shù)見(jiàn)解。
1. Amazon熱銷(xiāo)且長(zhǎng)銷(xiāo)圖書(shū):4.7星好評(píng),位于電子書(shū)榜單TOP 7,被讀者稱(chēng)為漏洞獵人和 API 開(kāi)發(fā)人員一定要讀的書(shū)。
2. API安全行家之作:作者Corey Ball是API攻防方向的行家,是APIsec大學(xué)的創(chuàng)始人,他是API安全領(lǐng)域公認(rèn)的專(zhuān)家之一。
3. 免費(fèi)配套課程:本書(shū)配套課程API滲透測(cè)試在APIsec大學(xué)中收獲眾多好評(píng),一年半時(shí)間內(nèi)收獲9.3萬(wàn)播放量。
4. API全流程指南:市面上少有的從基礎(chǔ)理論到環(huán)境搭建,再到測(cè)試工具、流程介紹,以及實(shí)戰(zhàn)應(yīng)用的全流程API攻防圖書(shū),適合網(wǎng)絡(luò)安全的初學(xué)者快速上手。
科里·鮑爾(Corey Ball)是 Moss Adams 的網(wǎng)絡(luò)安全咨詢(xún)經(jīng)理,也是滲透測(cè)試服務(wù)部門(mén)的負(fù)責(zé)人。他在信息技術(shù)和網(wǎng)絡(luò)安全領(lǐng)域積累了超過(guò) 10 年的豐富經(jīng)驗(yàn),涉及多個(gè)行業(yè),包括航空航天、農(nóng)業(yè)、能源、金融科技、政府服務(wù)以及醫(yī)療保健等。他曾在薩克拉門(mén)托州立大學(xué)取得英語(yǔ)與哲學(xué)雙學(xué)士學(xué)位,他還持有 OSCP、CCISO、CEH、CISA、CISM、CRISC 和 CGEIT 等專(zhuān)業(yè)資格認(rèn)證。
目 錄
第 一部分 Web API安全的原理
第0章 為安全測(cè)試做準(zhǔn)備 3
0.1 獲得授權(quán) 3
0.2 API測(cè)試的威脅建!4
0.3 應(yīng)該測(cè)試哪些API特性 6
0.3.1 API認(rèn)證測(cè)試 6
0.3.2 Web應(yīng)用程序防火墻 7
0.3.3 移動(dòng)應(yīng)用測(cè)試 7
0.3.4 審計(jì)API文檔 8
0.3.5 速率限制測(cè)試 8
0.4 限制和排除 9
0.4.1 安全測(cè)試云API 10
0.4.2 DoS測(cè)試 11
0.5 報(bào)告和修復(fù)測(cè)試 11
0.6 關(guān)于漏洞賞金范圍的說(shuō)明 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請(qǐng)求 16
1.1.3 HTTP響應(yīng) 17
1.1.4 HTTP狀態(tài)碼 19
1.1.5 HTTP請(qǐng)求方法 20
1.1.6 有狀態(tài)和無(wú)狀態(tài)的HTTP 21
1.2 Web服務(wù)器數(shù)據(jù)庫(kù) 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)類(lèi)型 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 無(wú)身份驗(yàn)證 52
2.6 實(shí)操API:探索Twitter的API 52
2.7 小結(jié) 55
第3章 常見(jiàn)的API漏洞 56
3.1 信息泄露 56
3.2 對(duì)象級(jí)授權(quán)缺陷 57
3.3 用戶(hù)身份驗(yàn)證缺陷 60
3.4 過(guò)度數(shù)據(jù)暴露 61
3.5 資源缺乏和速率限制 62
3.6 功能級(jí)授權(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測(cè)試實(shí)驗(yàn)室
第4章 API黑客系統(tǒng) 75
4.1 Kali Linux 75
4.2 使用DevTools分析Web應(yīng)用程序 76
4.3 使用Burp Suite捕獲并修改請(qǐng)求 78
4.3.1 設(shè)置FoxyProxy 79
4.3.2 添加Burp Suite證書(shū) 80
4.3.3 Burp Suite導(dǎo)航 82
4.3.4 攔截流量 83
4.3.5 使用Intruder更改請(qǐng)求 85
4.4 在Postman中編寫(xiě)API請(qǐng)求 89
4.4.1 請(qǐng)求構(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 測(cè)試面板 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)行模糊測(cè)試 106
4.6.6 使用Arjun發(fā)現(xiàn)HTTP參數(shù) 108
4.7 小結(jié) 109
實(shí)驗(yàn)1:在REST API中枚舉用戶(hù)賬戶(hù) 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上測(cè)試API 120
5.6 小結(jié) 121
實(shí)驗(yàn)2:查找易受攻擊的API 122
第三部分 攻擊API
第6章 偵察 129
6.1 被動(dòng)偵察 129
6.1.1 被動(dòng)偵察流程 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 主動(dòng)偵察 142
6.2.1 主動(dòng)偵察過(guò)程 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對(duì)URI進(jìn)行暴力破解 152
6.2.8 使用Kiterunner發(fā)現(xiàn)API內(nèi)容 154
6.3 小結(jié) 156
實(shí)驗(yàn)3:為黑盒測(cè)試執(zhí)行主動(dòng)偵察 157
第7章 端點(diǎn)分析 162
7.1 尋找請(qǐng)求信息 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 測(cè)試預(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 冗長(zhǎng)的錯(cuò)誤消息 177
7.5.2 不良的傳輸加密 178
7.5.3 問(wèn)題配置 178
7.6 發(fā)現(xiàn)過(guò)度數(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)過(guò)度的數(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 手動(dòng)加載分析 194
8.2.2 實(shí)時(shí)令牌捕獲分析 196
8.2.3 暴力破解可預(yù)測(cè)的令牌 197
8.3 JSON Web Token濫用 199
8.3.1 識(shí)別和分析JWT 200
8.3.2 無(wú)算法攻擊 203
8.3.3 算法切換攻擊 203
8.3.4 JWT破解攻擊 205
8.4 小結(jié) 205
實(shí)驗(yàn)5:破解crAPI JWT簽名 206
第9章 模糊測(cè)試 209
9.1 有效的模糊測(cè)試 209
9.1.1 選擇模糊測(cè)試的有效負(fù)載 211
9.1.2 檢測(cè)異!213
9.2 廣泛模糊測(cè)試與深入模糊測(cè)試 215
9.2.1 使用Postman進(jìn)行廣泛模糊測(cè)試 215
9.2.2 使用Burp Suite進(jìn)行深入模糊測(cè)試 218
9.2.3 使用Wfuzz進(jìn)行深入模糊測(cè)試 221
9.2.4 對(duì)資產(chǎn)管理不當(dāng)進(jìn)行廣泛模糊測(cè)試 223
9.3 使用Wfuzz測(cè)試請(qǐng)求方法 225
9.4 進(jìn)行深入的模糊測(cè)試以繞過(guò)輸入過(guò)濾 226
9.5 用于目錄遍歷的模糊測(cè)試 227
9.6 小結(jié) 228
實(shí)驗(yàn)6:對(duì)不當(dāng)?shù)馁Y產(chǎn)管理漏洞進(jìn)行模糊測(cè)試 228
第 10章 利用授權(quán)漏洞 232
10.1 發(fā)現(xiàn)BOLA 232
10.1.1 定位資源ID 233
10.1.2 用于BOLA的A-B測(cè)試 234
10.1.3 BOLA側(cè)信道攻擊 235
10.2 發(fā)現(xiàn)BFLA 236
10.2.1 用于BFLA的A-B-A測(cè)試 237
10.2.2 在Postman中測(cè)試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è)用戶(hù)的車(chē)輛位置 242
第 11章 批量分配 247
11.1 查找批量分配目標(biāo) 247
11.1.1 賬戶(hù)注冊(cè) 247
11.1.2 未經(jīng)授權(quán)訪問(wèn)組織 248
11.2 查找批量分配變量 249
11.2.1 在文檔中找到變量 249
11.2.2 對(duì)未知變量進(jìn)行模糊測(cè)試 250
11.2.3 盲批量賦值攻擊 251
11.3 使用Arjun和Burp Suite Intruder自動(dòng)化批量分配攻擊 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 手動(dòng)提交元字符 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ù)和速率限制 測(cè)試 279
13.1 規(guī)避API安全控制 279
13.1.1 安全控制的工作原理 279
13.1.2 API安全控制檢測(cè) 281
13.1.3 使用一次性賬戶(hù) 282
13.1.4 規(guī)避技術(shù) 282
13.1.5 使用Burp Suite自動(dòng)繞過(guò) 285
13.1.6 使用Wfuzz自動(dòng)繞過(guò) 286
13.2 測(cè)試速率限制 288
13.2.1 關(guān)于寬松速率限制的說(shuō)明 289
13.2.2 路徑繞過(guò) 291
13.2.3 源標(biāo)頭欺騙 292
13.2.4 在Burp Suite中輪換IP地址 293
13.3 小結(jié) 297
第 14章 攻擊GraphQL 298
14.1 GraphQL請(qǐng)求和集成開(kāi)發(fā)環(huán)境 298
14.2 主動(dòng)偵察 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請(qǐng)求 307
14.3.4 使用內(nèi)省逆向工程GraphQL集合 309
14.4 GraphQL API分析 311
14.4.1 使用GraphiQL Documentation Explorer編寫(xiě)請(qǐng)求 311
14.4.2 使用InQL Burp擴(kuò)展 313
14.5 用于命令注入的模糊測(cè)試 316
14.6 小結(jié) 321
第 15章 數(shù)據(jù)泄露和漏洞賞金 322
15.1 數(shù)據(jù)泄露 322
15.1.1 Peloton 323
15.1.2 USPS通知可見(jiàn)性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)問(wèn)題 329
15.2.3 星巴克:從未發(fā)生的數(shù)據(jù)泄露 331
15.2.4 Instagram的GraphQL BOLA 334
15.3 小結(jié) 336
附錄 API黑客攻擊檢查清單 337
后記 340