API 渗透测试 4 个关键步骤

简介: 【2月更文挑战第28天】

因API安全的部分步骤与传统Web安全雷同,在这里重点介绍信息收集、漏洞发现、漏洞利用、报告撰写4个步骤。

1、信息收集

信息收集是整个API渗透测试阶段的入口,其收集到的数据是否准确、全面对于其后期渗透工作的开展尤其重要。一般来说,信息收集主要有以下3种途径。

  • 自动化收集:提供自动化工具收集被渗透对象的相关信息,比如域名、子域名、IP、端口、DNS、路径、参数等。
  • 手工收集:除了自动化工具收集到的信息外,还有些信息需要手工收集或整理归类,形成渗透所需要的材料。比如业务流程、组织结构、人员职能等。
  • 情报收集:通过商业合作或其他渠道,从外部获得系列的关键信息。这种方式随着当前网络攻防对抗强度的不断提升,在各个企业中的应用越来越普遍。


无论是使用一种方式还是多种方式的组合,其目的都是尽可能地收集被渗透对象的相关信息。在API渗透中,除了常规的域名、端口、服务器banner之类的信息外,API本身所特有的信息在信息收集时需要关注。举例如下。


API是否存在接口定义规范描述文件?

  • 如果存在,遵循的规范是什么?SOAP、Open API 2.0、Open API 3.0还是Graph QL?
  • API是依赖什么语言实现的?Java、.NET、PHP、Python、Go还是其他语言?
  • API运行所依赖的组件是什么版本,是否存在已知漏洞?
  • 互联网上是否存在其泄露的API Key或证书?
  • API是否存在多个版本?多个接入端?

2、漏洞发现

漏洞发现是利用收集到的信息,发现应用程序的缺陷或漏洞的过程。在常规的渗透测试中,这种漏洞发现的范围非常广,包含了信息系统的方方面面,比如网络层协议配置错误、主机补丁没有及时升级、应用层权限配置错误等。通常情况下,漏洞发现的手段主要有自动化检测和手工挖掘两种方式。

  • 自动化检测:是指使用设备、工具、软件与被渗透对象进行交互,根据应答响应情况判别是否存在漏洞。这种方式的检测一般耗时短、速度快,但往往存在一定比例的漏报或误报。
  • 手工挖掘:是指以人工方式,辅助工具来验证被渗透对象是否存在漏洞。这种方式的检测通常耗时长、速度慢,但准确性高,很少存在误报。


在实际工作中,往往两种方式混合使用,比如先使用自动化检测工具全量扫描一次,再针对高风险业务场景,进行人工渗透或复核。

在API渗透测试中,因为API的特殊性,如果前期信息收集不全(比如API列表不全遗漏了影子API),自动化扫描过程中会无法检测到相应API的漏洞,这时通常需要手工挖掘。在API渗透测试中,手工挖掘往往占有较大的比重。当采用手工挖掘时,以下事项是需要重点关注的。

  • 认证和授权:对于API的认证鉴权机制,设计人员和研发人员往往认识不足,有的API调用甚至缺少认证与授权机制。比如令牌、HTTP方法(GET,POST,PUT和DELETE等)在进入服务器之前是否都经过了验证,OAuth协议使用的正确性,无认证和授权的API是否可以任意调用。
  • 输入验证:和其他类型的应用程序一样,对于输入的不可信是应用程序安全的基础,但研发人员常常因疏忽导致对输入缺少有效的验证。比如XML实体注入类型的攻击、不同的响应类型application/json与application/xml。
  • 数据编码:包含JSON格式的数据,容易导致反序列化漏洞或远程代码执行。
  • API版本和影子API:同一个API的不同版本或未在API规范文件中描述的API,更容易发现安全漏洞。

3、漏洞利用

漏洞利用是基于上一步漏洞分析的基础上,进行有计划的精准打击,其目的是攻击高价值的目标对象。在前两个步骤中,攻击本质上是嘈杂的、尝试性的,到了本环节,目标对象的价值、漏洞利用的难度以及杀伤力已经比较清晰了,渗透人员制定的攻击路径、漏洞适用性也更深入、更精细。


在API的漏洞利用阶段,专业技术人员主要依赖漏洞发现阶段获取的成果,做具体的、针对性强的渗透工作,利用当前发现的漏洞,加载攻击向量,来达到获取被攻击对象的服务器权限。在这个过程中,通常是手工操作和自动化工具并行使用的。


漏洞利用是针对具体漏洞的攻击性行为,在自动化工具中通常会集成不同的攻击向量。如Burp Suite中,使用Intruder套件可以选择不同的攻击向量类型:简单列表、运行时文件、暴力字典等;Metasploit中,使用不同的漏洞攻击程序模块,加载攻击向量。使用自动化工具对专业技术人员的要求相对较低,但在API的漏洞利用过程中,如果自动化工具无法满足要求,往往需要专业技术人员自己根据当前的API协议、API运行环境、API服务的上下文等去构造攻击向量,这时就需要专业技术人员对API技术具有深刻的理解,并且熟知漏洞的利用原理才能达到目的,这是API漏洞利用中最难的地方。

4、报告撰写

报告撰写是API渗透测试过程中非常重要的一个步骤。可以说前期所有的工作都是为渗透测试报告的撰写做铺垫的,清点资产、梳理API清单、汇总漏洞等都是为渗透测试报告的撰写提供素材和数据支撑。报告是对整个渗透测试工作的总结,并向被渗透测试方呈现渗透测试的结果,一般来说,一份完成的渗透测试报告通常包含以下内容。

  • 总体描述:是面向高级管理者或负责API安全管理人员提供的总结性概述,包含渗透测试的基本背景、基本渗透测试方法、高风险项以及最终风险评价。
  • 渗透范围:主要指网络环境、主机类、服务类资产清单,API列表等。
  • 漏洞详情:是指渗透测试过程中发现的漏洞利用点、利用方式、危害等级、影响范围以及整改建议等。
  • 项目或团队情况:一般包含渗透测试开展的工期、参与人员、团队人员简介、联系信息等。


渗透测试报告的撰写通常是由多个人来完成,比如渗透测试负责人负责统筹,渗透测试组长负责技术部分,渗透执行人员负责漏洞部分等。大多数渗透测试团队对于报告的格式都有固定的文档模板,最终由渗透测试负责人汇总整理成标准的文档,先在团队内部进行评审,评审通过后,组织相关干系人开正式会议,完成总结汇报,并就待整改项、整改计划达成一致意见,以便接下来跟踪闭环。

相关文章
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
102 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
1月前
|
数据采集 机器学习/深度学习 大数据
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
这篇文章详细介绍了C3D架构在行为检测领域的应用,包括训练和测试步骤,使用UCF101数据集进行演示。
45 1
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
|
1月前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
46 1
|
2月前
|
缓存 测试技术 API
API的封装步骤流程
API封装流程是一个系统化的过程,旨在将内部功能转化为可复用的接口供外部调用。流程包括明确需求、设计接口、选择技术和工具、编写代码、测试、文档编写及部署维护。具体步骤为确定业务功能、数据来源;设计URL、请求方式、参数及响应格式;选择开发语言、框架和数据库技术;实现数据连接、业务逻辑、错误处理;进行功能、性能测试;编写详细文档;部署并持续维护。通过这些步骤,确保API稳定可靠,提高性能。
|
11天前
|
JSON API 数据格式
淘宝 / 天猫官方商品 / 订单订单 API 接口丨商品上传接口对接步骤
要对接淘宝/天猫官方商品或订单API,需先注册淘宝开放平台账号,创建应用获取App Key和App Secret。之后,详细阅读API文档,了解接口功能及权限要求,编写认证、构建请求、发送请求和处理响应的代码。最后,在沙箱环境中测试与调试,确保API调用的正确性和稳定性。
|
15天前
|
安全 测试技术 API
如何实现API接口的自动化测试?
实现API接口的自动化测试涉及多个关键步骤:确定测试范围和目标、编写测试用例、选择自动化测试工具、搭建测试环境、编写测试脚本、执行测试、分析结果和回归测试。选择合适的工具和考虑团队熟悉度是成功的关键。常用工具包括Postman、JMeter和SoapUI。通过这些步骤和工具,可以有效提高测试效率和质量,确保API的稳定性和可靠性。
|
1月前
|
PyTorch 算法框架/工具 计算机视觉
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
本文介绍了使用YOLOv4-Tiny进行目标检测的完整流程,包括模型介绍、代码下载、数据集处理、网络训练、预测和评估。
118 2
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
|
26天前
|
缓存 NoSQL 测试技术
构建高效后端API的五个关键步骤
【10月更文挑战第23天】 在数字化时代的浪潮中,一个高效、可靠的后端API是支撑现代应用程序不可或缺的基石。本文将通过五个关键步骤,指导你如何从零开始构建一个强大的后端API。我们将深入探讨设计原则、选择合适的技术栈、实现安全性、优化性能以及确保可维护性等方面。无论你是初学者还是经验丰富的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。让我们一起探索后端开发的奥秘,解锁高效API的秘密吧!
34 1
|
27天前
|
Java 测试技术 API
拼多多 API 接口申请通过后如何进行测试?
拼多多 API 接口申请通过后,需按以下步骤测试:1. 仔细研读接口文档;2. 搭建测试环境,准备开发工具和模拟请求工具;3. 编写测试代码或使用测试工具;4. 设计测试用例,包括正常、异常和边界情况;5. 验证测试结果,检查返回值和错误处理;6. 记录和分析测试结果,确保 API 的稳定性和性能。
|
14天前
|
监控 测试技术 API
关于API接口的性能测试指南
要测试API接口的性能,需先进行功能测试,确保接口正常工作。接着编排性能测试场景,设置运行配置,使用工具如JMeter、Apifox等进行测试,监控性能指标,分析结果,优化调整,并将其纳入持续集成流程,确保高负荷下良好表现。
下一篇
无影云桌面