2023-12-31 02:59:27 +00:00
# Web API 渗透测试
2022-04-28 16:01:33 +00:00
< details >
2023-12-31 02:59:27 +00:00
< summary > < strong > 从零开始学习 AWS 黑客攻击直到成为英雄< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS 红队专家)< / strong > < / a > < strong > ! < / strong > < / summary >
2022-04-28 16:01:33 +00:00
2023-12-31 02:59:27 +00:00
支持 HackTricks 的其他方式:
* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 发现[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs** ](https://opensea.io/collection/the-peass-family ) 收藏
* **加入** 💬 [**Discord 群组** ](https://discord.gg/hRep4RUj7f ) 或 [**telegram 群组** ](https://t.me/peass ) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm** ](https://twitter.com/carlospolopm )**。**
* **通过向** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) 和 [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github 仓库提交 PR 来分享您的黑客技巧。
2022-04-28 16:01:33 +00:00
< / details >
2023-12-31 02:59:27 +00:00
< figure > < img src = "../../.gitbook/assets/image (3) (1) (1) (1).png" alt = "" > < figcaption > < / figcaption > < / figure >
2022-06-06 22:28:05 +00:00
2023-12-31 02:59:27 +00:00
使用 [**Trickest** ](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks ) 轻松构建并**自动化工作流程**,由世界上**最先进**的社区工具提供支持。\
2023-08-03 19:12:22 +00:00
立即获取访问权限:
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics& utm_medium=banner& utm_source=hacktricks" %}
2022-06-06 22:28:05 +00:00
2023-08-03 19:12:22 +00:00
## 基本信息
2021-06-08 18:47:44 +00:00
2023-08-03 19:12:22 +00:00
主要内容:
2021-06-08 18:47:44 +00:00
2023-12-31 02:59:27 +00:00
* **Web 服务 (SOAP/XML)**
* 文档使用 **WSDL** 格式,通常保存在 `?wsdl` 路径,如 `https://api.example.com/api/?wsdl`
* 可以在 [http://www.dneonline.com/calculator.asmx ](http://www.dneonline.com/calculator.asmx ) 找到此类文档的示例( WSDL 文档在 [http://www.dneonline.com/calculator.asmx?wsdl ](http://www.dneonline.com/calculator.asmx?wsdl )),您可以看到调用 `Add` 方法的示例请求 [http://www.dneonline.com/calculator.asmx?op=Add ](http://www.dneonline.com/calculator.asmx?op=Add )
* 为了解析这些文件并创建示例请求,您可以使用工具 **SOAPUI** 或 Burp Suite 扩展 **WSDLer** 。
* **REST APIs (JSON)**
* 标准文档是 WADL 文件。在此处找到示例:[https://www.w3.org/Submission/wadl/](https://www.w3.org/Submission/wadl/)。然而,还有其他更加开发者友好的 API 表示引擎,如 [https://swagger.io/tools/swagger-ui/ ](https://swagger.io/tools/swagger-ui/ )(在页面中查看演示)
* 为了解析这些文件并创建示例请求,您可以使用工具 **Postman**
2022-04-05 22:24:52 +00:00
* [**GraphQL** ](graphql.md )
2020-07-15 15:43:14 +00:00
2023-08-03 19:12:22 +00:00
## 实验室
2022-12-21 10:38:32 +00:00
2023-12-31 02:59:27 +00:00
* [**VAmPI** ](https://github.com/erev0s/VAmPI )**: ** VAmPI 是一个使用 Flask 制作的易受攻击的 API, 它包含了 OWASP 前 10 大 API 漏洞。
2022-12-21 10:38:32 +00:00
2023-08-03 19:12:22 +00:00
## 技巧
2020-07-15 15:43:14 +00:00
2022-05-16 08:29:00 +00:00
### SOAP/XML
2021-06-08 20:38:29 +00:00
2023-12-31 02:59:27 +00:00
这类 API 可能[**容易受到 XXE 攻击**](../../pentesting-web/xxe-xee-xml-external-entity.md),但通常在用户输入中**不允许 DTD 声明**。
2021-06-08 20:38:29 +00:00
2023-12-31 02:59:27 +00:00
您也可以尝试使用 CDATA 标签插入有效载荷(只要 XML 是有效的)
2021-06-08 20:38:29 +00:00
2021-10-18 11:21:18 +00:00
![](< .. / . . / . gitbook / assets / image ( 534 ) . png > )
2021-06-08 20:38:29 +00:00
2023-08-03 19:12:22 +00:00
### 检查访问权限
2021-06-08 20:38:29 +00:00
2023-12-31 02:59:27 +00:00
通常一些 API 端点需要比其他端点更高的权限。始终尝试从权限较低的(未授权)账户访问更高权限的端点,看看是否可能。
2021-06-08 20:38:29 +00:00
2022-05-16 08:29:00 +00:00
### CORS
2021-03-04 11:40:50 +00:00
2023-12-31 02:59:27 +00:00
始终检查 API 的 [**CORS** ](../../pentesting-web/cors-bypass.md ) 配置,因为如果它允许从攻击者域名发送带有凭据的请求,那么通过受认证受害者的 [**CSRF** ](../../pentesting-web/csrf-cross-site-request-forgery.md ) 可以造成很大的损害。
2021-03-04 11:40:50 +00:00
2023-08-03 19:12:22 +00:00
### 模式
2021-03-04 11:40:50 +00:00
2023-12-31 02:59:27 +00:00
在 api 内部搜索 API 模式,并尝试使用它来发现更多内容。\
如果您发现 _/api/albums/**\<album_id>**/photos/**\<photo_id>**_\*\* \*\* 您可以尝试类似 _/api/**posts**/\<post_id>/**comment**/_ 的东西。使用一些模糊器来发现这些新的端点。
2021-03-04 11:40:50 +00:00
2023-08-03 19:12:22 +00:00
### 添加参数
2021-03-04 11:40:50 +00:00
2023-12-31 02:59:27 +00:00
类似以下示例可能会让您访问另一个用户的相册:\
_/api/MyPictureList → /api/MyPictureList?**user_id=\<other_user_id>**_
2021-03-04 11:40:50 +00:00
2023-08-03 19:12:22 +00:00
### 替换参数
2021-03-04 11:40:50 +00:00
2023-12-31 02:59:27 +00:00
您可以尝试**模糊参数**或**使用**在不同端点看到的参数来尝试访问其他信息
例如, 如果您看到类似: _/api/albums?**album_id=\<album id>**_
2021-03-04 11:40:50 +00:00
2023-12-31 02:59:27 +00:00
您可以**替换** ** `album_id` ** 参数为完全不同的内容, 并可能获取其他数据: _/api/albums?**account_id=\<account id>**_
2021-03-04 11:40:50 +00:00
2023-08-03 19:12:22 +00:00
### 参数污染
2021-03-04 11:40:50 +00:00
2023-12-31 02:59:27 +00:00
/api/account?**id=\<your account id>** → /api/account?**id=\<your account id>\&id=\<admin's account id>**
2021-03-04 11:40:50 +00:00
2023-08-03 19:12:22 +00:00
### 通配符参数
2021-03-04 11:50:43 +00:00
2023-08-03 19:12:22 +00:00
尝试使用以下符号作为通配符:**\***, ** %**, ** \_**, ** .**
2021-03-04 11:50:43 +00:00
2022-04-05 22:24:52 +00:00
* /api/users/\*
2021-03-04 11:50:43 +00:00
* /api/users/%
* /api/users/\_
* /api/users/.
2023-12-31 02:59:27 +00:00
### HTTP 请求方法更改
2021-03-04 11:40:50 +00:00
2023-12-31 02:59:27 +00:00
您可以尝试使用 HTTP 方法:**GET, POST, PUT, DELETE, PATCH, INVENTED** 来检查 web 服务器是否会给您意外的信息。
2021-03-04 11:40:50 +00:00
2023-08-03 19:12:22 +00:00
### 请求内容类型
2021-03-04 11:40:50 +00:00
2023-12-31 02:59:27 +00:00
尝试在以下内容类型之间切换(相应地修改请求体),使 web 服务器表现出意外行为:
2021-03-04 11:40:50 +00:00
2021-11-30 16:46:07 +00:00
* **x-www-form-urlencoded** --> user=test
2022-05-16 08:29:00 +00:00
* **application/xml** --> \<user>test\</user>
* **application/json** --> {"user": "test"}
2021-03-04 11:40:50 +00:00
2023-08-03 19:12:22 +00:00
### 参数类型
2021-03-04 11:50:43 +00:00
2023-12-31 02:59:27 +00:00
如果**JSON**数据有效,尝试发送意外的数据类型,如:
2021-03-04 11:50:43 +00:00
* {"username": "John"}
* {"username": true}
2021-03-05 12:03:56 +00:00
* {"username": null}
2021-03-04 11:50:43 +00:00
* {"username": 1}
2021-10-18 11:21:18 +00:00
* {"username": \[true]}
* {"username": \["John", true]}
2022-05-16 08:29:00 +00:00
* {"username": {"$neq": "lalala"\}}
2023-12-31 02:59:27 +00:00
* 您可以想象的任何其他组合
2021-03-04 11:50:43 +00:00
2023-12-31 02:59:27 +00:00
如果您可以发送**XML**数据,请检查 [XXE 注入 ](../../pentesting-web/xxe-xee-xml-external-entity.md )。
2021-03-04 11:50:43 +00:00
2023-12-31 02:59:27 +00:00
如果您发送常规的 POST 数据,请尝试发送数组和字典:
2021-03-04 11:50:43 +00:00
2021-10-18 11:21:18 +00:00
* username\[]=John
* username\[$neq]=lalala
2021-03-04 11:50:43 +00:00
2023-12-31 02:59:27 +00:00
### 玩转路由
2020-07-15 15:43:14 +00:00
2023-12-31 02:59:27 +00:00
`/files/..%2f..%2f + 受害者 ID + %2f + 受害者文件名`
2020-07-15 15:43:14 +00:00
2023-08-03 19:12:22 +00:00
### 检查可能的版本
2021-03-04 11:40:50 +00:00
2023-12-31 02:59:27 +00:00
旧版本可能仍在使用,并且比最新的端点更容易受到攻击
2021-03-04 11:40:50 +00:00
* `/api/v1/login`
2022-05-16 08:29:00 +00:00
* `/api/v2/login` \\
2022-04-05 22:24:52 +00:00
* `/api/CharityEventFeb2020/user/pp/<ID>`
* `/api/CharityEventFeb2021/user/pp/<ID>`
2021-03-04 11:40:50 +00:00
2023-08-03 19:12:22 +00:00
### 检查可能的版本(自动化方法)
2022-09-30 10:27:15 +00:00
2023-12-31 02:59:27 +00:00
AutoRepeater Burp 扩展:添加替换规则
2022-09-30 10:27:15 +00:00
2023-08-03 19:12:22 +00:00
* `类型:请求字符串`
2023-12-31 02:59:27 +00:00
* `匹配: v2( 更高版本) `
2023-08-03 19:12:22 +00:00
* `替换: v1( 较低版本) `
2022-09-27 09:36:19 +00:00
2023-12-31 02:59:27 +00:00
## 🛡️ API 安全帝国备忘单
2022-05-16 08:29:00 +00:00
\
2023-08-03 19:12:22 +00:00
备忘单作者:[Momen Eldawakhly (Cyber Guy)](https://www.linkedin.com/in/momen-eldawakhly-3b6250204)\
2022-05-16 08:29:00 +00:00
\
2023-12-31 02:59:27 +00:00
在这个仓库中,您将找到:思维导图、技巧和窍门、资源以及与 API 安全和 API 渗透测试相关的所有内容。我们的思维导图和资源基于 OWASP TOP 10 API、我们在渗透测试中的经验以及其他资源, 以提供 WEB 上最先进和准确的 API 安全和渗透测试资源!!
2022-05-08 16:39:22 +00:00
2023-12-31 02:59:27 +00:00
### 🚪 第一道门:`{{侦察}}`
2022-05-08 16:39:22 +00:00
2023-12-31 02:59:27 +00:00
进入 API 安全帝国的第一道门是了解如何收集有关 API 基础设施的信息以及如何对 API 进行强大的侦察,以发现可能使您妥协整个基础设施的隐藏门,因此,我们提供了这个最新的 API 侦察思维导图,其中包含 API 侦察的最新工具和方法:
2022-05-08 16:39:22 +00:00
2022-05-16 08:29:00 +00:00
\
![](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap.png)
2023-12-31 02:59:27 +00:00
[**PDF 版本** ](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap.pdf ) ** |** [**XMind 版本** ](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap.xmind )
2022-05-16 08:29:00 +00:00
2023-12-31 02:59:27 +00:00
#### ⚔️ 您将需要的武器:
2022-05-08 16:39:22 +00:00
2022-05-16 08:29:00 +00:00
* [BurpSuite ](https://portswigger.net/burp/releases )
* [FFUF ](https://github.com/ffuf/ffuf )
* [Arjun ](https://github.com/InsiderPhD/Arjun )
* [Postman ](https://www.postman.com/downloads/ )
* [SecLists ](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content )
* [FuzzDB ](https://github.com/fuzzdb-project/fuzzdb )
* [SoapUI ](https://www.soapui.org/downloads/soapui/ )
* [GraphQL Voyager ](https://apis.guru/graphql-voyager/ )
* [Kiterunner ](https://github.com/assetnote/kiterunner )
* [unfurl ](https://github.com/tomnomnom/unfurl )
2022-05-08 16:39:22 +00:00
2023-12-31 02:59:27 +00:00
#### 🏋️ 测试您的能力和武器:
2022-05-08 16:39:22 +00:00
2022-05-16 08:29:00 +00:00
* [vapi ](https://github.com/roottusk/vapi )
* [Generic-University ](https://github.com/InsiderPhD/Generic-University )
2022-05-08 16:39:22 +00:00
2023-12-31 02:59:27 +00:00
### 🚪 第二道门:`{{攻击}}`
2022-05-08 16:39:22 +00:00
2023-12-31 02:59:27 +00:00
#### 攻击 RESTful & SOAP:
2022-05-16 08:29:00 +00:00
![](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap%20ATTACK.png)\
2023-12-31 02:59:27 +00:00
[**PDF 版本** ](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap%20ATTACK.pdf ) ** |** [**XMind 版本** ](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap%20ATTACK.xmind )\\
2022-05-16 08:29:00 +00:00
2023-12-31 02:59:27 +00:00
#### 攻击 GraphQL:
2022-05-08 16:39:22 +00:00
2023-12-31 02:59:27 +00:00
由于 GraphQL 中的攻击有限,我们尝试根据我们在测试 API 的经验,在即将到来的思维导图中生成所有可能的攻击:
2022-05-08 16:39:22 +00:00
2022-05-16 08:29:00 +00:00
![](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap%20%7B%7BGraphQL%20Attacking%7D%7D.png)\
2023-12-31 02:59:27 +00:00
[**PDF 版本** ](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap%20%7B%7BGraphQL%20Attacking%7D%7D.pdf ) ** |** [**XMind 版本** ](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap%20%7B%7BGraphQL%20Attacking%7D%7D.xmind )\\
2020-07-15 15:43:14 +00:00
2023-12-31 02:59:27 +00:00
## Owasp API 安全前 10 名
2020-07-15 15:43:14 +00:00
2023-12-31 02:59:27 +00:00
阅读此文档以了解如何**搜索**和**利用** Owasp 前 10 大 API 漏洞:[https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf)
## API 安全检查清单
2020-07-15 15:43:14 +00:00
{% embed url="https://github.com/shieldfy/API-Security-Checklist" %}
2023-12-31 02:59:27 +00:00
## 用于寻找 API 漏洞的 Logger++ 过滤器
2022-09-30 10:27:15 +00:00
2022-09-27 09:36:19 +00:00
[https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters ](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters )
2023-12-31 02:59:27 +00:00
## 可能的 API 端点列表
2020-07-15 15:43:14 +00:00
[https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d ](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d )
2023-08-03 19:12:22 +00:00
## 工具
2022-09-05 10:17:20 +00:00
2023-12-31 02:59:27 +00:00
* [**kiterunner** ](https://github.com/assetnote/kiterunner ):出色的工具,用于**发现 API 端点。**
2022-09-05 10:17:20 +00:00
```bash
kr scan https://domain.com/api/ -w routes-large.kite -x 20 # Downloaded from kiterunner repo
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0
kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
```
2023-12-31 02:59:27 +00:00
* [**automatic-api-attack-tool** ](https://github.com/imperva/automatic-api-attack-tool ): Imperva 定制的 API 攻击工具,输入一个 API 规范,生成并执行基于该规范的攻击作为输出。
* [**Astra** ](https://github.com/flipkart-incubator/Astra ): 另一个用于 api 测试的工具,可以发现多种不同的 web 漏洞。
* [**Susanoo** ](https://github.com/ant4g0nist/Susanoo ): 漏洞 API 扫描器。
* [**restler-fuzzer** ](https://github.com/microsoft/restler-fuzzer ): RESTler 是_第一个有状态的 REST API 模糊测试工具_, 用于自动测试通过其 REST APIs 的云服务,并在这些服务中找到安全和可靠性漏洞。对于具有 OpenAPI/Swagger 规范的给定云服务, RESTler 分析其整个规范,然后生成并执行通过其 REST API 对服务进行测试的测试。
* [**TnT-Fuzzer** ](https://github.com/Teebytes/TnT-Fuzzer )**:** TnT-Fuzzer 是一个用 python 编写的 OpenAPI (swagger) 模糊测试工具。
* [**APIFuzzer** ](https://github.com/KissPeter/APIFuzzer )**:** APIFuzzer 读取您的 API 描述并逐步模糊字段以验证您的应用程序是否能够处理模糊的参数。
* [**API-fuzzer** ](https://github.com/Fuzzapi/API-fuzzer ): API\_Fuzzer gem 接受一个 API 请求作为输入,并返回 API 中可能存在的漏洞。
* [**race-the-web** ](https://github.com/TheHackerDev/race-the-web ): 通过同时向目标 URL( 或多个 URL) 发送用户指定数量的请求来测试 web 应用程序中的竞态条件,然后比较服务器的响应以确定唯一性。
< figure > < img src = "../../.gitbook/assets/image (3) (1) (1) (1).png" alt = "" > < figcaption > < / figcaption > < / figure >
使用 [**Trickest** ](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks ) 轻松构建并**自动化工作流程**,由世界上**最先进**的社区工具提供支持。\
2023-08-03 19:12:22 +00:00
立即获取访问权限:
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics& utm_medium=banner& utm_source=hacktricks" %}
2022-06-06 22:28:05 +00:00
2022-04-28 16:01:33 +00:00
< details >
2023-12-31 02:59:27 +00:00
< summary > < strong > 通过< / strong > < a href = "https://training.hacktricks.xyz/courses/arte" > < strong > htARTE (HackTricks AWS Red Team Expert)< / strong > < / a > < strong > 从零开始学习 AWS 黑客攻击!< / strong > < / summary >
其他支持 HackTricks 的方式:
2022-04-28 16:01:33 +00:00
2023-12-31 02:59:27 +00:00
* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 发现[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs** ](https://opensea.io/collection/the-peass-family ) 系列
* **加入** 💬 [**Discord 群组** ](https://discord.gg/hRep4RUj7f ) 或 [**telegram 群组** ](https://t.me/peass ) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm** ](https://twitter.com/carlospolopm )**。**
* **通过向** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) 和 [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github 仓库提交 PR 来分享您的黑客技巧。
2022-04-28 16:01:33 +00:00
< / details >