初步认识API安全

一、认识API

1. 什么是API

API(应用程序接口):是一种软件中介,它允许两个不相关的应用程序相互通信。它就像一座桥梁,从一个程序接收请求或消息,然后将其传递给另一个程序,翻译消息并根据 API 的程序设计执行协议。API 几乎存在于我们数字生活的各个方面,可以说是我们现代插件、数字接口和软件通信环境的隐藏支柱。它们将所有内容连接在一起,使软件系统协调一致地工作。

通俗的来说API就是A调用B中某个功能的接口,比如说我们自己搭建的网站有个上传图片的功能,我们要把图片上传到阿里云的云储存,就需要调用阿里云的云储存的API接口。如果还无法理解,更通俗的说法比如你的电脑需要连接移硬盘,移动硬盘用来连接电脑的那根线就是API。

2. 为什么使用API

当我们在开发功能的时候比如我们需要使用A程序的地图功能,如果我们要在程序上添加地图这个功能,需要写一大堆代码,但是有了API我们直接调用地图这个功能的函数,带来了很大的便利。

3. API造成的安全问题

当然带来便利的同时也带来了安全隐患:信息截获、篡改信息、信息泄露

详细的分类可以参考:OWASP API Security TOP 10 2023

4. 常见API特征

SOAP:WSDL

OpenApi:Swagger

RESTful:/v1/api

二、API利用

(一) 工具介绍

Postman(常用)

ReadyAPI

Burp插件APIKit

工具联动xray、burp等方法,虽然工具好但是不精确,所以手工也是不可缺的部分。

(二) 靶场实战练习

vAPi:GitHub - roottusk/vapi: vAPI is Vulnerable Adversely Programmed Interface which is Self-Hostable API that mimics OWASP API Top 10 scenarios through Exercises.

1. 靶场搭建
git clone https://github.com/roottusk/vapi.git
cd vapi/
docer-compose up -d

访问http://ip/vapi

Postman导入Collection

Collection:https://raw.githubusercontent.com/roottusk/vapi/master/postman/vAPI.postman_collection.json

设置hosts

2. vapi1

一共有三个接口:创建用户、查看用户、修改用户

创建用户

查看用户

user后面是用户id,还需要修改Authorization-Token的值为username:password编码成base64

修改用户

最开始的步骤修改Authorization-Token更改查看用户一样

漏洞点只要登录了凭证就可以查看所有用户

防护措施:完善权限校验

3. vapi2

两个接口:登录用户、获取用户信息

这关是爆破,不用burp抓包我们直接在Postman中复制到burp中

复制到burp的爆破模式中,使用Pitchfork模式

字典在vapi/Resources/API2_CredentialStuffing目录中

因为字典前面是邮箱后面是密码所以我们要设置一下burp爆破规则

邮箱设置把","以及后面的数据都删掉

密码设置取后面8位数字

爆破得到账号密码

刚刚爆破得到的响应的token值放入获取用户接口的Authorization-Token中得到flag

防护方法:添加登录验证码;限制账号、IP登录次数。

4. vapi3

在/bc/vapi/Resources/API3_APK目录下有个apk文件安装到虚拟机打开

输入靶场地址,不要再后面加上/

利用接口创建用户

用在Postman注册的用户登录

登录成功后找到这个数据包

发送请求得到flag,可以在登录的时候就开始抓包然后放包到这个请求在查看返回值就可以了

防护方法:返回数据时,统一使用特定的 Wrapper 包裹,进行数据过滤; 在 DAO 层中指定非 JSON 序列化属性; 使用特定数据传输类。

5. vapi4

一共三个接口:手机号登录、验证码、获取用户信息

这个验证码是一次性验证码我们可以直接爆破4位数的验证码

把key值放在获取用户信息的接口Authorization-Token中,得到flag

防护方法:限制OTP错误次数;增强OTP复杂度。

6. vapi5

有两个接口:创建用户、查询用户

先利用创建用户接口创建一个用户

利用查询用户接口查询用户

有个查询所有用户的接口为users,我们用这个普通用户的权限就可以查看所有用户

防护方法:完善权限校验机制

7. vapi6

两个接口:创建用户、查询用户

先创建用户

查询用户credit为0

重新创建用户把credit的值改为200

得到flag

防护方法:添加数据传输层;添加权限校验;抽离函数功能,指定修改字段。

8. vapi7

四个接口:创建用户、登录用户、获取Key值、退出登录

创建用户

登录

存在CORS漏洞,添加Origin随便输入值

防护方法:配置 CORS 添加 CSRF_TOKEN

9. vapi8

两个接口:登录用户、获取用户信息

登录用户地方存在sql注入利用万能账户登录成功

得到flag

防护方法:预处理;过滤特殊字符。

10. vapi9

一个接口(这是一个v2的接口):登录

爆破pin的值

爆破时发现返回的全是500,因为v2有放爆破机制的,我们更改为v1

改了v1后爆破得到为1655

防护方法:停用老版本 API; 将老版本 API 放入内网。

11. vapi10

直接发送就可以

(三) 工具利用检测

Post联动xray自动检测

开启xray被动监听

./xray.exe webscan --listen 127.0.0.1:1236

打开Postman的下游代理

Postman发包

跳转到这个页面点击run vapi

分别找到了第七关和第九关的漏洞

三、总结

API发现接口的方法:爆破、开放的接目录

如何测试:利用Postman工具(Postman工具是专门给开发人员测试功能的并不具备安全检测功能,所以需要联动其他检测工具进行批量检测),配合Postman手工检测,主要查看返回状态码为200的包,与burp联动插件自动检测。

API的检测主要是用手工检测而工具只能作为辅助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2661081.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Xamarin开发:商场促销(策略设计模式)

Xamarin开发:商场促销(策略设计模式) 一、介绍二、需求分析三、实现四、需求分析问题1解决方案问题2解决方案 五、增加新需求六、代码优化与分析总结 一、介绍 本文引用《大话设计模式》第二章节的内容进行学习分析,仅供学习使用 这里接着我…

【Redis前奏曲】初识Redis

文章目录 一.Redis的一些特性(优点)1. 在内存中存储数据2. 可编程的3. 可扩展的4.持久化5. 聚集(集群)6. 高可用Redis快的原因 二. 使用案例1.数据库2. 缓存3. 消息队列 一.Redis的一些特性(优点) 我们在上一篇博客中说到,Redis是一个在内存中存储数据的中间件.用作数据库,数据…

深度解析TB用户购物行为:系统搭建与优化

深度解析TB用户购物行为:系统搭建与优化 引言系统搭建数据集技术选型 系统功能1. 用户维度分析2. 产品维度分析3. 聚类结果分析 创新点系统优化与展望优化展望 结语 引言 在电商时代,了解用户购物行为并从中提取有价值的信息对于企业制定营销策略和优化…

MySQL 8.0 InnoDB Tablespaces之General Tablespaces(通用表空间/一般表空间)

文章目录 MySQL 8.0 InnoDB Tablespaces之General Tablespaces(通用表空间/一般表空间)General tablespaces(通用表空间/一般表空间)通用表空间的功能通用表空间的限制 创建通用表空间(一般表空间)创建语法…

键盘字符(#键)显示错误

当屏幕上显示的键与键盘上按下的键不同时,尤其是 # 键。大多数情况下,此错误是由于 raspbian 和 NOOBS 软件的默认英国键盘配置所致。 解决方案: 要解决此问题,您需要将配置更改为您自己的键盘或语言的配置。这可以通过转到树莓派…

Java 读取超大excel文件

注意&#xff1a;此参考解决方案只是针对xlsx格式的excel文件&#xff01; Maven <dependency><groupId>com.monitorjbl</groupId><artifactId>xlsx-streamer</artifactId><version>2.2.0</version> </dependency>读取方式1…

PostgreSQL 数据库归档最近被问及的问题问题 与 4 毋 处世学

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;共1790人左右 1 2 3 4 5&#xff0…

LMX2571 芯片配置Verliog SPI驱动

前言 本实验使用ZYNQ的PL(FPGA)对LMX2571芯片进行配置&#xff0c;以下连接为相关的原理和软件使用资料。 TICS Pro 配置时钟芯片 文献阅读–Σ-Δ 小数频率合成器原理 LMX2571芯片数据手册 一、LMX2571配置时序分析 1.1 写时序 LMX2571使用24位寄存器进行编程。一个24位移位…

CSS去掉按钮阴影 | css去掉按钮边框 | 注意改变搜索的关键词、搜索方式

上图是在谷歌浏览器中运行的结果 button {box-shadow: none;height: 50px;width: 100px;background-color: white;border-color: white; }写了以上的css&#xff0c;发现按钮还是有阴影一样的东西&#xff0c;查阅网络资料的时候也一直在搜索“如何去掉按钮阴影”&#xff0c;…

计算数组中某一数字出现次数

计算数组中某一数字出现次数 思路实现普通数组的方法双向列表的方法 总结 思路 这个比较简单&#xff0c;思路其实就是遍历数组中所有的数字做一下对比&#xff0c;有的话记录一下即可。但是这几天看到了个双向列表LinkList的方法&#xff0c;所以拿出来做一下对比看看。 实现…

网站提示“不安全”怎么解决

在互联网中&#xff0c;安全问题至关重要。访问某些网站时&#xff0c;可能会遇到“不安全”警告&#xff0c;通常是由于缺乏SSL证书。SSL证书是数字证书&#xff0c;用于确保互联网通信的安全和保密。 “不安全”问题通常源于缺少SSL证书。SSL通过加密通信&#xff0c;防止第三…

“2023年的技术发展与个人成长:回顾与展望“

文章目录 每日一句正能量前言工作生活未来展望后记 每日一句正能量 凡事顺其自然&#xff0c;遇事处于泰然&#xff0c;得意之时淡然&#xff0c;失意之时坦然&#xff0c;艰辛曲折必然&#xff0c;历尽沧桑悟然。 前言 在这快速发展的信息时代&#xff0c;技术的进步和创新不…

CSS 向上扩展动画

上干货 <template><!-- mouseenter"startAnimation" 表示在鼠标进入元素时触发 startAnimation 方法。mouseleave"stopAnimation" 表示在鼠标离开元素时触发 stopAnimation 方法。 --><!-- 容器元素 --><div class"container&q…

MyBatis标签及其应用示例

MyBatis标签及其应用示例 1. select 1.1 标签属性 id唯一的标识符parameterType传给此语句的参数的全路径名或别名如&#xff1a;com.xxx.xxx.demo.entity.User或userresultType语句返回值类型或别名。如果是集合List&#xff0c;此处填写集合的泛型T&#xff0c;而不是集合…

SCT82630DHKR——5.5V-65V Vin同步降压控制器,可替代LM5145

描述&#xff1a; SCT82630是一款65V电压模式控制同步降压控制器&#xff0c;具有线路前馈。40ns受控高压侧MOSFET的最小导通时间支持高转换比&#xff0c;实现从48V输入到低压轨的直接降压转换&#xff0c;降低了系统复杂性和解决方案成本。如果需要&#xff0c;在低至6V的输…

【MySQL】数据库并发控制:悲观锁与乐观锁的深入解析

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 数 据 库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 悲观锁&#xff08;Pessimistic Locking&#xff09;: 乐观锁&#xff08;Optimistic Locking&#xff09;: 总结&#x…

SpringBoot3 应用分析

SpringBoot3-快速入门 1、简介 1. 前置知识 Java17Spring、SpringMVC、MyBatisMaven、IDEA 2. 环境要求 环境&工具版本&#xff08;or later&#xff09;SpringBoot3.0.5IDEA2021.2.1Java17Maven3.5Tomcat10.0Servlet5.0GraalVM Community22.3Native Build Tools0.9.1…

<JavaEE> TCP 的通信机制(五) -- 延时应答、捎带应答、面向字节流

目录 TCP的通信机制的核心特性 七、延时应答 1&#xff09;什么是延时应答&#xff1f; 2&#xff09;延时应答的作用 八、捎带应答 1&#xff09;什么是捎带应答&#xff1f; 2&#xff09;捎带应答的作用 九、面向字节流 1&#xff09;沾包问题 2&#xff09;“沾包…

深度学习之RNN

1.循环神经网络 在时间t的时候&#xff0c;对于单个神经元来讲它的输出y(t)如下 wx是对于输入x的权重&#xff0c;wy是对于上一时刻输出的权重 所以循环神经网络有两个权重。 如果有很多这样的神经元并排在一起 则在t时刻的输出y为 这时输入输出都是向量 2.记忆单元 由于循…

liunx系统突然不能启动jar

启动命令 nohup java -jar /date/gd_ly/jar/mssda-platform-backend-0.0.1-SNAPSHOT.jar -Dspring.config.location/date/gd_ly/jar/application-dev.yml 报错信息 Error: A JNI error has occurred, please check your installation and try again Exception in thread &q…