写在前面
这篇文章是关于作者在学习PortSwigger的API Test类型漏洞时的记录和学习笔记
使用到的工具为Burp Suite Pro
漏洞简介
什么是api
API全称为Application Interface,是应用程序对外提供功能的接口,现在主要有三种api风格,分别是JSON风格的api,RESTful风格的api以及Graphic风格的api
JSON风格
请求获取用户信息
POST /api/getUser HTTP/1.1
Host: example.com
Content-Type: application/json
{
"userId": 1
}
RESTful风格
请求获取用户信息
GET /api/users/1 HTTP/1.1
Host: example.com
请求修改用户信息
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
{
"name": "Jane Doe",
"email": "jane.doe@example.com"
}
Graphic风格
请求获取用户信息
POST /graphql HTTP/1.1
Host: example.com
Content-Type: application/json
{
"query": "{ user(id: 1) { id, name, email } }"
}
API测试是什么
API测试这种漏洞主要包含了对开放api期望运行逻辑的破坏以及对未开放的api的检测和调用,导致的危害可能有敏感信息泄露,应用行为被改变等
这篇文章主要讨论JSON和RESTful APIs
当你在测试一个api的时候,关注下面这些点:
- api接收并处理的数据,包括必需的和可选的
- api接受的请求类型,包括请求方法和media formats
- 速率限制和认证机制
和api交互
使用不同的请求方法
HTTP1.0定义了三种请求方法: GET、POST、HEAD
GET方法请求一个指定资源的表示形式,使用GET的请求应该只被用于获取数据。HEAD方法请求一个与GET请求的响应相同的响应,但没有响应体。POST方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用。
HTTP1.1新增了六种请求方法:OPTIONS、PUT、DELETE、TRACE 、CONNECT、PATCHOPTIONS方法用于描述目标资源的通信选项。PUT方法用有效载荷请求替换目标资源的所有当前表示。DELETE方法删除指定的资源。TRACE方法沿着到目标资源的路径执行一个消息环回测试。CONNECT方法建立一个到由目标资源标识的服务器的隧道。PATCH方法用于对资源应用部分修改。
使用不同的Content-Type
以下是最常使用的10种Content-Type
application/json
- 用途:用于 JSON 格式的数据传输,常用于 RESTful API。
text/html - 用途:用于 HTML 格式的数据传输,常用于 Web 页面响应。
application/x-www-form-urlencoded - 用途:用于 HTML 表单提交的编码方式,将表单数据编码为键值对。
multipart/form-data - 用途:用于文件上传表单的编码方式,允许同时上传文件和其他数据。
text/plain - 用途:用于纯文本数据传输,没有特

最低0.47元/天 解锁文章
2224

被折叠的 条评论
为什么被折叠?



