API攻防:Web API安全指南 Hacking APIs: Breaking Web Application Programming Interfaces

科里·鮑爾(Corey Ball)

  • API攻防:Web API安全指南-preview-1
  • API攻防:Web API安全指南-preview-2
API攻防:Web API安全指南-preview-1

相關主題

商品描述

本書旨在打造一本Web API安全的實用指南,全面介紹Web API的攻擊方法和防禦策略。

本書分為4個部分,共16章。第一部分從API滲透測試的基礎理論入手,探討Web 應用程序的基礎知識、Web API攻防的基本原理和常見的API漏洞。第二部分帶領讀者搭建自己的API測試實驗室,結合2個實驗案例,指導讀者找到脆弱的API目標。第三部分通過偵察、端點分析、攻擊身份驗證、模糊測試、利用授權漏洞、批量分配、註入這7章,幫助讀者瞭解API攻擊的過程和方法,結合7個實驗案例,幫助讀者進行API測試。第四部分介紹3個真實的API攻防案例,旨在針對性地找到提高API安全性的具體策略和方案。

本書可為初學者提供API及其漏洞的全面介紹,也可為安全從業人員提供高級工具和技術見解。

作者簡介

科里·鲍尔(Corey Ball)是 Moss Adams 的网络安全咨询经理,也是渗透测试服务部门的负责人。他在信息技术和网络安全领域积累了超过 10 年的丰富经验,涉及多个行业,包括航空航天、农业、能源、金融科技、政府服务以及医疗保健等。他曾在萨克拉门托州立大学取得英语与哲学双学士学位,他还持有 OSCP、CCISO、CEH、CISA、CISM、CRISC 和 CGEIT 等专业资格认证。

目錄大綱

目  錄

第 一部分 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 小結 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狀態碼 19

1.1.5 HTTP請求方法 20

1.1.6 有狀態和無狀態的HTTP 21

1.2 Web服務器數據庫 23

1.2.1 SQL 23

1.2.2 NoSQL 25

1.3 API如何融入整體架構 25

1.4 小結 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規範 39

2.4 API數據交換格式 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 小結 55

第3章 常見的API漏洞 56

3.1 信息泄露 56

3.2 對象級授權缺陷 57

3.3 用戶身份驗證缺陷 60

3.4 過度數據暴露 61

3.5 資源缺乏和速率限制 62

3.6 功能級授權缺陷 63

3.7 批量分配 64

3.8 安全配置錯誤 65

3.9 註入 68

3.10 不當的資產管理 69

3.11 業務邏輯漏洞 70

3.12 小結 72

第二部分 搭建API測試實驗室

第4章 API黑客系統 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 環境變量 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發現API端點 103

4.6.3 使用nikto掃描漏洞 105

4.6.4 使用OWASP ZAP掃描漏洞 106

4.6.5 使用Wfuzz進行模糊測試 106

4.6.6 使用Arjun發現HTTP參數 108

4.7 小結 109

實驗1:在REST API中枚舉用戶賬戶 110

第5章 設定有API漏洞的目標 114

5.1 創建一個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 小結 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發現API內容 154

6.3 小結 156

實驗3:為黑盒測試執行主動偵察 157

第7章 端點分析 162

7.1 尋找請求信息 162

7.1.1 在文檔中查找信息 163

7.1.2 導入API規範 166

7.1.3 逆向工程API 168

7.2 在Postman中添加API身份驗證要求 171

7.3 分析功能 172

7.3.1 測試預期用途 173

7.3.2 執行特權操作 175

7.3.3 分析API響應 176

7.4 發現信息泄露 176

7.5 發現安全配置錯誤 177

7.5.1 冗長的錯誤消息 177

7.5.2 不良的傳輸加密 178

7.5.3 問題配置 178

7.6 發現過度數據暴露 179

7.7 發現業務邏輯漏洞 180

7.8 小結 181

實驗4:構建crAPI集合並發現過度的數據暴露 181

第8章 攻擊身份驗證 186

8.1 經典身份驗證攻擊 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 小結 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 對資產管理不當進行廣泛模糊測試 223

9.3 使用Wfuzz測試請求方法 225

9.4 進行深入的模糊測試以繞過輸入過濾 226

9.5 用於目錄遍歷的模糊測試 227

9.6 小結 228

實驗6:對不當的資產管理漏洞進行模糊測試 228

第 10章 利用授權漏洞 232

10.1 發現BOLA 232

10.1.1 定位資源ID 233

10.1.2 用於BOLA的A-B測試 234

10.1.3 BOLA側通道攻擊 235

10.2 發現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 小結 241

實驗7:查找另一個用戶的車輛位置 242

第 11章 批量分配 247

11.1 查找批量分配目標 247

11.1.1 賬戶註冊 247

11.1.2 未經授權訪問組織 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 結合使用BFLA和批量分配 253

11.5 小結 254

實驗8:更改在線商店中商品的價格 255

第 12章 註入 259

12.1 發現註入漏洞 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 操作系統命令註入 270

12.7 小結 272

實驗9:使用NoSQL註入偽造優惠券 272

第四部分 真實世界的API攻擊

第 13章 應用規避技術和速率限制 測試 279

13.1 規避API安全控制 279

13.1.1 安全控制的工作原理 279

13.1.2 API安全控制檢測 281

13.1.3 使用一次性賬戶 282

13.1.4 規避技術 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 小結 297

第 14章 攻擊GraphQL 298

14.1 GraphQL請求和集成開發環境 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 使用內省逆向工程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 小結 321

第 15章 數據泄露和漏洞賞金 322

15.1 數據泄露 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 優質API密鑰的價格 328

15.2.2 私有API授權問題 329

15.2.3 星巴克:從未發生的數據泄露 331

15.2.4 Instagram的GraphQL BOLA 334

15.3 小結 336

附錄 API黑客攻擊檢查清單 337

後記 340