API 发现是指在 Web 应用程序中识别和映射 API 端点以进行安全测试的过程。本文档介绍了 SecLists 中用于帮助安全专业人员通过系统枚举发现和测试 API 端点的 API 字典。有关通用 Web 内容发现的信息,请参阅Web 内容发现。
API 发现组件包含按两个主要类别组织的专业字典
来源:Discovery/Web-Content/api/actions-lowercase.txt Discovery/Web-Content/api/actions-uppercase.txt Discovery/Web-Content/api/actions.txt Discovery/Web-Content/api/objects-lowercase.txt Discovery/Web-Content/api/objects-uppercase.txt Discovery/Web-Content/api/objects.txt
这些列表包含通过 API 执行的常见操作
| 文件 | 描述 | 示例 |
|---|---|---|
actions-lowercase.txt | 113 个小写动作动词 | get、create、update、delete |
actions-uppercase.txt | 113 个大写动作动词 | GET、CREATE、UPDATE、DELETE |
actions.txt | 包含大小写字母的组合列表 | get、GET、create、CREATE |
动作动词表示的功能,例如
create、read、update、deleteget、post、putregister、upload、download来源:Discovery/Web-Content/api/actions-lowercase.txt Discovery/Web-Content/api/actions-uppercase.txt Discovery/Web-Content/api/actions.txt
这些列表包含常见的 API 资源名称
| 文件 | 描述 | 示例 |
|---|---|---|
objects-lowercase.txt | 98 个常用小写资源 | user、account、token、profile |
objects-uppercase.txt | 96 个常用大写资源 | USER、ACCOUNT、TOKEN、PROFILE |
objects.txt | 2000+ 潜在资源名称 | user、admin、config、settings |
对象名称表示的资源,例如
user、account、customertoken、password、credentialssettings、config、status来源:Discovery/Web-Content/api/objects-lowercase.txt Discovery/Web-Content/api/objects-uppercase.txt Discovery/Web-Content/api/objects.txt
API 字典旨在组合以形成端点候选。以下是操作和对象通常如何组合形成 API 端点的方式
来源:Discovery/Web-Content/api/actions-lowercase.txt Discovery/Web-Content/api/objects-lowercase.txt
| 模式 | 示例 | 描述 |
|---|---|---|
/action/object | /get/user | 操作后跟对象 |
/object/action | /user/create | 对象后跟操作 |
/actionObject | /getUser | 驼峰式组合 |
/api/v1/object | /api/v1/users | 带版本的 RESTful 模式 |
/object/{id}/action | /user/123/update | 对特定资源的操作 |
/api/action | /api/authenticate | 仅操作 |
下图说明了使用这些字典进行 API 端点发现的过程
来源:Discovery/Web-Content/api/actions-lowercase.txt Discovery/Web-Content/api/objects-lowercase.txt Discovery/Web-Content/api/actions-uppercase.txt Discovery/Web-Content/api/objects-uppercase.txt
API 发现字典与常见的安全测试工具集成
使用 ffuf 进行 API 端点发现
ffuf -w actions-lowercase.txt:ACTION -w objects-lowercase.txt:OBJECT -u https://api.example.com/ACTION/OBJECT -mc 200,201,204,401,403
在循环中使用 curl
while read action; do
while read object; do
curl -s -o /dev/null -w "%{http_code} https://api.example.com/$action/$object\n" https://api.example.com/$action/$object
done < objects-lowercase.txt
done < actions-lowercase.txt
Burp Suite Intruder
https://api.example.com/§action§/§object§actions-lowercase.txt 作为第一个位置的有效载荷加载objects-lowercase.txt 作为第二个位置的有效载荷加载此示例演示了如何使用 API 字典在典型应用程序中发现端点
/api/getUserget(操作)+ User(对象),驼峰式命名格式/api/createUser、/api/updateUser、/api/deleteUser/api/getAccount、/api/getProfile、/api/getSettings/api/v1/user/api/v1/users(集合)/api/v1/users/123(特定资源)/api/v1/users/123/profile(嵌套资源)SecLists 中的 API 字典由 Chris Lockard (@chrislockard) 贡献,源自 api_wordlist 项目。这些列表作为 SecLists 仓库的一部分进行维护,并定期更新现代 Web 应用程序中发现的新 API 命名模式。
API 发现列表与其他 SecLists 组件协同工作
来源:Discovery/Web-Content/api/ Fuzzing/fuzz-Bo0oM.txt Fuzzing/extensions-Bo0oM.txt
/v1/、/v2/ 等SecLists 中的 API 发现列表提供了一种在安全测试期间识别 API 端点的系统方法。通过根据常见模式组合操作和对象,安全专业人员可以发现已文档化和未文档化的 API 端点,这为彻底的 API 安全测试奠定了基础。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(f2f44b)