【Web API 】渗透测试指南

news/2024/11/13 14:47:29/文章来源:https://www.cnblogs.com/o-O-oO/p/18352638
一、概述1.1 API的基本概念1.2 API的作用1.3 API的类型二、Web API 渗透测试2.1 测试工具2.2 信息收集2.2.1 目录扫描2.2.2 网络流量分析2.2.3 使用互联网资源2.3 漏洞检测2.4 实战案例2.4.1 接口枚举2.4.2 参数枚举2.4.3 用户名枚举2.4.4 暴力破解2.4.5 错误信息泄露2.4.6 CRLF注入

一、概述

API(Application Programming Interface,应用程序编程接口)是一个允许不同软件应用程序之间进行通信和数据交换的接口。API定义了一组规则和协议,软件开发者可以使用这些规则和协议来访问操作系统、库、服务或其他应用程序的功能。

1.1 API的基本概念

接口(Interface):

API提供了一组公开的方法和端点,供外部系统调用。这些方法和端点通常通过URL、函数名或服务名称来表示。

请求和响应(Request and Response):

客户端向API发送请求,请求中包含所需的操作和相关数据。服务器处理请求并返回响应,响应中包含操作结果和数据。

协议(Protocol):

API使用特定的协议来通信,常见的协议包括HTTP、HTTPS、FTP等。例如,基于HTTP协议的API通过HTTP请求和响应进行通信。

数据格式(Data Format):

API请求和响应的数据通常以标准格式表示,常见的格式包括JSON、XML、CSV等。JSON是最常用的数据格式,因为它轻量级且易于解析。

1.2 API 的作用

数据访问:

提供一种访问应用程序或服务中数据的方式。例如,数据库API允许应用程序访问和操作数据库中的数据。

功能调用:

允许应用程序调用另一程序的功能或服务。例如,支付API允许应用程序集成支付功能。

系统集成:

实现不同系统或服务之间的集成和互操作。例如,社交媒体API允许应用程序发布内容到社交媒体平台。

1.3 API 的类型

Web API:

通过HTTP协议进行通信的API,常用于Web服务和应用程序。例如,RESTful API、GraphQL API。

库和框架API:

提供特定编程语言或框架功能的API,供开发者在应用程序中使用。例如,Java API、Python标准库。

操作系统API:

提供操作系统功能访问的API。例如,Windows API、POSIX API。

远程API:

允许在网络上远程访问服务的API。例如,SOAP API、XML-RPC API。



二、Web API 渗透测试

2.1 测试工具

拦截数据包:Burp Suite等构造API请求:Postman、Apifox、Apipost等扫描工具:Owasp Zap、Awvs、Xray等

2.2 信息收集

信息收集是 Web API 渗透测试的重要步骤,无论是黑盒测试还是白盒测试,都需要系统地收集相关信息。在白盒测试中,测试人员可以直接获取API文档和代码等详细信息。在黑盒测试中,测试人员无法直接获取API文档,代码等资源,只能从外部自行收集。

以下是API信息收集的方法:

2.2.1 目录扫描

大多数Web API位于网站/api/、/v1/api/、/v2/api/等目录中,通过目录扫描可以发现使用Burp Suite主动扫描和被动扫描也不错使用Xray被动扫描也不错

2.2.2 网络流量分析

有些系统的API和Web应用的端口是独立的,但是只要有交互通过分析流量就可以获取API接口,如Burp Proxy组件记录、浏览器开发者工具网络组件有些API会写在经过混淆后的Javascript文件中,无法直接获取,可以使用此方法

2.2.3 使用互联网资源

通过Github查询开源系统是否存在API及API目录和文档等通过Google、Shodan、Censys、Fofa等搜索引擎搜索

收集到API接口信息后,可以分析API的目录结构、接口命名规则、参数命名规则、功能和业务逻辑等,根据这些信息可以进行接口枚举和参数枚举。

2.3 漏洞检测

其实针对Web API的渗透测试和Web应用的渗透测试差不多,不过通常API的功能可能没有Web应用那么多,涉及的测试项较少:




2.4 实战案例

2.4.1 接口枚举:

根据响应状态或响应提示判断存在的接口和不存在的接口:

2.4.2 参数枚举:

根据响应提示判断参数是否存在。

如参数不存在时响应

参数存在时响应

2.4.3 用户名枚举:

用户名不存在时响应:

用户名存在时响应:

2.4.4 暴力破解:

2.4.5 错误信息泄露:

错误信息中包含物理路径、后端语言、CMS等信息:

2.4.6 CRLF注入:

参数添加到了响应头:

利用CRLF注入进行XSS攻击:

原创 Hack All Sec

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/781427.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

栈和队列part02

今天学习了队列的常见题型:滑动窗口最大值,先进先出不难想到队列,最大值可以考虑优先队列,但是此题还是典型的单调队列(需要自己实现) 前k个高频元素,维护最大值常用优先队列,注意选的最小堆7. 239滑动窗口最大值(队列) 题目:给你一个整数数组 nums,有一个大小为 k…

栈和队列part03

今天学习了队列的常见题型:滑动窗口最大值,先进先出不难想到队列,最大值可以考虑优先队列,但是此题还是典型的单调队列(需要自己实现) 前k个高频元素,维护最大值常用优先队列,注意选的最小堆7. 239滑动窗口最大值(队列) 题目:给你一个整数数组 nums,有一个大小为 k…

【1.0版】【MYSQL安全】导入导出相关操作

主题 导入导出相关操作一、load_file()二、into outfile一、load_file() load_file(file_name):读取文件并返回该文件的内容作为一个字符串使用条件:A、 必须有权限读取并且文件必须完全可读 and (select count() from mysql.user)>0 #如果结果返回正常,说明具有读写权限。…

栈和队列part01

今天学习了栈和队列的第一部分。基础知识 用栈模拟队列(双栈) 用队列模拟栈(一个队列,但是需要重复将队头元素写到队尾) 栈的基本应用(括号匹配、删除重复项、逆波兰表达式)1. 基础知识栈和队列是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(…

2-梯度下降算法

梯度下降算法只能保证找到的是局部最优,不是全局最优平常我们经过大量实验,发现局部最优点不是很多,所以可以使用梯度下降算法。 但是还要提防鞍点下面进行实现梯度下降算法点击查看代码 import numpy as np import matplotlib.pyplot as pltx_data = [1.0, 2.0, 3.0] y_dat…

5.Java方法

什么是方法Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合。 方法包含于类或对象中。 方法在程序中被创建,在其他地方被调用。设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的…

Maven的概述及基本使用示例详解

一、Maven简介Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档 官网:http://maven.apache.org/项目对象模型(Project Object Model) 依赖管理模型(Dependency) 插件(Plugin)1.1、Maven概述Mav…

l洛谷 P7870 兔已着陆——题解

洛谷P7870题解传送锚点摸鱼环节 「Wdoi-4」兔已着陆 题目背景 铃瑚和清兰是从月之都到达幻想乡的两只月兔。正因为降落到了幻想乡进行调查,因此她们通过开团子屋制作团子出售的方式,在幻想乡生活。 为了应对越发繁荣的市场,她们向河城荷取购置了一台团子机器,可以高效地生产…

038.Vue3入门,使用keep-alive让组件保持存活

1、App.vue代码如下:<template><button @click="change">切换组件</button><p></p><keep-alive><component :is="tabComponent"></component></keep-alive> </template><script> impo…

铂繁达:如何提升自身能力以更好开展互联网项目

互联网上有很多副业项目可供选择,但为何有些人无法从中获利呢?关键在于执行力,且不同的在线机遇往往需要不同的技能和知识储备。在挑选和选择这些机会时,我们应当首先确保自己拥有所需的技能或具备学习与提升这些技能的意愿。现下大家对副业的需求越来越大。确实,互联网上…