某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

  • 客户端主题(翻译)

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

    • 说明
    • 笔记-服务端主题

      • SQL注入笔记
      • OS命令注入笔记
      • 文件上传漏洞笔记
      • XML外部实体(XXE)注入笔记
      • API测试笔记
        • API测试基本知识
          • 1、什么是API?
          • 2、API侦察-步骤
          • 3、API侦察-文档
          • 4、发现API文档
          • 5、尝试更改API请求的内容类型
        • API测试
          • 1、漏洞汇总
        • 批量赋值漏洞
          • 1、什么是批量赋值漏洞?
          • 2、如何自动识别隐藏参数?
          • 3、手动识别隐藏参数
        • 服务端参数污染
          • 1、什么是服务端参数污染?
          • 2、服务端参数污染的别名?
          • 3、通过服务端参数污染漏洞来覆盖现有参数时,不同语言中的行为?
          • 4、不同API结构中的参数污染?
        • 防范API中的漏洞
          • 1、在设计API时,从一开始就考虑安全性
          • 2、防范批量赋值漏洞
          • 3、防范服务端参数污染漏洞
    • 笔记-客户端主题

    • 笔记-高级主题

  • 实验室做题记录

  • BurpSuite及官方实验室
  • 个人学习笔记
  • 笔记-服务端主题
carsaid
2024-04-30
目录

API测试笔记

# API测试笔记

# 1API测试基本知识

# 1、什么是API?

答案

API(应用程序编程接口)使软件系统和应用程序能够通信和共享数据。所有的动态网站都是由 API 组成的,所以像 SQL 注入这样的经典 Web 漏洞可以归类为 API 测试。

API 中的漏洞可能会破坏网站机密性、完整性和可用性的核心方面。应该测试网站前端未完全使用的 API,重点是 RESTful 和 JSON API,以及可能影响内部 API 的服务端参数污染漏洞。

# 2、API侦察-步骤

答案
  1. 确定 API 端点,例如GET /api/books
  2. 需要确定如何与这类 API 端点进行交互,构造有效的 HTTP 请求来测试 API:
    • 该 API 所处理的输入数据,包括强制参数和可选参数。
    • API 接受的请求类型,包括支持的 HTTP 方法和媒体格式。
    • 速率限制和身份验证机制。

# 3、API侦察-文档

答案

API 通常会被记录下来,以便开发人员知道如何使用和集成它们。文档可以是人类可读和机器可读的形式。

  • 人类可读的文档旨在让开发人员了解如何使用 API。它可能包括详细的解释,示例和使用场景。
  • 机器可读的文档被设计为由软件处理,以自动执行 API 集成和验证等任务。它是以 JSON 或 XML 等结构化格式编写的。你还可以使用 BurpSuite 扩展 OpenAPI Parser (opens new window) 来自动解析 OpenAPI 文档。

API 文档通常是公开可用的,特别是如果这个 API 是为了提供给外部开发人员使用。如果是这种情况,请始终通过查看文档开始你的侦察。

# 4、发现API文档

答案
  • (潜在路径搜寻)即使 API 文档不是公开的,你仍然可以通过浏览使用 API 的应用程序来访问它。尝试查找可能映射 API 文档的端点,例如:/api、/swagger/index.html、/openapi.json
  • (基本端点调查)如果你已经识别了一个端点/api/swagger/v1/users/123,则可以调查以下路径:/api/swagger/v1、/api/swagger、/api
  • (路径暴破)一般的目录扫描 及 爬虫流程等。
  • (从 JS 文件中提取 API 端点)JavaScript 文件中可能包含对 API 端点的引用,可以通过 BurpSuite 扩展 JS Link Finder (opens new window) 进行链接提取。

# 5、尝试更改API请求的内容类型

答案

API 端点通常需要特定格式的数据。因此,根据请求中提供的数据的内容类型,它们的行为可能会有所不同。更改内容类型可以使你:

  • 触发错误,泄露有效信息。
  • 绕过有缺陷的防御。
  • 利用处理逻辑的差异。例如,API 在处理 JSON 数据时可能是安全的,但在处理 XML 时容易受到注入攻击。

要更改内容类型,请修改Content-Type标头,然后相应地重新格式化请求主体。你可以使用 BApp 中的 Content Type Converter (opens new window) 扩展,自动将请求中提交的数据在 XML 和 JSON 之间转换。

# 2API测试

# 1、漏洞汇总

答案
  • 查阅文档并使用 API
  • 隐藏的 API 端点
  • 利用批量赋值漏洞

# 3批量赋值漏洞

# 1、什么是批量赋值漏洞?

答案

批量赋值(也称为自动绑定)可能会无意中创建隐藏参数。当软件框架自动将请求参数 绑定到 内部对象上的字段时,就会发生这种情况。因此,批量赋值可能会导致应用程序支持某些隐藏参数,即使开发人员从未打算处理这些参数。

# 2、如何自动识别隐藏参数?

答案
  • 使用 Intruder 暴破参数名称
  • 使用 BApp Param Miner (opens new window) 扩展,该扩展本是用于 Web 缓存投毒攻击中的非缓存键参数搜索
  • 使用 BurpSuite 的内容发现 (opens new window)工具(右键数据包然后选择 “Engagement tools --> Discover content”)

# 3、手动识别隐藏参数

答案
  • 识别隐藏参数
  • 测试批量赋值漏洞

# 4服务端参数污染

# 1、什么是服务端参数污染?

答案

网站将未经编码的用户输入嵌入到内部 API 端点的请求中,从而造成以下影响:

  • 截断查询字符串
  • 注入无效参数
  • 注入有效参数
  • 覆盖现有参数

# 2、服务端参数污染的别名?

答案

这种漏洞有时被称为 HTTP 参数污染。

除此之外,此术语也代指 Web 应用程序防火墙(WAF)绕过技术。

# 3、通过服务端参数污染漏洞来覆盖现有参数时,不同语言中的行为?

答案

例如传递/users/search?name=peter%26name=carlos,则:

  • PHP 只解析最后一个参数。这将导致用户搜索carlos。
  • ASP.NET 结合了这两个参数。这将导致用户搜索peter,carlos,这可能会导致错误消息 “用户名无效”。
  • Node.js 中的 express 框架仅解析第一个参数。这将导致用户搜索peter,给出不变的结果。

# 4、不同API结构中的参数污染?

答案
  • 查询字符串中的服务端参数污染
  • REST 路径中的服务端参数污染
  • 结构化数据格式中的服务端参数污染

# 5防范API中的漏洞

# 1、在设计API时,从一开始就考虑安全性

答案
  • 如果你不希望公开访问 API,请保护你的文档。
  • 确保你的文档保持最新状态,以便合法测试人员能够全面了解 API 的攻击面。
  • 应用合法的 HTTP 方法白名单列表。
  • 验证每个请求或响应的 内容类型 是否在预期之内。
  • 设计通用错误消息,避免泄露可能对攻击者有用的信息。
  • 对 API 的所有版本(而不仅仅是当前生产版本)使用保护措施。

# 2、防范批量赋值漏洞

答案

将用户可更新的属性列入白名单列表,并将用户不应更新的敏感属性列入黑名单。

# 3、防范服务端参数污染漏洞

答案

为了抵御服务器端参数污染,请:

  • 使用白名单列表定义不需要编码的字符。
  • 在将所有其他用户输入包含在服务端请求中之前,确保对这些输入进行编码(白名单中的字符除外)。
  • 你还应该确保所有输入都符合预期的格式和结构。
编辑 (opens new window)
XML外部实体(XXE)注入笔记
XSS笔记

← XML外部实体(XXE)注入笔记 XSS笔记→

最近更新
01
msfvenom
03-29
02
Metasploit
03-29
03
PostgreSQL渗透备忘录
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式