13 KiB
Web API 渗透测试
从零开始学习 AWS 黑客攻击直到成为英雄 htARTE (HackTricks AWS 红队专家)!
支持 HackTricks 的其他方式:
- 如果您想在 HackTricks 中看到您的公司广告或下载 HackTricks 的 PDF,请查看订阅计划!
- 获取官方 PEASS & HackTricks 商品
- 发现PEASS 家族,我们独家的 NFTs 收藏
- 加入 💬 Discord 群组 或 telegram 群组 或在 Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来分享您的黑客技巧。
使用 Trickest 轻松构建并自动化工作流程,由世界上最先进的社区工具提供支持。
立即获取访问权限:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
基本信息
主要内容:
- Web 服务 (SOAP/XML)
- 文档使用 WSDL 格式,通常保存在
?wsdl
路径,如https://api.example.com/api/?wsdl
- 可以在 http://www.dneonline.com/calculator.asmx 找到此类文档的示例(WSDL 文档在 http://www.dneonline.com/calculator.asmx?wsdl),您可以看到一个调用
Add
方法的示例请求 http://www.dneonline.com/calculator.asmx?op=Add - 为了解析这些文件并创建示例请求,您可以使用 SOAPUI 工具或 WSDLer Burp Suite 扩展。
- REST APIs (JSON)
- 标准文档是 WADL 文件。在这里找到一个示例:https://www.w3.org/Submission/wadl/。然而,还有其他更加开发者友好的 API 表示引擎,如 https://swagger.io/tools/swagger-ui/(在页面中查看演示)
- 为了解析这些文件并创建示例请求,您可以使用 Postman 工具
- GraphQL
实验室
- VAmPI: VAmPI 是一个使用 Flask 制作的易受攻击的 API,它包含了 OWASP 前 10 大 API 漏洞。
技巧
SOAP/XML
这类 API 可能容易受到 XXE 攻击,但通常在用户输入中不允许 DTD 声明。
您也可以尝试使用 CDATA 标签插入有效载荷(只要 XML 是有效的)
检查访问权限
通常一些 API 端点需要比其他端点更高的权限。始终尝试从权限较低(未授权)的账户访问更高权限的端点,看看是否可能。
CORS
始终检查 API 的 CORS 配置,因为如果它允许从攻击者域名发送带有凭据的请求,那么通过来自已认证受害者的 CSRF 可以造成很大的损害。
模式
在 api 中搜索 API 模式,并尝试使用它来发现更多内容。
如果您发现 /api/albums/<album_id>/photos/<photo_id>** ** 您可以尝试类似 /api/posts/<post_id>/comment/ 的东西。使用一些模糊测试工具来发现这些新的端点。
添加参数
类似以下示例可能会让您访问另一个用户的照片相册:
/api/MyPictureList → /api/MyPictureList?user_id=<other_user_id>
替换参数
您可以尝试模糊测试参数或使用在不同端点看到的参数来尝试访问其他信息
例如,如果您看到类似:/api/albums?album_id=<album id>
您可以替换 album_id
参数为完全不同的内容,可能获取其他数据:/api/albums?account_id=<account id>
参数污染
/api/account?id=<your account id> → /api/account?id=<your account id>&id=<admin's account id>
通配符参数
尝试使用以下符号作为通配符:*, %, _, .
- /api/users/*
- /api/users/%
- /api/users/_
- /api/users/.
HTTP 请求方法更改
您可以尝试使用 HTTP 方法:GET, POST, PUT, DELETE, PATCH, INVENTED 来检查 web 服务器是否会给您意外的信息。
请求内容类型
尝试在以下内容类型之间切换(相应地修改请求体),使 web 服务器表现出意外行为:
- x-www-form-urlencoded --> user=test
- application/xml --> <user>test</user>
- application/json --> {"user": "test"}
参数类型
如果 JSON 数据有效,尝试发送意外的数据类型,如:
- {"username": "John"}
- {"username": true}
- {"username": null}
- {"username": 1}
- {"username": [true]}
- {"username": ["John", true]}
- {"username": {"$neq": "lalala"}}
- 您可以想象的任何其他组合
如果您可以发送 XML 数据,请检查 XXE 注入。
如果您发送常规 POST 数据,请尝试发送数组和字典:
- username[]=John
- username[$neq]=lalala
玩转路由
/files/..%2f..%2f + 受害者 ID + %2f + 受害者文件名
检查可能的版本
旧版本可能仍在使用,并且比最新的端点更容易受到攻击
/api/v1/login
/api/v2/login
\/api/CharityEventFeb2020/user/pp/<ID>
/api/CharityEventFeb2021/user/pp/<ID>
检查可能的版本(自动化方法)
AutoRepeater Burp 扩展:添加替换规则
类型:请求字符串
匹配:v2(更高版本)
替换:v1(较低版本)
🛡️ API 安全帝国备忘单
备忘单作者:Momen Eldawakhly (Cyber Guy)
在这个仓库中,您将找到:思维导图、技巧和窍门、资源以及与 API 安全和 API 渗透测试相关的所有内容。我们的思维导图和资源基于 OWASP TOP 10 API、我们在渗透测试中的经验以及其他资源,以提供 WEB 上最先进和准确的 API 安全和渗透测试资源!!
🚪 第一道门:{{侦察}}
进入 API 安全帝国的第一道门是了解如何收集有关 API 基础设施的信息以及如何对 API 进行强大的侦察,以发现可能使您妥协整个基础设施的隐藏门,因此,我们提供了这个最新的 API 侦察思维导图,其中包含了 API 侦察中的最新工具和方法:
⚔️ 您将需要的武器:
🏋️ 测试您的能力和武器:
🚪 第二道门:{{攻击}}
攻击 RESTful & SOAP:
攻击 GraphQL:
由于 GraphQL 中的攻击有限,我们尝试根据我们在测试 API 的经验,在即将到来的思维导图中生成所有可能的攻击:
Owasp API 安全前 10 名
阅读此文档以了解如何搜索和利用 Owasp 前 10 大 API 漏洞:https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf
API 安全检查清单
{% embed url="https://github.com/shieldfy/API-Security-Checklist" %}
用于寻找 API 漏洞的 Logger++ 过滤器
https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters
可能的 API 端点列表
https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d
工具
- kiterunner:出色的工具,用于发现 API 端点。
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
- automatic-api-attack-tool: Imperva 定制的 API 攻击工具,输入一个 API 规范,生成并执行基于该规范的攻击作为输出。
- Astra: 另一个用于 api 测试的工具,可以发现多种不同的 web 漏洞。
- Susanoo: 漏洞 API 扫描器。
- restler-fuzzer: RESTler 是 第一个有状态的 REST API 模糊测试工具,用于自动测试通过其 REST APIs 的云服务,并在这些服务中找到安全和可靠性漏洞。对于具有 OpenAPI/Swagger 规范的给定云服务,RESTler 分析其整个规范,然后生成并执行通过其 REST API 对服务进行测试的测试。
- TnT-Fuzzer: TnT-Fuzzer 是一个用 python 编写的 OpenAPI (swagger) 模糊测试工具。
- APIFuzzer: APIFuzzer 读取您的 API 描述,并逐步模糊字段以验证您的应用程序是否能够处理模糊的参数。
- API-fuzzer: API_Fuzzer gem 接受一个 API 请求作为输入,并返回 API 中可能存在的漏洞。
- race-the-web: 通过同时向目标 URL(或多个 URL)发送用户指定数量的请求来测试 web 应用程序中的竞态条件,然后比较服务器的响应以确定唯一性。
使用 Trickest 轻松构建并自动化工作流程,由世界上最先进的社区工具提供支持。
立即获取访问权限:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
通过 htARTE (HackTricks AWS Red Team Expert) 从零开始学习 AWS 黑客攻击!
其他支持 HackTricks 的方式:
- 如果您想在 HackTricks 中看到您的公司广告或下载 HackTricks 的 PDF,请查看 订阅计划!
- 获取 官方 PEASS & HackTricks 商品
- 发现 The PEASS Family,我们独家的 NFTs 系列
- 加入 💬 Discord 群组 或 telegram 群组 或在 Twitter 🐦 上关注我 @carlospolopm。
- 通过向 HackTricks 和 HackTricks Cloud github 仓库提交 PR 来**分享您的黑客技巧。