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

news2024/12/26 3:17:55

“开源 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点赞关注不迷路! 

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

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

相关文章

百家网约车平台发布“阳光五条” 多举措加强司机保障

11月17日&#xff0c;免佣联盟百家网约车平台发布“阳光五条”&#xff0c;通过加大免佣力度、实行车费保镖司机版、72小时保护期等措施&#xff0c;加强对网约车司机的权益保障。 近年&#xff0c;交通运输部推动交通运输新业态平台企业落实“阳光行动”等工作&#xff0c;加…

图像分类系列(三) GoogLeNet InceptionV1学习详细记录

前言 ​ 在上一期中介绍了VGG&#xff0c;VGG在2014年ImageNet 中获得了定位任务第1名和分类任务第2名的好成绩&#xff0c;而今天要介绍的就是同年分类任务的第一名——GoogLeNet 。 ​ 作为2014年ImageNet比赛冠军&#xff0c;GoogLeNet 比VGG更深的网络&#xff0c;比Alex…

11月17日,国家大基金三期隆重开启,共同见证芯片产业新时代!

11月17日&#xff0c;国家大基金三期隆重开启&#xff0c;共同见证芯片产业新时代&#xff01; 自国家大基金二期于2019年10月注册成立以来&#xff0c;一直积极响应国家战略和新兴行业发展规划&#xff0c;对设计创新行业的投资加大规模&#xff0c;比如智能汽车、智能电网、人…

初识Linux:目录的创建销毁

目录 ​编辑 提示&#xff1a;以下指令均在Xshell 7 中进行 零、桌面的本质 &#x1f4bb; 扩展&#x1f387;&#xff1a; 一、cd指令&#xff1a; 1、cd - &#xff1a; 2、cd ~&#xff1a; 重命名命令&#xff1a;alias 二、stat指令 冷知识&#xff1a; 如果…

如何在工作外发展副业?主业和副业该如何权衡

有一句话说得好&#xff0c;不要把所有的鸡蛋放在一个篮子里。在面对繁忙的工作生活之外&#xff0c;想要拥有额外的收入来源那就是做一份不影响主业的副业。而副业的发展&#xff0c;不仅能够增加收入&#xff0c;更可以拓展个人的技能和兴趣。 主业跟副业该如何权衡呢&#x…

时间序列预测(6) — ARIMA实现单输入单输出负荷预测

目录 1 数据准备与可视化 2 简单数据探索与清洗 3 差分处理 4 绘制ACF与PACF图像&#xff0c;完成模型选择 5 建立ARIMA和SARIMA模型 5.1 初步建模 5.2 精细化建模 5.3 最终的模型 ARIMA作为成熟的统计学模型已被各种软件以各种方式实现&#xff0c;在Python中我们最常使…

服装鞋帽箱包展示预约小程序的效果是什么

市场上售卖服装、鞋帽箱包的品牌店或小店摊贩非常多&#xff0c;同时这些产品又是人们生活的必需品&#xff0c;以前购买服装等纺织产品&#xff0c;消费者习惯前往线下商场或品牌店&#xff0c;但如今更多的消费者习惯于线上购买&#xff0c;传统门店经营面临困境。 通过【雨科…

暖阳脚本_ 定制企业软件开发的4个趋势:AI、RPA、云应用、边缘计算

根据 Statista 的统计数据显示&#xff0c;企业级软件市场在全球范围内占据了领先地位&#xff0c;预测到2028年&#xff0c;市场规模将接近3760亿美元。企业应用软件市场的稳健增长&#xff0c;甚至在经济不景气的时候也能持续&#xff0c;这充分表明软件解决方案对于提升企业…

使用 Redis BitMap 实现签到与查询历史签到以及签到统计功能(SpringBoot环境)

目录 一、前言二、Redis BitMap 位图原理2.1、BitMap 能解决什么2.2、BitMap 存储空间计算2.3、BitMap 存在问题 三、Redis BitMap 操作基本语法和原生实现签到3.1、基本语法3.2、Redis BitMap 实现签到操作指令 四、SpringBoot 使用 Redis BitMap 实现签到与统计功能4.1、代码…

避雷指南:电视盒子哪个牌子最好?最具性价比电视盒子排行榜

电视盒子有些会出现死机和卡顿&#xff0c;广告植入过多&#xff0c;操作复杂等问题&#xff0c;大家在选购时极易踩雷&#xff0c;我身为数码测评员&#xff0c;本期测评的主题是电视盒子哪个牌子最好&#xff0c;购入了市面上最热销的电视盒子对比后整理了最具性价比电视盒子…

ubuntu提高 github下载速度

Github一般用于Git的远程仓库&#xff0c;由于服务器位于国外&#xff0c;国内访问速度比较慢&#xff0c;为了提高访问速度&#xff0c;决定绕过DNS域名解析。 获取Github的IP地址 按下ctrl&#xff0b;alt&#xff0b;T打开命令终端&#xff0c;输入&#xff1a; nslookup gi…

数据治理入门

处理模式 模式名称常见场景常见框架批处理夜间几个小时&#xff0c;无人值守hive spark datax流处理7*24H一直运行&#xff0c;无人值守maxwell, flink, flume, kafka即席处理人机交互接口访问 web页面 数据治理的意义 数据质量低&#xff1a;数据错误&#xff0c;不准确或不…

Gooxi国鑫金秋发布会圆满召开,引领数智新未来

10月24日&#xff0c;主题为“芯加速创鑫局”的2023 Gooxi第四代英特尔至强可扩展处理器平台新品发布会隆重召开&#xff0c;Gooxi重磅发布基于第四代英特尔至强可扩展处理器平台系列新品&#xff0c;Gooxi英特尔平台算力迎来全新升级进化&#xff0c;为AI注入全新发展动力&…

微信小程序相机相册授权后,需要重启客户端才能正常调用相机,无法调起窗口选择图片,无反应解决方案

最近微信小程序很多功能突然不能使用&#xff0c;本篇针对无法调起相册进行说明 解决方案 检查小程序隐私协议是否配置&#xff0c;操作步骤这里不在详细说明&#xff0c;点击教程按照上面的教程&#xff0c;找到入口后点击完善或者更新 选择选中的照片或视频这个权限要申请 之…

牛客机考题编程题输入输出

有时空可以练练这里的题目&#xff1a; https://ac.nowcoder.com/acm/contest/5652 做个总结&#xff0c;其实就两种输入类型&#xff1a; 一种是下面这种&#xff0c;需要对输入的每行进行运算 这种就是循环读取每行的数做一个运算&#xff1a; import sys while True:line …

CodeWhisperer--手把手教你使用一个十分强大的工具

Amazon CodeWhisperer 是一款能够帮助我们智能生成代码的工具。经过数十亿行代码的训练&#xff0c;可以根据提示和现有代码实时生成从片段到完整功能的代码建议。类似 Cursor 和 Github Copilot 编码工具。目前&#xff0c;CodeWhisperer 兼容 Python、Java 和 JavaScript&…

扫码看的视频怎么下载?二维码中的视频怎么保存?

二维码中的视频能设置下载吗&#xff1f;现在很多商家或者企业都会通过制作活码二维码的方式来将展示产品或者企业&#xff0c;当用二维码生成器做二维码时&#xff0c;有什么方法能够让扫码用户可以下载视频观看呢&#xff1f;现在很多的视频二维码只能观看&#xff0c;无法让…

使用Jupyter Notebook调试PySpark程序错误总结

项目场景&#xff1a; 在Ubuntu16.04 hadoop2.6.0 spark2.3.1环境下 简单调试一个PySpark程序&#xff0c;中间遇到的错误总结&#xff08;发现版对应和基础配置很重要&#xff09; 注意&#xff1a;在前提安装配置好 hadoop hive anaconda jupyternotebook spark zo…

MIB 6.1810实验Xv6 and Unix utilities(4)primes

难度: hard/moderate Write a concurrent prime sieve program for xv6 using pipes and the design illustrated in the picture halfway down this page and the surrounding text. This idea is due to Doug McIlroy, inventor of Unix pipes. Your solution should be in …