API安全

API

简介

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节

API接口类型

RESTful API:REST,Representational State Transfer的缩写,是一种使Web基础架构具有分布式特征的架构风格。RESTful API是基于REST架构风格的API,通常使用HTTP/js/ajax进行数据传输。它是使用最广泛的API类型之一。

  • 特征: url加?WSDL 或后缀为.asmx

SOAP API:全称是Simple Object Access Protocol,是UDDI、XML和SOAP的组合,它要求在高度可靠和安全的系统之间进行通信。SOAP API 使用 XML 格式请求和响应数据,并支持多种协议,包括 HTTP、HTTPS 等。对于企业级应用程序来说,SOAP API更适合处理大规模数据交换和复杂的业务流程。

  • 特征:Swagger

GraphQL API:GraphQL是一种用于API的查询语言。与REST和SOAP不同,GraphQL不像API那样让开发者获取整个集合数据,而是根据开发者的需要返回客户端需要的数据。GraphQL API具有强大的类型系统和查询语言,使得客户端能够更精确地请求数据,而不是不必要地获取整个集合数据。

  • 特征: /v1/api/

API检测项目

工具自动化:

SOAP - WSDL 测试

Postman 联动

SoapUI ReadyAPI

OpenApi - Swagger 测试

Postman 联动

https://github.com/lijiejie/swagger-exp

https://github.com/jayus0821/swagger-hack

RESTful - /v1/api/ 测试

Postman 联动

APIKit 联动

APIKit是基于BurpSuite提供的JavaAPI开发的插件。APIKit可以主动/被动扫描发现应用泄露的API文档,并将API文档解析成BurpSuite中的数据包用于API安全测试

1
https://github.com/API-Security/APIKit

手动测试

常见方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Method:请求方法  

- 攻击方式:OPTIONS,PUT,MOVE,DELETE

- 效果:上传恶意文件,修改页面等

URL:唯一资源定位符

- 攻击方式:猜测,遍历,跳转

- 效果:未授权访问等

Params:请求参数

- 攻击方式:构造参数,修改参数,遍历,重发
- 效果:爆破,越权,未授权访问,突破业务逻辑等

Authorization:认证方式

- 攻击方式:身份伪造,身份篡改
- 效果:越权,未授权访问等

Headers:请求消息头

- 攻击方式:拦截数据包,改Hosts,改Referer,改Content-Type等
- 效果:绕过身份认证,绕过Referer验证,绕过类型验证,DDOS等

Body:消息体

- 攻击方式:SQL注入,XML注入,反序列化等
- 效果:提权,突破业务逻辑,未授权访问等

vapi靶场

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