Azure API 管理缺陷突出了 API 开发中的服务器端请求伪造风险

news2024/11/24 22:42:51

 

微软最近修补了其 Azure API 管理服务中的三个漏洞,其中两个漏洞启用了服务器端请求伪造 (SSRF) 攻击,这些攻击可能允许黑客访问内部 Azure 资产。

概念验证漏洞用于突出开发人员在尝试为自己的 API 和服务实施基于黑名单的限制时可能犯的常见错误。

Web API 已成为现代应用程序开发不可或缺的一部分,尤其是在云中。它们允许服务进行通信和交换数据,非浏览器客户端(例如移动应用程序和物联网设备)可以代表用户安全地访问数据和执行操作,并且公司可以抽象出旧的服务器后端并快速将它们与现代应用程序和服务互连。

API 是标准化的并且易于交互,而不是依赖于不是为 Web 构建的自定义和遗留协议。

近年来,随着公司在生产中快速推出 API,针对它们的攻击数量激增,因为攻击者越来越意识到不安全的 API 可能会提供进入数据库和内部基础设施的后门。

据全球内容交付网络提供商 Akamai 称,与 2021 年相比,2022 年针对 API 和 Web 应用程序的攻击数量增长了 2.5 倍。SSRF 是过去两年涌现的攻击媒介之一。Microsoft Exchange 服务器中的 ProxyLogon、ProxyNotShell 和 OWASSRF 缺陷是被大量利用的著名示例。

在过去的两年里,Akamai 发现攻击尝试和授权漏洞扫描流量都在稳步增加,这些流量在 Microsoft Exchange 以外的软件中寻找 SSRF 漏洞。

此外,我们每天都看到平均有 1400 万次 SSRF 尝试探测我们的 App & API Protector 客户的 Web 应用程序和 API,这表明该向量的流行程度越来越高。值得注意的是这种增长以及 SSRF 开发对组织造成的潜在影响。

通过 Azure API 管理代理的 SSRF

Microsoft 的 Azure API Management 是一项服务,它允许公司将托管在 Azure 上或其私有网络内的服务公开为 API 并对其进行监控。它是一项针对 API 开发人员的服务,由 API 网关、管理平面和开发人员门户组成。

在 SSRF 攻击中,攻击者必须找到一种方法来使用应用程序的功能作为访问内部资源的代理,搭载服务器的特权位置和访问内部网络。换句话说,如果应用程序或 API 允许用户提供 URL,然后将抓取该 URL 并返回响应,则如果不采取额外的安全措施,则可能会发生 SSRF 攻击。

Azure API 管理有这样的功能。它允许用户为预期通过他们部署的 API 交换的 JSON 或 XML 数据的结构指定模式。然而,据安全公司 Ermetic 的研究人员称,该服务还可以通过向用户提供的 URL 发出请求来指示自动确定架构,此功能称为“从 URL 导入”。

一旦你指定了模式的 URL,Azure API 管理 CORS 代理就会通过向指定的 URL 发送 HTTP 请求来检索模式,研究人员在他们的报告中说。

跨源资源共享 (CORS) 是一种基于 HTTP 标头的机制,它允许 Web 服务器向浏览器指示允许加载脚本等资源的其他源(服务器)。这种情况下的 CORS 代理会拦截请求并修改 CORS 标头,以确保允许 portal.azure.com 和其他服务器之间的跨域请求。

一旦发现此功能,Ermetic 研究人员便考虑提供 http://localhost 或 http://127.0.1.1(环回地址)作为远程 URL,以获取模式以查看 CORS 代理是否会在内部到达服务器本身,实现SSRF。这导致了 HTTP 403 错误(禁止访问),表明存在黑名单。

然后研究人员注册了一个名为 localhost.me 的域,然后编辑其 DNS 记录以指向 127.0.1.1。因此,当 CORS 代理尝试访问 http://localhost.me 时,它会首先解析 DNS 并尝试访问返回的 IP 地址,该地址绕过黑名单指向自身。这奏效了。CORS 代理返回的响应是 HTTP 错误 404(未找到页面),这意味着服务器不再拒绝请求但没有可提供的页面。

研究人员还发现,他们可以在请求中添加自定义标头,这些标头将由 CORS 代理代理到目标服务器,从而为更复杂的攻击打开大门。然后他们尝试在不同的端口号上访问内部服务器,而不是默认的 80,以探测其他服务是否可能在自定义端口上运行,并注意到当他们尝试包括“300”的端口号时,例如 300、3000 或 30000 ,他们再次收到错误 403 Forbidden。

研究人员说:“我们了解到,如果专门针对这些端口存在正则表达式 [正则表达式],那么一些重要的服务必须在这些端口上侦听。”

正则表达式是可用于构建黑名单的搜索和匹配规则。例如,该规则可以匹配请求中包含术语 localhost 和由 300 组成的端口号的任何 URL。研究人员推断,如果存在正则表达式,它必须应用于请求标头中名为“Ocp-Apim-Url”的值,该值定义了 CORS 代理到达的 URL。因此,他们使用指向他们控制的域的 URL,然后将代理重定向回 http://localhost:30001。

这有效并再次绕过黑名单,允许研究人员发现和访问不同端口号上的内部服务:30001 - 开发人员门户的经过身份验证的视图,30004 - Azure 的管理 API,30005 - Azure 的 Kudu API 管理,30006 - 未发布的开发人员站点(未经身份验证)。Kudu是为 Azure App Service 的一些管理功能提供支持的引擎,Azure App Service 是一种用于在 Azure 上托管和部署 Web 应用程序的服务。

SSRF 漏洞揭示黑名单弱点作为防御

这个通过 CORS 代理的 SSRF 漏洞类似于 Orca Security 的研究人员在 11 月份在同一服务中发现的漏洞。Ermetic 在 12 月向 Microsoft 报告了它的发现,并认为它可能是同一个漏洞。然而,他们的漏洞利用绕过了 Microsoft 在 Orca 报告原始缺陷后实施的修复,使其成为一个单独的漏洞。这凸显了依靠正则表达式等黑名单技术作为这些类型功能的防御机制的困难,因为总是有多种方法可以绕过它们。

Ermetic 研究人员并没有就此停止他们的分析,并发现了第二个 SSRF,这次是在 Azure API 管理托管代理中——一个不同的代理,用于在创建 API 时为 API 动态配置后端服务 URL。

“当从用户指定的前端发送请求时,请求将被发送到入站处理代理,然后再发送到指定的后端,”研究人员说。在此过程中,代理将根据用户定义的入站和出站处理策略对请求进行修改。

研究人员发现,用户可以将 set-backend-service 策略配置为指向 http://localhost 而不是他们真正的 API 后端服务 URL,从而欺骗代理将从 API 前端接收到的请求定向到它自己。

“由于我们可以控制前端和入站处理策略,我们可以使用我们选择的 HTTP 动词/方法和自定义标头发送 SSRF,”他们说。“我们能够访问内部 HTTP 端口 80 以进行 POC [概念验证]。”

对于这两个漏洞,研究人员停止了调查,以避免对内部服务和基础设施造成损害,或者避免通过通常需要身份验证的 SSRF 探测访问敏感数据的风险。

API Management Developer Portal中的路径遍历漏洞 

最后,研究人员还能够在导致路径遍历的 API 管理开发人员门户中找到不受限制的文件上传功能。这有可能影响最终用户部署的任何自托管 API 管理开发人员门户以及他们自己的基础设施。

“我们发现 Azure 不会验证上传文件的文件类型和路径,”研究人员说。“经过身份验证的用户可以遍历上传文件时指定的路径,将恶意文件上传到开发人员门户服务器,并可能使用 DLL 劫持、iisnode 配置交换或任何其他相关攻击媒介在其上执行代码。”

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

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

相关文章

JQuery 详细教程

文章目录 一、JQuery 对象1.1 安装和使用1.2 JQuery包装集对象 二、JQuery 选择器2.1 基础选择器2.2 层次选择器2.3 表单选择器 三、JQuery Dom 操作3.1 操作元素3.1.1 操作属性3.1.2 操作样式3.1.3 操作内容 3.2 添加元素3.3 删除元素3.4 遍历元素 四、JQuery 事件4.1 ready 加…

C/C++每日一练(20230513) 二叉树专场(7)

目录 1. 翻转二叉树 🌟 2. 二叉树的最小深度 🌟 3. 填充每个节点的下一个右侧节点指针 🌟🌟 附:二叉树的序列化与反序列化 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一…

消息队列中间件介绍

消息队列介绍 消息队列中间件是大型系统中的重要组件,已经逐渐成为企业系统内部通信的核心手段。它具有松耦合、异步消息、流量削峰、可靠投递、广播、流量控制、最终一致性等一系列功能,已经成为异步RPC的主要手段之一。 目前常见的消息中间件有Active…

知名高校博士:我改了这2个地方,一开始被秒拒的论文很快就成功发表了~

手稿被拒后,你会怎么做?是直接换期刊重投,还是先仔细修改下论文呢? 伊利诺伊大学博士Sara E. Skrabalak分享了自己在论文被秒拒后,修改了文章部分内容就成功发表的经验。我们来看看她到底做了哪些修改吧 ~ Sara E. Sk…

Java技术总结

Java技术总结 1.高并发1.什么是高并发2.如何提升系统的并发能力3.常见的互联网分层架构整个系统各层次的水平扩展,又分别是如何实施的呢?4.分层水平扩展架构实践5.总结 2.Java 线程的 5 种状态1.新建状态(New):2.就绪状态(Runnable):3.运行状态(Running)…

【企业信息化】第1集 免费开源ERP: Odoo 16 CRM客户关系管理系统

文章目录 前言一、概览二、使用功能1.加快销售速度2.销售线索3.机会4.客户5.高效沟通6.报告7.集成 三、总结 前言 世界排名第一的免费开源ERP: Odoo 16 CRM客户关系管理系统。真正以客户为中心的CRM。 一、概览 获得准确预测 使用可操作数据,以做出更好的决定。 获…

Java --- redis7之缓存预热+雪崩+穿透+击穿

目录 一、缓存预热 二、缓存雪崩 三、缓存穿透 3.1、解决方案 3.1.1、空对象缓存或者缺省值 3.1.2、Goolge布隆过滤器Guava解决缓存穿透 四、缓存击穿 4.1、危害 4.2、解决方案 4.3、模拟百亿补贴活动案例 一、缓存预热 场景:MySQL有N条新记录&#xff…

基于Java的班级管理系统的设计与实现(论文+源码)_kaic

摘 要 伴随着信息技术不断的飞速发展,信息技术给现在的生活也在带来翻天覆地的变化。信息时代的到来已经成为一种趋势,人类的发展历史正在进入到一个新的时代。信息技术已经在生活中的各个领域得到普及以及被应用。班级管理在信息技术发展之前一直都是…

金子数量——c++

金子数量 Description 某地区有n条(编号依次为1到n)互不交叉的道路,每条道路上都有m个数字,其中能被8整除的数称为金子数,这个数字表示其重量。 如下表是3条道路,每条道路中有5个数的一种可能情况。 苏海想在n条道路中走一条金子…

[架构之路-195]-《软考-系统分析师》- MVC、MVP、MVVM架构各自的优缺点

目录 一、MVC 1.1 MVC的基本结构 1.2 MVC的工作流程 1.3 MVC的优缺点 二、MVP 2.1 MVP的基本结构 2.2 MVP的工作流程 2.3 MVP的优缺点 三、MVVM 3.1 MVVM的基本结构 3.2 MVVM的工作流程 3.3 MVVM的优缺点 前言: MVC:一个controller对应多个v…

Windows SSH远程连接Linux服务器 - 无公网IP内网穿透

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…

学系统集成项目管理工程师(中项)系列02_文件和标准

1. 文件 1.1. 2020 年 4 月,中共中央国务院颁发《关于构建更加完善的要素市场化配置体制的意见》首次将数据作为一种新型的生产要素置入文件 1.1.1. 【21下选01】 1.2. 2021 年印发的 5G 应用扬帆行动计划(2021-2023)的通知到 2023 年,我国 5G 应用发…

数列合并C语言

已知两个不同长度的降序排列的数列(假设序列的长度都不超过5),请编程将其合并为一个数列,使合并后的数列仍保持降序排列。 【提示】假设两个降序排列的数列分别保存在数组a和数组b中,用一个循环,从前往后依…

利用 Amazon API Gateway 和 Amazon Lambda 处理 Cloudfront 的内容请求

概述 国内 Amazon Cloudfront 目前不支持 Lambdaedge 功能,不能实现基于 CDN 的 A/B 测试、rewrite、redirect、token 认证和产生 response 等功能,本文介绍如何利用 API Gateway 和 Lambda 实现 Lambdaedge 的功能。下面实验介绍通过 request header 参…

HttpClient5如何进行代理

文章目录 说明原始HttpClient代理HttpClient总结 说明 在这篇文章中会对HttpClient5如何进行代理进行说明,我的HttpClient版本是5.2.1。在进行代理之前请先准备好代理服务器。 原始HttpClient 下面是没有进行代理设置的代码,尝试去访问openai接口 Tes…

GPT-1面试题

简介 1、GPT-1 是什么?它是基于什么模型的? GPT-1 是一种用于自然语言处理的机器学习模型,它是基于 Transformer 架构的。它是 OpenAI 在 2018 年发布的第一个 GPT 模型,有 1.17 亿个参数,比之前的语言模型有了显著的…

PowerShell

2023年5月12日,周五晚上: 今天突然对看到了一篇关于Linux的Shell的文章,引起了我的兴趣,但由于我的电脑没有虚拟机,所以我决定研究研究一下windows的PowerShell,感觉还挺好玩的。 打开了一个新世界。 不…

【最新可用】chatGPT镜像网站国内使用,免费稳定!

新建了一个网站 https://ai.weoknow.com/ 每天给大家更新可用的国内可用chatGPT 2023.5.8新增一个 ChatGPT 国内免翻版 【网站名称】:Chat GPT Ai 【使用环境】:移动端/电脑网页端 ChatGPT是一款功能强大的免费在线聊天机器人,具有人工智能…

Bean的生命周期及演示

文章目录 一、介绍概念组成: 二、实例演示 一、介绍 概念 Bean的生命周期是指一个Bean对象从创建到销毁的整个存在过程。 组成: 1.实例化Bean(为Bean分配内存空间) 2.属性注入 (Bean注入和装配) 3.Bean的初始化 各种通知&#…

【Midjourney】Midjourney 辅助工具 ② ( 自定义命令工具 | 设置颜色 | 设置材质 | 设置随机种子 | 设置图片链接 )

文章目录 一、Midjourney Prompt Tool 自定义命令工具1、设置颜色参数2、设置材质参数3、设置随机种子参数4、设置图片链接 Midjourney 提示词命令 可以使用 辅助工具 进行生成 , 辅助工具如下 : Midjourney Prompt Tool 自定义命令工具Midjourney Prompt Generator 命令生成器…