接口测试系列之 —— 接口安全测试

“开源 Web 应用安全项目”(OWASP)在 2019 年发布了 API 十大安全风险 《OWASP API 安全 Top10》:失效的对象级别授权、失效的用户身份验证、过 度的数据暴露、资源缺乏和速率限制、失效的功能级授权、批量分配、安全配置 错误、注入、资产管理不当、日志和监视不足位列其中。我们以此为依据对 API十大安全风险进行介绍。

失效的对象级别授权

失效的对象级别授权是指:用户与服务器使用 API 进行通信时,服务器端未 进行对象级别的权限控制或限制不严格。攻击者可以通过修改请求数据中的对象ID 等信息,实现未授权获取或修改敏感信息。

案例:在使用某个功能时通过用户提交的对象 ID(如订单号、记录号)来 访问或操作对应的数据,且未进行严格的权限限制

如下图所示,正常订单查询请求:

如下图所示,使用 burpsuite 对 oid 参数进行遍历,尝试越权访问他人订单 详情,可以看到成功查看到了他人订单信息:

失效的用户身份验证

失效的用户身份验证是指:API 在访问时未对请求方进行身份验证或身份验证存在问题导致易被破解,那么攻击者可以实现未授权对 API 进行操作。

案例:

1. 未校验令牌的有效性;

2. 更新密码接口未限制请求频率,旧密码参数可暴力破解;
3. 短信验证码或者邮箱验证码有效期超出 10 分钟或者长度小于 6 位。

过度的数据暴露

发生过度数据暴露的主要原因之一是,开发人员和编码人员对他们的应用程 序将使用的数据种类没有足够的洞察力。正因为如此,开发人员倾向于利用通用 流程,在这种流程中,所有的对象属性都暴露给最终用户。

例如:

利用过度暴露的数据十分容易,通常通过嗅探流量分析 API 的响应获取不应 该返回给用户的多余敏感信息。

防御:

  1. 不要依赖客户端来过滤敏感数据;

  2. 检查 API 的响应,确认其中仅包含合法数据;

  3. 停止用通用 API 向用户发送一切的过程也很重要。例如,必须避免将所有信息直接执行 to_json()和 to_string(),然后发送给客户端。应该专门挑选需要 返回给授权用户的属性,并专门发送这些信息;

  4. 对于敏感数据应使用加密技术进行保护。这样,即使该数据的位置作为 过度数据暴露漏洞的一部分被泄露出去,也有一个良好的第二道防线,即使数据 落入恶意用户或威胁行为者手中,也能保护数据。

资源缺乏和速率限制

随着资源的缺乏和速率的限制,每个 API 都有有限的资源和计算能力,这取 决于它的环境。大多数还需要处理来自用户或其他程序的请求,要求它执行所需 的功能。当有太多的请求同时进来,而 API 没有足够的计算资源来处理这些请求 时,就会出现这种漏洞。然后,API 可能变得不可用或对新的请求没有反应。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036【暗号:csdn999】

如果 API 的速率或资源限制没有被正确设置,或者限制没有在代码中被定义, 那么 API 就很容易出现这个问题。

具体案例如下图所示:

上述代码没有进行限制,我们可以通过短时间大量无限请求/api/users 访问 所有的用户,造成其他客户端请求无法相应的问题。

修改后:

API 将限制匿名用户每小时发出 200 次请求,已经被系统审核过的已知用户 会有更大的回旋余地,每小时有 5000 个请求,但即使是他们也受到限制,以防 止在高峰期意外超载,或者在用户账户被泄露并被用于拒绝服务攻击时进行补偿。

对用户调用 API 的频率执行明确的时间窗口限制,定义并强制验证所有传入 参数和有效负荷的最大数据量,例如字符串的最大长度和数组中元素的最大数 量。在突破限制时通知客户,并提供限制数量及限制重置的时间。

失效的功能级授权

失效的功能级授权漏洞允许用户执行应该被限制的功能,或者让他们访问应 该被保护的资源。

如下图所示,攻击者为站点普通用户权限,通过经验对站点可能存在的管理 功能 URL 进行猜测,多次尝试之后发现本应无权访问的 admin_statuspage 页面可 以访问成功:

如下图所示攻击者为站点普通权限用户,站点使用已知框架,攻击者查阅新 建管理用户功能需发送的数据包详情,并构造数据包进行发送,发现可以新建用户成功。

防止这种 API 漏洞尤其重要,因为攻击者不难找到结构化 API 中未受保护的 函数,因此所有业务层面的功能都必须使用基于角色的授权方法进行保护。一定 要在服务器上实现授权,不能试图从客户端保证功能的安全。在创建功能和资源 级别时,用户应该只被赋予做它们需要的事情的权限,实践最小权限的方法。

批量分配

后端应用对象可能包含许多属性,其中一些属性可以由客户端直接更新(如,user.firstname 或 user.address),而某些属性则不应该更新(如,user.isvip 标志)。

案例:

一个乘车共享应用程序为用户提供了编辑个人资料基本信息的选项。用户可 以更新“user_name”、“age”两个参数。

PUT /api/v1/users/me
{"user_name":"inons","age":24}
发现/api/v1/users/me 接口返回一个附加“credit_balance”参数:

GET/api/v1/users/me {"user_name":"inons","age":24,"credit_balance":10}

攻击者构造报文,重放第一个请求:

PUT/api/v1/users/me {"user_name":"attacker","age":60,"credit_balance":99999}

攻击者无需支付即可篡改自己的信用值。

如何防止:

1. 如果可能,请避免使用将客户输入自动绑定到代码变量或内部对象中的函数;2. 仅将客户端可更新的属性列入白名单;
3. 使用内置功能将客户端不应访问的属性列入黑名单;
4. 如果可能,为输入数据有效负载准确、明显的定义和实施 schema 格式。

安全配置错误

概述:

安全配置错误可以发生在一个应用程序堆栈的任何层面,包括平台、Web服务器、应用服务器、数据库、框架和自定义代码。

案例:

比如攻击者在服务器的根目录下找到.bash_history 文件, 该文件包含DevOps 团队用于访问 API 的命令:

$ curl -X GET 'https://api.server/endpoint/' -H 'authorization: Basic Zm9vOmJhcg==', 攻击者可由此命令获取权限认证信息(Zm9vOmJhcg== base64 解码:foo:bar)以 及接口信息。

注入

概述:

服务端未对客户端提供的数据进行验证、过滤或净化,数据直接使用或者拼 接到 SQL/NoSQL/LDAP 查询语句、 OS 命令、XML 解释器和 ORM(对象关系映射 器)/ODM(对象文档映射器)中,产生注入类攻击。

案例:
判断服务端是否支持 XML 解析,如果支持,可以尝试 XML 注入。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Anything [
<!ENTITY entityex SYSTEM "file:///etc/passwd">
]>
<abc>&entityex;</abc>
API 未对来自外部系统(如,集成系统)的数据进行验证、过滤或净化。

资产管理不当

不当的资产管理缺陷是现代的产物,以业务速度前进的组织有时每天都能旋 转出成百上千的服务和微服务。这通常是快速完成的,而且没有创建任何的附带 文档,也没有解释相关的 API 是用来做什么的,需要多长时间或其重要性。这可 能会快速产生 API 蔓延,随着时间的推移可能会变得无法控制,特别是如果没有 全面的政策来定义 API 可以存在多久。这种环境下,很有可能一些 API 会丢失、 被遗忘或者未销毁。

这就导致了如果资产管理不当会直接导致攻击者可以访问敏感数据,甚至可 以通过旧的、未打补丁的 API 版本连接到同一数据库。

如何消除不当的资产管理缺陷:应该做到对所有的 API、他们的用途和版本 进行严格的盘点。主要关注因素包括,部署到什么环境中,如生产或开发,谁应 该对它们有网络访问权限、收集和处理哪些数据,是常规数据还是敏感数据、API

的存活时间、当然还有它们的版本。一旦完成,需要实施一个流程,将文档添加 到任何新创建的 API 或服务中。这应该包括 API 的所有方面,包括速率限制、如 何请求和相应、资源共享、可以连接到哪些端点、以及它任何以后需要审计的内 容,还需要避免在生产中使用非生产 API,考虑给 API 增加一个时间限制等。

日志和监视不足

如果没有日志和监视,或者日志和监视不足,就会导致无法及时发现攻击者 的恶意活动,同时也就无法快速定位跟踪可疑活动并作出及时响应,给攻击者留 有足够的时间来破坏系统。

API 的脆弱项:

  1. 没有生成任何日志、日志级别没有正确设置、或日志消息缺失足够的细 节信息;

  2. 不能保证日志的完整性;

  3. 没有对日志进行持续监视;

  4. API 基础设施没有被持续监视。

建议:
1. 应该有一个记录各种认证和授权事件的系统,比如登陆失败、暴力攻击、访问敏感数据等;

2. 必须建立有效的监测和警报系统,此系统能够发现可疑活动并作出及时反应;

3. 日志应保证有足够的详细信息记录攻击者的行为,识别恶意活动;
4. 如果出现问题,必须通知相关团队。5.必须采用行业标准制定事故相应和恢复计划。

END点赞关注不迷路! 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

6. hdfs的命令操作

简介 本文主要介绍hdfs通过命令行操作文件 操作文件有几种方式&#xff0c;看个人习惯 hdfs dfs hdfs fs hadoop fs个人习惯使用 hadoop fs 可操作任何对象&#xff0c;命令基本上跟linux命令一样 Usage [hadoophadoop01 ~]$ hadoop fs Usage: hadoop fs [generic option…

hcia学习:

视频学习&#xff1a; 第一部分&#xff1a;基础学习。 19——子网掩码。

Netty中粘包拆包问题解决探讨

⭐️ 前言 开发的小伙伴们对于Netty并不陌生&#xff0c;本文就Netty粘包拆包问题及其解决方案做一个介绍&#xff0c;希望能对大家有所帮助。 ⭐️ 什么是粘包拆包问题 我们知道&#xff0c;传统的IO是面向流的&#xff0c;而Netty&#xff08;它的底层是Java NIO&#xf…

2023解析企业数据中台:突破数据孤岛,实现数据化管理升级-亿发

当前&#xff0c;各大企业纷纷将业务中台、数据中台、安全中台等纳入建设计划&#xff0c;其中&#xff0c;数据中台被视为重中之重。但是&#xff0c;对于初接触者而言&#xff0c;对数据中台的定义可能存在一些模糊。 下面我们将讨论和讲解对企业建设数据中台的3点建议&#…

字节跳动小程序开发:探索创新的数字化世界

在数字化时代&#xff0c;字节跳动小程序开发成为企业数字化转型的关键一环。通过这一平台&#xff0c;企业能够借助先进的技术和丰富的功能&#xff0c;实现创新、引领市场潮流。本文将通过一些简单的技术代码示例&#xff0c;带你深入了解字节跳动小程序开发的魅力。 1. 小…

浙大恩特客户资源管理系统CustomerAction.entphone;.js 接口任意文件上传漏洞复现 [附POC]

文章目录 浙大恩特客户资源管理系统CustomerAction.entphone;.js 接口任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 浙大恩特客户资源管理系统CustomerAction.entphone;.js 接口任…

PostgreSQL 数据定义语言 DDL

文章目录 表创建主键约束非空唯一约束检查约束外键约束默认值约束 触发器表空间构建表空间 视图索引索引的基本概念索引的分类创建索引 物化视图 表创建 PostgreSQL表的构建语句与所有数据库都一样&#xff0c;结构如下&#xff0c;其核心在于构建表时&#xff0c;要指定上一些…

消除“数据烟囱”,瓴羊港如何打破壁垒将多数据融通成大数据?

作为数字经济时代的“新石油”&#xff0c;数据已成为重要的生产要素。阿里巴巴副总裁、瓴羊CEO朋新宇认为&#xff0c;目前正处在数据流通变革的时代&#xff0c;其中最核心的问题是如何破解数实融合发展的堵点。数据流通中最重要的原则是&#xff0c;不流通无价值&#xff0c…

Docker安装MinIO遇到的问题汇总——持续更新中

文章目录 Docker安装MinIO遇到的坑前言问题1&#xff1a;执行docker run报错Error response from daemon问题2&#xff1a;启动MinIO容器浏览器无法访问问题3&#xff1a;上传文件报错InvalidResponseException问题4&#xff1a;上传文件报错Connection refused最终的启动指令问…

O2OA(翱途)开发平台 V8.2即将发布,更安全、更高效、更开放

尊敬的O2OA(翱途)平台合作伙伴、用户以及亲爱的开发小伙伴们&#xff0c;平台新的版本就要发布啦&#xff01; 上次8.1的发布是在9月1日&#xff0c;又过去两个多月&#xff0c;O2OA研发团队始终踏踏实实地做好产品的研发及优化工作&#xff0c;只为给客户带去更好的服务和产品…

Pixhawk+PX4+VRPN +NOKOV无人机飞控平台动捕数据传输

NOKOV度量动作捕捉系统可以很好的适配PX4无人机飞控平台。进行数据通信的时候&#xff0c;使用SDK或者VRPN的方式都是可以的。本文演示NOKOV度量动作捕捉系统通过VRPN与PX4平台进行数据传输的方法。 一、硬件准备 1、准备无人机 这里准备的无人机&#xff0c;飞控版是Pixhaw…

torch - FloatTensor标签(boolean)数值转换(1/0)

当我们数据集的标签为True/False的boolean型时&#xff0c;我们可以直接使用FloatTensor传入该标签。返回的数据为tensor([0.])或者tensor([1.])&#xff0c;这十分有利于二分类任务的预测标签对错判断。 这个用法是基于Python的布尔类型与整数之间的隐式类型转换。在Python中&…

企业数字化过程中数据仓库与商业智能的目标

当前环境下&#xff0c;各领域企业通过数字化相关的一切技术&#xff0c;以数据为基础、以用户为核心&#xff0c;创建一种新的&#xff0c;或对现有商业模式进行重塑就是数字化转型。这种数字化转型给企业带来的效果就像是一次重构&#xff0c;会对企业的业务流程、思维文化、…

μC/OS-II---消息邮箱管理1(os_mbox.c)

目录 消息邮箱创建消息邮箱删除等待邮箱中的消息向邮箱发送一则消息 消息邮箱创建 OS_EVENT *OSMboxCreate (void *pmsg) {OS_EVENT *pevent; #if OS_CRITICAL_METHOD 3u /* Allocate storage for CPU status register */OS_CPU_SR cpu_sr …

2023年软件安装管家目录最新

软件目录 ①【电脑办公】电脑系统&#xff08;直接安装&#xff09;Win7Win8Win10OfficeOffice激活office2003office2007office2010office2013office2016office2019office365office2021wps2021Projectproject2007project2010project2016project2019project2013project2021Visio…

VS+Qt+C++ Yolov8物体识别窗体程序onnx模型

程序示例精选 VSQtC Yolov8物体识别窗体程序onnx模型 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《VSQtC Yolov8物体识别窗体程序onnx模型》编写代码&#xff0c;代码整洁&#xff0c;规…

分布式事务seata的使用

分布式事务介绍 在微服务架构中&#xff0c;完成某一个业务功能可能需要横跨多个服务&#xff0c;操作多个数据库。这就涉及到到了分布式事务&#xff0c;需要操作的资源位于多个资源服务器上&#xff0c;而应用需要保证对于多个资源服务器的数据操作&#xff0c;要么全部成功&…

37 关于 undo 日志

前言 undo 和 redo 是在 mysql 中 事务, 或者 异常恢复 的场景下面 经常会看到的两个概念 这里 来看一下 undo, undo 主要是用于 事务回滚 的场景下面 测试表结构如下 CREATE TABLE tz_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,field1 varchar(128) DEFAULT NUL…

【容器化】Kubernetes(k8s)

文章目录 概述Docker 的管理痛点什么是 K8s云架构 & 云原生 架构核心组件K8s 的服务注册与发现组件调用流程部署单机版部署主从版本Operator来源拓展阅读 概述 Docker 虽好用&#xff0c;但面对强大的集群&#xff0c;成千上万的容器&#xff0c;突然感觉不香了。 这时候就…