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

14 KiB
Raw Blame History

Web API渗透测试

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

使用Trickest可以轻松构建和自动化由全球最先进的社区工具提供支持的工作流程。
立即获取访问权限:

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

基本信息

主要内容:

实验室

  • VAmPI VAmPI是一个使用Flask创建的易受攻击的API其中包含OWASP十大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=<你的账户id> → /api/account?id=<你的账户id>&id=<管理员的账户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较低版本


使用Trickest轻松构建和自动化工作流程,利用全球最先进的社区工具。
立即获取访问权限:

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

🛡️ API安全帝国备忘单


备忘单作者:Momen Eldawakhly (Cyber Guy)

在这个存储库中您将找到思维导图、技巧、资源以及与API安全和API渗透测试相关的所有内容。我们的思维导图和资源基于OWASP TOP 10 API、我们在渗透测试中的经验以及其他资源旨在提供最先进和准确的API安全和渗透测试资源

🚪 第一关:{{Recon}}

进入API安全帝国的第一关是了解如何收集有关API基础架构的信息以及如何对API进行强大的侦察以提取隐藏的入口从而使您妥协整个基础架构。因此我们提供了这个更新的API侦察思维导图其中包含最新的工具和方法


PDF版本 | XMind版本

⚔️ 您将需要的武器:

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

🚪 第二关:{{Attacking}}

攻击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-toolImperva的可定制API攻击工具以API规范作为输入生成并运行基于该规范的攻击。
  • Astra另一个用于API测试的工具用于查找多种不同的Web漏洞。
  • Susanoo漏洞API扫描器。
  • restler-fuzzerRESTler是第一个用于自动测试云服务的有状态REST API模糊测试工具用于通过REST API测试云服务并发现这些服务中的安全性和可靠性错误。对于具有OpenAPI/Swagger规范的给定云服务RESTler分析其整个规范然后生成并执行测试通过其REST API对服务进行测试。
  • TnT-Fuzzer****TnT-Fuzzer是一个用Python编写的OpenAPIswagger模糊测试工具。
  • APIFuzzer****APIFuzzer读取您的API描述并逐步模糊字段以验证应用程序是否能够处理模糊的参数。
  • API-fuzzerAPI_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" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥