API 接口渗透测试

news2024/9/20 4:54:35

1 API 接口介绍

1.1 RPC(远程过程调用)

远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用,例:Java RMI。

RPC 一般直接使用 TCP 协议进行通信,通常不涉及到 HTTP。HTTP 下面有2种技术:

  • XML-RPC(https://zh.wikipedia.org/wiki/XML-RPC)
  • JSON-RPC(https://zh.wikipedia.org/wiki/JSON-RPC)

Web service 和 RESTful API 都可算作远程过程调用的子集。

1.2 Web Service

Web Service 是一种服务导向架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。

根据 W3C 的定义,Web 服务(Web service)应当是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是许多应用程序接口(API)所组成的,它们透过网络,例如国际互联网(Internet)的远程服务器端,执行客户所提交服务的请求。

尽管W3C的定义涵盖诸多相异且无法介分的系统,不过通常我们指有关于主从式架构(Client-server)之间根据 SOAP 协议进行传递 XML 格式消息。无论定义还是实现,Web 服务过程中会由服务器提供一个机器可读的描述(通常基于WSDL)以辨识服务器所提供的 Web 服务。另外,虽然 WSDL 不是 SOAP 服务端点的必要条件,但目前基于Java 的主流 Web 服务开发框架往往需要 WSDL 实现客户端的源代码生成。一些工业标准化组织,比如 WS-I,就在 Web 服务定义中强制包含 SOAP 和 WSDL。

Web Service 是一种比较“重”和“老”的 Web 接口技术,目前大部分应用于金融机构的历史应用和比较老的应用中。

1.3 RESTful API

REST,全称是 Resource Representational State Transfer,通俗来讲就是,资源在网络中以某种表现形式进行状态转移。分解开来:

  • Resource:资源,即数据(前面说过网络的核心)。比如 newsfeed,friends等;
  • Representational:某种表现形式,比如用JSON,XML,JPEG等;
  • State Transfer:状态变化。通过HTTP动词实现。

RESTful API 就是符合 REST 风格的 API,传递数据也是2种形式:

  • XML,少见
  • json,常见,现在 Web 应用基本使用这种形式的 API。

1.4 MVC、MVP、MVVM

Web 应用程序和 APP 应用程序的 API 跟目前的流行框架和模式相关,主要有3种模式:MVC、MVP、MVVM。

MVC 将整个应用分成 Model、View 和 Controller 三个部分,而这些组成部分其实也有着几乎相同的职责。

  • 视图:管理作为位图展示到屏幕上的图形和文字输出;
  • 控制器:翻译用户的输入并依照用户的输入操作模型和视图;
  • 模型:管理应用的行为和数据,响应数据请求(经常来自视图)和更新状态的指令(经常来自控制器);

此类模式和架构的应用越来越多导致 API 接口的应用也越来越流行。想了解更多可以在网上查找相关资料。

2 API 测试环境和测试工具

2.1 Web Service 测试

2.1.1 找 Webservice 接口

  • Google hacking
    • inurl:jws?wsdl
    • inurl:asmx?wsdl
    • inurl:aspx?wsdl
    • inurl:ascx?wsdl
    • inurl:ashx?wsdl
    • inurl:dll?wsdl
    • inurl:exe?wsdl
    • inurl:php?wsdl
    • inurl:pl?wsdl
    • inurl:?wsdl
    • filetype:jws
    • filetype:asmx
    • filetype:ascx
    • filetype:aspx
    • filetype:ashx
    • filetype:dll
    • filetype:exe
    • filetype:php
    • filetype:pl
    • filetype:wsdl wsdl
  • fuzzing
  • 爬虫

2.1.2 测试工具

涉及主要工具:

  • Soap UI PRO,渗透测试流程的发起,通信报文的解析、集合payload之后通信报文的重新组装等,14天试用,可以做自动化测试。
  • SoapUI Free,手工测试
  • SOAPSonar,SOAP UI 的替代。
  • Burp Suite,代理拦截,跟踪通信过程和结果,对通信进行重放和二次处理等。
  • WSSAT
  • WS-Attacker

### 2.1.3 测试项目

  • Fuzzing
  • XSS /SQLi/ Malformed XML
  • File Upload
  • Xpath Injection
  • XML Bomb (DoS)
  • Authentication based attacks
  • Replay attacks
  • Session fixation
  • XML Signature wrapping
  • Session timeout
  • Host Cipher Support/ Valid Certificate/ Protocol Support
  • Hashing Algorithm Support

2.1.4 手工测试方法

主要使用 Soap UI Open Source,有安全测试Case,需要配置 SOAP 代理到 Burp,数据流,现在的版本是5.4.0。

代理配置

可以用 Burp 重放 SOAP 的探测 Payload。

使用 Soap UI Open Source,测试步骤:

  1. 创建工作空间
  2. 新建 SOAP 项目
  3. 增加 WSDL,配置名称和 WSDL 链接
  4. 选择要测试的 TestSuite,增加一个安全测试

  1. 选择测试的类型,运行测试

2.1.5 自动化测试

SOAP 配置,2步,“File”-“Preference”-“Proxy”,设置 Burp 代理

直接在 Soup UI 主菜单上选择运行一个测试。

在弹出窗口中输入 WSDL 地址。

SUAP UI 会自动探测接口。然后在项目-测试Case的右键菜单中选择安全测试

运行安全测试。

Burp 代理会捕获所有的测试请求

其他工具介绍

WSSAT,选择加载存在 WSDL 列表的文件,运行。

WS-Attacker

AWVS 的扫描也能直接测试 Web Service

2.2 RESTful API 测试

2.2.1 测试工具

  • 常见的浏览器插件
    • Chrome Restlet Client

- Firefox RESTClient

  • 客户端工具
    • Postman

- Swagger

通常使用 Postman 的情况多些,有机会的话问下开发如何配置测试环境,直接配置一套一样的。

Postman 的代理配置:

3 常见 API 相关漏洞和测试方法

还是主要以 Restful API 说明。

3.1 逻辑越权类

本质上可以说是不安全的直接对象引用,可以通过修改可猜测的参数获取不同参数下的响应结果。参数可以是用户名、用户 ID,连续的数字,变形的连续数字(各种编码或哈希),通过直接修改参数值完成越权的操作。

示例:

  • https://wooyun.shuimugan.com/bug/view?bug_no=189225
  • https://wooyun.shuimugan.com/bug/view?bug_no=150462
  • https://wooyun.shuimugan.com/bug/view?bug_no=140374
  • https://wooyun.shuimugan.com/bug/view?bug_no=106709

3.2 输入控制类

XXE,Restful API 的注入漏洞,XSS,溢出,特殊字符的处理。

示例:

  • https://wooyun.shuimugan.com/bug/view?bug_no=211103
  • https://wooyun.shuimugan.com/bug/view?bug_no=132270
  • https://wooyun.shuimugan.com/bug/view?bug_no=8714

3.3 接口滥用

没有请求频率限制导致的各种爆破和遍历,如短信验证码爆破、登录爆破、手机号遍历、身份证遍历等。

示例:

  • https://wooyun.shuimugan.com/bug/view?bug_no=141419
  • https://wooyun.shuimugan.com/bug/view?bug_no=66571
  • https://wooyun.shuimugan.com/bug/view?bug_no=36058
  • https://wooyun.shuimugan.com/bug/view?bug_no=147334

3.4 信息泄露

包括越权导致的信息泄露、畸形请求导致的报错响应。

示例:

  • https://wooyun.shuimugan.com/bug/view?bug_no=171313
  • https://wooyun.shuimugan.com/bug/view?bug_no=160095
  • https://wooyun.shuimugan.com/bug/view?bug_no=127457

3.5 HTTP 响应头控制

关于响应头:

  • 发送 X-Content-Type-Options: nosniff 头。
  • 发送 X-Frame-Options: deny 头。
  • 发送 Content-Security-Policy: default-src 'none' 头。
  • 删除指纹头 - X-Powered-By, Server, X-AspNet-Version 等等。
  • 在响应中强制使用 content-type。

3.6 服务端配置漏洞

如服务端版本信息泄露,或服务端程序本身存在漏洞等。

4 API 安全加固

根据上面讲的测试方法,一般需要做好:

  1. 认证和授权控制
  2. 用户输入控制
  3. 接口请求频率的限制
  4. 输出控制
  5. 添加安全响应头参数

参考 API-Security-Checklist 和历史上的渗透测试结果设计适合自己组织的 API 安全开发规范。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫分析-基于Python的空气质量数据分析与实践

概要 本篇文章利用了Python爬虫技术对空气质量网站的数据进行获取,获取之后把数据生成CSV格式的文件,然后再存入数据库方便保存。再从之前24小时的AQI(空气质量指数)的平均值中进行分析,把数据取出来后,对数据进行数据…

glibc内存管理ptmalloc

1、前言 今天想谈谈ptmalloc如何为应用程序分配释放内存的,基于以下几点原因才聊它: C/C 70%的问题是内存问题。了解一点分配器原理对解决应用程序内存问题肯定有帮助。C也在用ptmalloc. 当你在C中new一个对象时,底层还是依赖glibc中的ptma…

基于SpringBoot精品在线试题库系统

采用技术 基于SpringBoot精品在线试题库系统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringBootMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统功能结构图 学生管理 教师管理 专业管理 试卷管理 …

【阿里魔搭】modelscope包下载安装

最终解决方案:使用源码安装modelscope 这里写目录标题 问题描述:pip安装包冲突安装步骤 问题描述:pip安装包冲突 一开始的是在3.11的虚拟环境下使用命令行pip install "modelscope[nlp]" -f https://modelscope.oss-cn-beijing.al…

基于时空上下文(STC)的运动目标跟踪算法,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

MyBatis:XML操作

👑专栏内容:MyBatis⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、MyBatis XML方式1、配置数据库2、指明XML路径3、写持久层代码 二、基础操作1、新增2、删除3、更新4、查找Ⅰ、开启驼峰命…

权限提升-Web权限提升篇划分获取资产服务后台系统数据库管理相互转移

知识点 1、权限提升转移-分类&高低&场景 2、Web权限提升及转移-后台&数据库 3、后台权限及转移-转移对象&后台分类 章节点: 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及转移 4、域控权限提升及转移 基础点 0、为什么我们要学…

Spring AI Embeddings 和 Vector 入门

在前面 Spring AI Chat 简单示例 中介绍了 Chat 的基本用法,本文在此基础(主要是pom.xml)上继续探索 Embedding 和 Vector。 官方文档: embeddings: https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embedding…

java算法第30天 | ● 332.重新安排行程 ● 51. N皇后 ● 37. 解数独

今天是三道困难题&#xff0c;一刷可以先跳过。 332.重新安排行程 本题的重点是使用Map<String,Map<String,Integer>>存储路径以便递归中根据上一个地点检索接下来的选择。注意&#xff0c;因为要求按字母顺序排列优先级&#xff0c;所以内层的Map要用TreeMap<…

Jupyter Notebook介绍、安装及使用教程

Jupyter Notebook介绍、安装及使用教程 一、什么是Jupyter Notebook&#xff1f;简介组成部分网页应用文档Jupyter Notebook的主要特点 二、安装Jupyter Notebook先试用&#xff0c;再决定安装安装前提使用Anaconda安装使用pip命令安装 三、运行Jupyter Notebook帮助启动默认端…

html5cssjs代码 032 边框属性示例

html5&css&js代码 032 边框属性示例 一、代码二、解释 该HTML文件定义了一个网页页面&#xff0c;主要介绍了HTML5中CSS边框属性的用法。 一、代码 <!DOCTYPE html> <html lang"zh-cn"><head><title>编程笔记 html5&css&j…

图Graph及相关算法(Dijkstra,Kruskal)

目录 无向图 有向图 邻接矩阵 邻接表 图的bfs&#xff0c;dfs 二部图&#xff08;二分图&#xff09; 有向无环图&#xff08;DAG&#xff09; 拓扑排序&#xff08;Topological Sort&#xff09; AOV网 迪杰斯特拉Dijkstra 最小生成树 克鲁斯卡尔&#xff1a;Krus…

回归预测 | Matlab基于SAO-BiLSTM雪融算法优化双向长短期记忆神经网络的数据多输入单输出回归预测

回归预测 | Matlab基于SAO-BiLSTM雪融算法优化双向长短期记忆神经网络的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SAO-BiLSTM雪融算法优化双向长短期记忆神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SAO-B…

Linux系统——Mysql索引补充知识

目录 一、索引介绍 1.索引的优点 2.索引的分类 3.索引的技术名词 3.1回表 3.2覆盖索引 3.3最左匹配 3.4索引下推 4.索引匹配方式 4.1全值匹配 4.2最左前缀匹配 4.3匹配列前缀 4.4匹配一个范围值 4.5精确匹配某一列并范围匹配另一列 4.6只访问索引的查询 一、索引…

银行OA系统|基于SpringBoot架构+ Mysql+Java+ B/S结构的银行OA系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

【Charles如何对手机APP进行抓包和弱网测试】

一、Charles对APP抓包 1、前提条件&#xff1a; 1&#xff09;电脑上必须安装Charles工具&#xff0c;如没有安装可参考&#xff1a;【Charles抓包工具下载安装详细操作步骤】-CSDN博客 2&#xff09;手机和电脑必须在同一个局域网内&#xff08;连接同一个WiFi&#xff09;…

Linux信号补充——信号捕捉处理

一、信号的捕捉处理 ​ 信号保存后会在合适的时间进行处理&#xff1b; 1.1信号处理时间 ​ 进程会在操作系统的调度下处理信号&#xff0c;操作系统只管发信号&#xff0c;即信号处理是由进程完成的&#xff1b; ​ 1.信号处理首先进程得检查是否有信号&#xff1b;2.进程…

异地组网需求如何实现?

在当今信息化时代&#xff0c;越来越多的企业和个人在不同地区之间需要进行远程通信和数据传输。由于网络环境的差异和网络隔离等原因&#xff0c;异地组网的需求愈发迫切。本文将介绍一款名为【天联】的异地组网内网穿透产品&#xff0c;它的出现有效解决了不同地区间电脑、设…

基于Arduino IDE 野火ESP8266模块WIiFi开发

一、函数介绍 头文件 #include <ESP8266WiFi.h> #include <ESP8266WiFiMulti.h>ESP8266WiFi.h库主要用于连接单个WiFi网络。如果需要连接到多个WiFi网络&#xff0c;例如在需要切换不同网络或者备用网络时&#xff0c;可以使用ESP8266WiFiMulti.h头文件&#xff…

供应链投毒预警 | 恶意Py组件tohoku-tus-iot-automation开展窃密木马投毒攻击

概述 上周&#xff08;2024年3月6号&#xff09;&#xff0c;悬镜供应链安全情报中心在Pypi官方仓库&#xff08;https://pypi.org/&#xff09;中捕获1起新的Py包投毒事件&#xff0c;Python组件tohoku-tus-iot-automation 从3月6号开始连续发布6个不同版本恶意包&#xff0c…