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

 

微软最近修补了其 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 配置交换或任何其他相关攻击媒介在其上执行代码。”

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

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

相关文章

4月更新 | Visual Studio Code Python

我们很高兴地宣布2023年4月版 Visual Studio Code 的 Python 和 Jupyter 扩展现已推出! 此版本包括以下改进: Data Wrangler 可供 Visual Studio Code Insiders 使用移动符号重构Create Environment 按钮嵌入依赖文件扩展作者的环境 APIPython 环境的内…

BTC交易费激增,LTC活跃地址数飙升! BRC-20爆火背后,区块链网络经历了什么?

BRC-20 代币和 Ordinals 协议的日益普及推动了对比特币区块空间的需求,比特币区块链的费用已飙升至两年来的高点。 BRC-20代币标准在 Ordinals 协议上运行。Ordinals 允许用户通过将对数字艺术的引用写入基于比特币的小型交易中,来将数据嵌入比特币区块…

MySQL体系架构

一、 MySQL体系架构 MySQL体系架构可分为物理架构和逻辑架构。 1、MySQL物理体系架构 1.1 配置文件 auto.cnf: 配置了MySQL Server的UUIDmy.cnf: MySQL的配置文件 1.2 其他重要文件 -basedirdir_name: MySQL安装的二进制文件目录-datadirdir_name: MySQL的数据目录和-pid-…

特征选择与特征提取

目录 一、 特征选择1、特征2、特征选择3、扩展——特征选择算法(有兴趣和精力可了解)拓展--完全搜索:拓展--启发式搜索:拓展--随机搜索:拓展--遗传算法: 二、 特征提取三、特征提取主要方法——PCA(主成分分析)1、PCA算法是如何实现的?PCA--零均值化(中心…

抖音未来的发展趋势|成都欢蓬信息

抖音未来的发展趋势,近年来随着互联网技术的发展,小视频app也逐渐走入大家的日常生活中,闲着的时候打开手机抖音APP,就可以刷到世界各地人们分享的视频和直播,下面一起看看抖音未来的发展趋势 一、抖音的现状   据权…

某IC交易网 js逆向解析学习【2023/05/16】

文章目录 文章目录 文章目录前言网址目标参数确认加密点cookie解密第一步hex1算法解析rind和rnns完结撒花前言 可以关注我哟,一起学习,主页有更多练习例子 如果哪个练习我没有写清楚,可以留言我会补充 如果有加密的网站可以留言发给我,一起学习共享学习路程 如侵权,联系我…

springboot + vue3实现视频播放Demo

文章目录 学习链接前言ffmpeg安装ffmpeg配置环境变量分割视频文件 后台配置WebConfig 前端代码video.js示例安装依赖视频播放组件效果 Vue3-video-play示例安装依赖main.js中使用视频播放组件效果 学习链接 ffmpeg官网 长时长视频java存储及vue播放解决方法 【 攻城略地 】vue…

让Chat-GPT成为你的微信小助理

前言 最近公司裁员风波,很不幸成为了裁员名单中的一员;此时又恰逢一波AIGC浪潮,首当其冲的就是GPT这样的大语言模型的诞生,是整个AI领域的一个质的飞跃。正好在这样一个空挡期,我就基于Chat-GPT 做了一些深入的实践&a…

Cannot read properties of null (reading ‘content‘)报错解决

项目是用vue3webpack,始终启动不成功~ 一、问题报错 二、报错解决尝试总结 (1)首先尝试的是因为我近期在做vite3vue3的需求把node版本升到了 16.17.1 猜测是不是node版本影响的 node版本切了14.15.3,16.17.1,以及很…

Oracle EBS Interface/API(48)- AP发票取消API

快速参考 参考点内容功能导航N: AP->发票->录入->发票并发请求None基表AP.AP_INVOICES_ALLAPI参考下面介绍错误信息表None接口FormNone接口RequestDebug ProfileNone详细例子参考如下实例官方文档None数据验证包None用户界面 Path:AP->发票>录入>发票->活…

全网火爆,性能测试从0到1分析需求到实战详解,冲出高级测试岗...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、制定测试目的 …

国产ChatGPT命名图鉴

很久不见这般热闹的春天。 随着ChatGPT的威名席卷全球,大洋对岸的中国厂商也纷纷亮剑,各式本土大模型你方唱罢我登场,声势浩大的发布会排满日程表。 有趣的是,在这些大模型产品初入历史舞台之时,带给世人的第一印象其…

做SSM项目的步骤和优化

SSM框架整合 这里说的SSM整合,主要说的是Spring和mybatis之间的整合。因为spring和springMVC都是spring生态系统中的框架,所以spring和springMVC之间的整合是无缝的整合,即,我们在不知不觉中,其实spring和springMVC已…

git如何将本地分支推送到远程(远程上没有该分支)

Author: wencoo Blog:https://wencoo.blog.csdn.net/ Date: 12/05/2023 Details:文章目录 正文 或 背景7.如果远程新建了一个分支,本地没有该分支。8.如果本地新建了一个分支 branch_name,但是在远程没有。报错解决 参考打赏 正文 或 背景 本…

Python依据某一文件夹中大量文件的名称复制另一文件夹中的同名文件

本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,基于其中每一个文件的名称,从另一个文件夹中找到与这一文件夹中文件同名的文件,并将找到的同名文件复制到第三个文件夹中的方法。 首先,我们来明确一下本…

【Java】EasyExecl数据导入

【Java】EasyExecl数据导入 📔 千寻简笔记介绍 千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助…

如何设计API返回码(错误码)?

一、前言 二、HTTP 状态码参考 三、参数约定 四、个性化 Message 五、返回信息的统一处理 一、前言 客户端请求 API,通常需要通过返回码来判断 API 返回的结果是否符合预期,以及该如何处理返回的内容等 相信很多同学都吃过返回码定义混乱的亏&…

聚观早报 |苹果头显得到Oculus创始人认可;AI加持Bing市场份额反降

今日要闻:苹果头显得到Oculus创始人认可;AI加持下Bing市场份额不增反降;AI歌手翻唱大火可能涉及多项侵权;小米辟谣武汉总部35岁以上员工只保留10%;特斯拉2023年度股东大会下周召开 苹果头显得到Oculus创始人认可 5 月…

商场地图怎么画最简单?商场导视图怎么做?

商场购物中心超大的经营规模能为广大顾客提供购物选择的同时,也面临着许多问题:购物体验差,顾客到店率低。以及数据缺失,无法为商家做营销决策提供依据等等,那么,如何快速提升商场店铺运营效果,…

8年测试老鸟总结,软件测试工程师关键成长晋升要素,这些不能不知道...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、技术-依然是最…