在当今数字化时代,API接口已成为现代软件架构中不可或缺的组成部分。它们连接着各种应用程序和服务,促进了数据交换和功能集成。然而,随着API的普及,其安全性也成为了一个日益突出的问题。本文将深入探讨API接口安全的重要性,介绍常见的安全威胁以及防护措施,并通过实际案例展示如何识别和修复API安全漏洞。
API
-
定义
- 通常在网站的通讯中,很多会调用api接口去方便更多信息的管理与调用,但是当使用某些api时,在开发人员未对api接口做出访问策略限制或其他的加固,会导致其他的用户发现api的时候可能会从中获取到敏感信息泄露,或者其他的sql注入等等安全问题
-
协议
SOAP (Simple Object Access Protocol):
- XML基于的数据交换协议
- 通常使用HTTP传输
- SOAP = HTTP + XML
-
架构风格
REST (Representational State Transfer):
- Web服务的设计风格,不是协议
- 简洁,越来越流行
- 使用标准HTTP方法(GET, POST等)
-
描述语言
WSDL (Web Services Description Language):
- XML基于的Web服务描述语言
- 描述Web服务的公共接口
- 常与SOAP一起使用
Webservice
wsdl
-
介绍
- WSDL是一个用于精确描述Web服务的文档,WSDL文档是一个遵循WSDL-XML模式的XML文档。WSDL 文档将Web服务定义为服务访问点或端口的集合。在 WSDL 中,由于服务访问点和消息的抽象定义已从具体的服务部署或数据格式绑定中分离出来,因此可以对抽象定义进行再次使用。消息,指对交换数据的抽象描述;而端口类型,指操作的抽象集合。用于特定端口类型的具体协议和数据格式规范构成了可以再次使用的绑定。将Web访问地址与可再次使用的绑定相关联,可以定义一个端口,而端口的集合则定义为服务。
一个WSDL文档通常包含8个重要的元素,即definitions、types、import、message、portType、operation、binding、service元素。这些元素嵌套在definitions元素中,definitions是WSDL文档的根元素。
- WSDL是一个用于精确描述Web服务的文档,WSDL文档是一个遵循WSDL-XML模式的XML文档。WSDL 文档将Web服务定义为服务访问点或端口的集合。在 WSDL 中,由于服务访问点和消息的抽象定义已从具体的服务部署或数据格式绑定中分离出来,因此可以对抽象定义进行再次使用。消息,指对交换数据的抽象描述;而端口类型,指操作的抽象集合。用于特定端口类型的具体协议和数据格式规范构成了可以再次使用的绑定。将Web访问地址与可再次使用的绑定相关联,可以定义一个端口,而端口的集合则定义为服务。
-
复现
-
指纹查找
edu.cn inurl:asmx?wsdl
-
找到如下地址
-
-
直接使用soapui工具来分析情况
-
-
-
-
api太多了,需要借助一些自动化扫描工具[readyAPI]
-
该软件暂未发现破解版,首页如下
-
-
-
-
测试结果
-
SOAP
swagger
-
介绍
- Swagger是一个开源的API文档和设计工具集,它提供了一种标准化的方法来描述、生成、可视化和测试RESTful Web服务。Swagger允许开发者以易读易用的JSON或YAML格式定义API接口,自动生成交互式API文档,并提供了API客户端SDK生成和服务器存根代码生成的功能,大大简化了API的开发、文档编写和测试过程。
-
指纹查找
"Swagger" && title=="Swagger UI"
-
利用
-
Soapui&exp
-
-
存在目录
-
/swagger /api/swagger /swagger/ui /api/swagger/ui /swagger-ui.html /api/swagger-ui.html ....
-
-
复现
-
fofa搜索指纹
-
利用
soapui
工具来分析接口-
首先先找到对应的api文档的网址,在soapui中导入即可
-
-
利用
swagger-exp-knife4j.py
来分析api接口-
使用命令
python swagger-exp-knife4j.py -u http://13.214.16.152/activity/v3/api-docs
,自动弹出游览器来分析数据包 -
-
-
利用
swagger-hack2.0
脚本自动化扫描结果-
原版的脚本会出现
list indices must be integers or slices, not str
报错,所以我用ai进行改版了 -
python swagger-hack2.0.py -u http://13.214.16.152/activity/v3/api-docs
-
-
-
-
HTTP
Webpack
-
介绍
- Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。当 Webpack 处理应用程序时,它会在内部构建一个依赖图,映射项目所需的每个模块并生成一个或多个 bundle。Webpack 的主要功能包括模块打包、代码分割、文件优化、开发服务器等,它能够将各种资源(如 JavaScript、CSS、图片等)视为模块来处理,大大简化了前端开发的复杂度和提高了开发效率。
-
复现
-
利用:PackFuzzer
-
使用packerfuzzer工具,
python PackerFuzzer.py -u https://www.huaxin-ts.com/
-
-
结果在
\reports
文件夹当中
API接口安全是一个持续evolving的领域,需要开发者和安全专家保持警惕并不断更新知识和技能。通过本文的介绍和实战演示,我们希望读者能够更好地理解API安全的重要性,掌握基本的安全实践,并在日常工作中将这些知识付诸实践。记住,保护API安全不仅是技术问题,更是一种责任 - 它关乎用户隐私、数据完整性和整个数字生态系统的健康发展。让我们共同努力,构建一个更安全、更可靠的API世界。
-
-