API 渗透测试 4 个关键步骤

简介: 【5月更文挑战第17天】API渗透测试的四个关键步骤:信息收集、漏洞发现、漏洞利用和报告撰写。

因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月前
|
NoSQL 安全 测试技术
接口测试用例设计的关键步骤与技巧解析
该文介绍了接口测试的设计和实施,包括测试流程、质量目标和用例设计方法。接口测试在需求分析后进行,关注功能、性能、安全等六项质量目标。流程包括网络监听(如TcpDump, WireShark)和代理工具(Charles, BurpSuite, mitmproxy, Fiddler, AnyProxy)。设计用例时,需考虑基本功能流程、输入域测试(如边界值、特殊字符、参数类型、组合参数、幂等性)、线程安全(并发和分布式测试)以及故障注入。接口测试用例要素包括模块、标题、优先级、前置条件、请求方法等。文章强调了保证接口的幂等性和系统健壮性的测试重要性。
54 5
|
20天前
|
jenkins 机器人 测试技术
jenkins接入钉钉api接口自动化测试报告自动发送
该教程介绍了如何在Jenkins上实现接口自动化测试的持续集成,并将可视化报告发送至钉钉工作群。首先,确保准备好了自动化脚本。接着配置Jenkins:安装Git插件,设置源代码管理(如Git)和触发器(定时或推送)。使用Post build task插件处理构建后的报告,读取Allure的prometheusData.txt文件以获取测试结果。最后,安装Ding Talk插件,配置钉钉机器人,通过 Dingtalkchatbot 库发送测试报告信息到钉钉群。整个流程包括Jenkins的定时构建、Git仓库的监听以及自动化报告发送到钉钉的通知。
17 1
|
6天前
|
Java 测试技术 API
如何选择API测试工具
如何选择API测试工具
|
29天前
|
JSON JavaScript 测试技术
掌握Postman,开启API测试新纪元!
Postman是一款流行的API测试工具和开发环境,旨在简化API开发过程、测试和文档编制。它提供了一套功能强大的工具,帮助开发人员更轻松地构建、测试和调试Web服务。
36 1
|
1月前
|
安全 测试技术 网络安全
API渗透测试的基本流程及关键点
【5月更文挑战第26天】API渗透测试类似Web应用渗透测试,涉及资产分析和模拟攻击,以发现安全缺陷。
|
1月前
|
监控 安全 API
邮件推送API建议操作方法?AOKSend配置步骤
邮件推送API在数字营销中至关重要,本文介绍了其操作建议和AOKSend配置步骤。选择可靠服务如AOKSend、SendGrid、Mailgun,管理API密钥,使用SSL/TLS加密,实现错误处理和重试机制,以及监控邮件发送效果。AOKSend配置包括:注册登录、获取API密钥、配置SMTP设置、测试发送和创建API请求。正确配置能提升营销和沟通效率。
|
22天前
|
JSON 测试技术 API
API接口测试指南:确保接口稳定性与可靠性的实践
API接口测试是确保软件产品质量的重要组成部分。通过遵循本指南中的测试步骤和最佳实践,开发者可以有效地验证API的功能、性能和安全性,从而提升软件的整体质量和用户满意度。
|
22天前
|
XML JSON API
RESTful API关键部分组成和构建web应用程序步骤
RESTful API关键部分组成和构建web应用程序步骤
15 0
|
26天前
|
Oracle 安全 Java
JAVA用Mail发送API的方法步骤教程
使用Java和Mail发送API实现自动化邮件发送,提高效率。步骤包括:1. 安装JDK并配置JAVA_HOME,2. 添加JavaMail库(可通过Maven或官网下载)。配置邮件发送涉及邮件服务器地址、端口和认证信息。创建邮件会话、邮件消息对象,然后使用Transport发送。示例代码展示完整流程。注意处理认证失败、连接问题和邮件发送失败等常见问题。
|
1月前
|
XML Web App开发 JavaScript
软件测试 -- Selenium常用API全面解答(java)
软件测试 -- Selenium常用API全面解答(java)
33 0