hacktricks/network-services-pentesting/pentesting-web/web-api-pentesting.md

13 KiB
Raw Blame History

Web API 渗透测试

从零开始学习 AWS 黑客攻击直到成为英雄 htARTE (HackTricks AWS 红队专家)

支持 HackTricks 的其他方式:

使用 Trickest 轻松构建并自动化工作流程,由世界上最先进的社区工具提供支持。
立即获取访问权限:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

基本信息

主要内容:

实验室

  • 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 侦察中的最新工具和方法:


PDF 版本 | XMind 版本

⚔️ 您将需要的武器:

🏋️ 测试您的能力和武器:

🚪 第二道门:{{攻击}}

攻击 RESTful & SOAP


PDF 版本 | XMind 版本\

攻击 GraphQL

由于 GraphQL 中的攻击有限,我们尝试根据我们在测试 API 的经验,在即将到来的思维导图中生成所有可能的攻击:


PDF 版本 | XMind 版本\

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 的方式: