针对API漏洞挖掘技巧学习
前言
首先我们需要了解API基本的一些知识,我们首先来看几个GET方式的API
GET /api/books HTTP/1.1
Host: example.com
首先上面这种,是api的端点,也就是请求点,通过交互获得图书馆的图书列表,例如另一个端点可能是/api/books/mystery,那么这个可能可以检索书籍列表。
一旦确认了端点,就需要确定怎么样可以和他们产生交互,也就是触发检索。
API文档
api一半都会有相对应的文档,以便开发人员去使用,通常是公开可用的,但是也有不公开的,我们也可以使用api的程序来访问。例如:
- /api
- /swagger/index.html
- /openapi.json
如果标识了资源终结点,需要调查一下基本路劲,比如:表示了终结点/api/swagger/v1/users/123,就需要调查以下路径
- /api/swagger/v1
- /api/swagger
- /api
靶场一:使用文档利用API端点
我们想要完成这个靶场,需要知道几点:
什么是API文档,API文档对攻击者如何使用,如何发现API文档
这里我是用插件findsomething找到页面中的api

访问之后提示我们缺少参数,我们往上一级目录,也就是api目录访问看看

发现了说明文档
我们直接点delete就可以直接对指定用户进行删除,但是这里回显是401权限不足,根据靶场提供的信息我们wiener用户,再次访问即可删除。当然,我们也可以通过抓包,去查看这个api的使用参数,仿照发送请求,达到任意控制效果

常见支持HTTP的方法
- GET – Retrieves data from a resource.
GET -从资源中检索数据。 - PATCH – Applies partial changes to a resource.
PATCH -删除对资源的部分更改。 - OPTIONS – Retrieves information on the types of request methods that can be used on a resource.
OPTIONS -检索有关可在资源上使用的请求方法类型的信息。
研究api端点时,测试方法很重要,比如我们知道端点/api/tasks,我们可以尝试以下方法
- GET /api/tasks – Retrieves a list of tasks.
GET /api/tasks -检索任务列表。 - POST /api/tasks – Creates a new task.
POST /api/tasks -创建一个新任务。 - DELETE /api/tasks/1 – Deletes a task.
DELETE /api/tasks/1 -完成任务。
靶场二:查找利用未使用的API端点
该靶场,首先我们需要找到未被使用的api端点,上面一个靶场我们是找不到的,这里根据靶场提示,我们挨个点击靶场中购买,走一遍购买流程,我们可以在数据记录中,找到一个隐藏的api

这个是我们在提交购买的时候产生的,我们将这个发送到重放器中
尝试使用不同的方式进行排查,比如我们可以尝试使用/api/products/1,或者/api/products、/api来排查所有的内容,但是这里均无法响应
那么下一步我们可以尝试不同的方式
比如我这里使用post

这里提示不支持该方法,并且告诉了我可用的方法,这里我们试试

提示内部服务错误,我们在下面加上括号

提示我们缺少price参数
加上参数

提示必须是非负整数,我们去掉引号试试

提示我们需要Content-Type: application/json
我们复制放到下面

这里成功修改了价格,我们将价格修改为0元,购买即可通关。

本关卡以api传递参数的方式,让我们成功修改了参数。
识别隐藏参数
我们通常可以看到,一个api请求,他会允许我们修改某些东西
PATCH /api/users/请求它允许用户更新他们的用户名和电子邮件,并包含以下JSON:
{
"username": "wiener",
"email": "wiener@example.com",
}
返回的信息是以下JSON
{
"id": 123,
"name": "John Doe",
"email": "john@example.com",
"isAdmin": "false"
}
这表示隐藏的id和参数,可能可以进行改变使用
我们想要测试上面的isadmin参数,可以将上面的参数修改后发送到PATCH请求
{
"username": "wiener",
"email": "wiener@example.com",
"isAdmin": false,
}
如果我们将false修改为true,那么在没有充分验证的情况下,有可能会错误绑定对象,获取权限。
靶场三:利用批量分配漏洞
该靶场,我们需要分析一下,流量包中的api,根据提示,我们在购买的过程中,找到两个api的包

一个get一个post两个数据包,这里我们可以在post数据包中看到一个数据结构

在GET数据包中,可以在返回包中发现一些隐藏的数据传递方式

我们可以尝试拼接到post数据包中进行尝试

这里报错提示我们资金不足, 我们尝试改变内容

尝试数据
改成100,直接通关了

返回true,完成了关卡。

该靶场的问题,在于,我们可以从GET中获取到一些隐藏的参数,在得到隐藏参数之后,我们可以通过post或者其他的方法进行发送,尝试执行。
文章转自微信公众号@SecNL安全团队
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- Duolingo API 使用指南:语言学习与智能应用的融合实践
- 超级英雄尽在掌握:超级英雄数据API的超能力
- 了解API端点:初学者指南
- API版本控制:URL、标头、媒体类型版本控制
- Python 查询专利信息:轻松获取最新技术专利数据
- IOT语义互操作性之API接口
- 地图API服务商百度的竞争对手和替代品
- 强化 API 访问控制:基于属性的授权(ABAC)安全实践指南
- SIGN×Bithumb 永续行情 API:边缘缓存 3 天优化策略
- 百度地图批量算路api服务介绍及应用场景
- Express + TypeScript + OpenFGA 权限控制实践指南
- 细粒度授权修复关键API安全风险 – Auth0