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列表等。
  • 漏洞详情:是指渗透测试过程中发现的漏洞利用点、利用方式、危害等级、影响范围以及整改建议等。
  • 项目或团队情况:一般包含渗透测试开展的工期、参与人员、团队人员简介、联系信息等。


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

相关文章
|
15天前
|
API
Sendmail邮箱API发送邮件的步骤
AokSend教程:使用Sendmail API发送邮件涉及5步。1) 导入sendmail库;2) 连接SMTP服务器(如`smtp.sendmail.com:587`);3) 设置发件人(`sender@example.com`)和收件人(`recipient@example.com`);4) 编写邮件内容,包括主题和正文;5) 使用`sendmail.send()`发送邮件。AokSend提供高效、触达率高的触发式和SMTP/API接口,适合大规模验证码发信服务。
|
17天前
|
JSON 安全 API
Microsoft邮箱API发送邮件的方法和步骤
Aoksend详解如何使用Microsoft邮箱API发送邮件:1. 在Azure创建应用并获取访问权限;2. 设置API请求头,含Authorization和Content-Type;3. 构建JSON格式的邮件内容;4. 使用POST方法发送至API端点;5. 检查响应处理发送结果。遵循最佳实践,安全集成邮件功能。
|
24天前
|
安全 API
触发式邮件邮箱API发送邮件的步骤
触发式邮件邮箱API是自动化邮件发送的高效工具,如AokSend、Mailgun和蜂邮EDM等提供此类服务。主要步骤包括:选择服务提供商、注册获取API密钥、配置触发事件(如用户注册或下单)、编写邮件模板及调用API发送邮件。使用时注意遵循服务提供商规则,保证安全可靠性。
|
2天前
|
API 开发者
邮件API接口使用的方法和步骤
AOKSEND指南:了解和使用邮件API接口,包括选择适合的接口(如AOKSEND、Mailgun、SMTP),获取访问权限,配置发件人、收件人及邮件内容,调用接口发送邮件,并处理返回结果,以高效集成邮件功能。
|
3天前
|
API 开发者
免费邮箱API发送邮件测试调试的方法和步骤
本文介绍了使用免费邮箱API如aoksend、Mailgun、SMTP2GO发送邮件的测试调试步骤:选择合适的API,获取访问密钥,配置邮件参数,编写测试代码,调试和测试,查看发送日志,以及优化改进邮件发送功能,确保其稳定运行。
|
3天前
|
测试技术 API 网络架构
Python的api自动化测试 编写测试用例
【4月更文挑战第18天】使用Python进行API自动化测试,可以结合`requests`库发送HTTP请求和`unittest`(或`pytest`)编写测试用例。以下示例: 1. 安装必要库:`pip install requests unittest` 2. 创建`test_api.py`,导入库,定义基础URL。 3. 创建继承自`unittest.TestCase`的测试类,包含`setUp`和`tearDown`方法。 4. 编写测试用例,如`test_get_users`,检查响应状态码和内容。 5. 运行测试:`python -m unittest test_api.py`
12 2
|
3天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
9 3
|
3天前
|
人工智能 API 开发者
【AI大模型应用开发】0.2 智谱AI API接入详细步骤和简单应用
【AI大模型应用开发】0.2 智谱AI API接入详细步骤和简单应用
12 0
|
4天前
|
API PHP 数据安全/隐私保护
IMAP邮箱API接收收取邮件的方法和步骤
IMAP邮箱API是用于自动接收和管理邮件的接口,允许程序无须手动登录即可操作邮件。要使用它,需先配置邮箱允许API访问,选择如Python的imaplib或PHP的imap扩展等IMAP库,然后连接到邮箱服务器,接收和处理邮件。处理完毕后断开连接。AokSend提供高效发信服务,支持SMTP/API接口。使用IMAP API能提升邮件管理效率。
|
4天前
|
API 网络安全 数据安全/隐私保护
SMTP邮件邮箱API发送邮件的方法和步骤
使用SMTP邮件邮箱API(如AokSend)发送邮件涉及6个步骤:获取SMTP服务器地址和端口,进行身份验证,构建邮件内容,连接到服务器,发送邮件及处理结果。例如,Gmail的SMTP服务器地址是smtp.gmail.com,端口587。此方法适用于程序化发送邮件,确保安全并支持大规模发信服务。

热门文章

最新文章