简述API安全

简述API安全

API接口安全

在日常的测试中,我们会经常看到一些接口文档或接口地址,在数字化时代,API成为了数据交互的核心,但同时也带来了安全问题,本文的思路在于总结一些api方面常见的攻击面。笔者在此方向也是一个小白,如有错误,还望各位反馈。

API分类

SOAP – WSDL
soap是简单对象访问协议,用于分布式环境的基本信息交换的同行协议,描述传递信息的格式和规范,它可以用于连接web服务和客户端之间的接口,是一个可以在不同操作系统上运行的不同语言编写的程序之间的传输通信协议,格式为xml。
fofa探针:

?wsdl

d2b5ca33bd20241229005337

像上图所示,即为soap接口文档,或一般后缀为.asmx,即可判断为soap接口,在.asml后添加?wsdl会以xml的形式显示当前接口文档所有信息。

d2b5ca33bd20241229005437

OpenApi – Swagger
OpenAPI是用来描述API的文档,该文档基于控制器中的xml注释以及实体类属性attribue特性,它是OpenAPI流程的核心。
Swagger我们就比较常见了,Swagger是一套围绕OpenApi规范构建的开源工具,可以帮助设计、构建、记录和使用Open API。
fofa探针:

Swagger-UI

d2b5ca33bd20241229005536

RESTful – /v1/api
Rest 是web服务的一种架构风格,一种设计风格,是一种思想;同时Rest不是针对某一种编程语言的。

d2b5ca33bd20241229005551

如何判断目前网站是否使用何种接口

wsdl

方法1:一般站点在传参时url为.asmx时,可能为wsdl接口

d2b5ca33bd20241229005608

方法2:在其IP下其他端口存在如此类似站点,可能使用wsdl接口

d2b5ca33bd20241229005626

swagger

方法1:查看js资源中有没有请求swagger

d2b5ca33bd20241229005644

方法2:目录扫描,有以下类似格式的目录或文件代表可能存在swagger

/swagger
/api/swagger
/swagger/ui
/api/swagger/ui
/swagger-ui.html
/api/swagger-ui.html
/user/swagger-ui.html
/libs/swaggerui
/api/swaggerui
/swagger-resources/configuration/ui
/swagger-resources/configuration/security

d2b5ca33bd20241229005708

工具测试API

wsdl 工具测试

d2b5ca33bd20241229005726

这里我们选择New Security Test后选择API Definition输入我们所获得的wsdl url地址

d2b5ca33bd20241229005739

d2b5ca33bd20241229005748

下一步选择测试安全选项,可进行sql注入、xml测试等漏洞。

d2b5ca33bd20241229005803

以下就开始了安全测试

d2b5ca33bd20241229005817

swagger 工具测试

常见的测试工具有:
https://github.com/lijiejie/swagger-exp
https://github.com/jayus0821/swagger-hack
这里我习惯用的是swagger-hack,在启动后它会自动化爬取并测试所有swagger API接口。
运行非常的简单,直接在命令行后输入swagger首页的url地址即可

python3 swagger-hack2.0.py -u http://x.x.x.x:8080/swagger/v1/swagger.json

d2b5ca33bd20241229005850

ApiKit burp插件使用

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

d2b5ca33bd20241229005906

下载链接:

https://github.com/API-Security/APIKit
安装也非常的简单,在burp的Extensions中选择安装APIkit插件即可

d2b5ca33bd20241229005930

安装成功之后,APIKit中有两个选项默认是没有被勾选的

d2b5ca33bd20241229005942

这两个选项的意思分别是:

  1. Auto request sending 对子API进行自动化鉴权测试,快速发现API未授权访问漏洞。
  2. Send with cookie 开启Cookie,可以把包的Cookie存下来,生成请求的时候保留Cookie。
    在平时测试时,第一个Auto request sending 一定要慎重勾选,它会将爬取到的所有子API自动传参跑一遍,非常容易影响业务(吃牢饭)

安装好之后,就可以被动扫描应用泄露的API文档

d2b5ca33bd20241229005956

这里可以看到它也自动给我们构造好了参数,我们可以直接放到Repeater中发包进行测试

d2b5ca33bd20241229010012

d2b5ca33bd20241229010019

 

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容