2020-10-09 14:00:3010289人阅读
近日,intezer研究人员在Microsoft Azure发现了2个安全漏洞。漏洞存在于Azure App Services 云服务中,主要影响Linux 服务器。攻击者利用第一个漏洞可以访问云服务器,并完全控制App Service的git库,并植入可以通过Azure Portal 访问的钓鱼页面。攻击者利用第二个漏洞可以利用一个SSRF 漏洞来提权到APP Service的完全代码执行,触发第一个漏洞。PoC视频如下所示:
Azure App Services
Azure App Services是一个基于HTTP的web应用托管服务,可以通过Microsoft Azure Cloud 云或安装来使用。App Services 允许开发者写一个应用来服务HTTP,然后推送给git。然后Azure会处理所有的部署详情并提供Azure管理的域名。
为开始使用App Services,用户必须首先创建一个App Service Plan,这是App Services将要使用的机器。机器的主要目的是托管App Service 容器。
一旦用户创建了App Service,Azure就会创建一个包含2个容器节点的新的Docker环境:管理节点和应用节点。然后回注册2个域名:
· app.azurewebsites.net – 指向应用的HTTP web服务器;
· app.scm.azurewebsites.net – 指向Azure提供的App Service管理页面。
管理页面是由微软开源项目Kudu提供的。在Linux 系统中,有一个类似的项目叫做KuduLite。Kudu实例由管理节点托管,而应用本身由应用节点托管。
在Linux系统中,KuduLite 实例回提供给用户关于系统的诊断信息,包括Docker日志、设置和其他环境信息。如果用户选择用Azure 托管app的git,就会由Kudu 服务管理。
另一个有用的特征是kudu实例中运行交互式bash的web接口和另一个名为webssh的web接口。
app节点中的有用会以root权限运行,研究人员可以通过SSH 以root权限登入。在访问Kudu 实例时,实际上是一个低权限的用户:
该用户只能与/home交互,并且无法在其他目录中写文件。但在该实例中安装了ClamAV。
Linux App Services环境如下图所示:
漏洞 1: KuduLite Takeover/EoP
在调查webssh如何连接到web接口到应用节点的SSH服务,研究人员发现其使用硬编码的凭证“root:Docker!” 来访问应用节点:
Webssh凭证
因为KuduLite 实例也运行SSH,所以就可以用相同的凭证来以root权限登陆:
因为可以控制KuduLite,因此可以完全控制SCM web服务器。可以监听用户发送给SCM web页面的HTTP请求、添加自己的页面、注入恶意JS内容到用户web页面。
研究人员首先尝试从发送给服务器的请求中窃取SCM 用户cookie。此外,cookie还有一个HttpOnly 属性,也就是说无法用客户端浏览器的JS窃取。
但攻击者仍然可以利用该漏洞来植入一个伪装成SCM web页面的钓鱼页面。用户可以选择App Services 来管理git 服务器,攻击者可以添加恶意代码到库中来实现驻留并传播到其他使用相同的git 服务器的实例。
漏洞2: KuduLite缺乏访问限制允许本地文件包含或远程代码执行
第二个漏洞位于KuduLite API 中,与Kudu的 API非常类似。应用节点可以在无需任何访问验证的情况下发送请求到KuduLite API。当web app中含有SSRF 漏洞时问题就很严重了。
能够伪造GET 请求的攻击者可能可以通过KuduLite VFS API 来访问应用节点的文件系统:
攻击者可以很轻易地窃取应用节点的源码和其他资产。
可以伪造POST 请求的攻击者可以通过命令API 在应用节点上实现远程代码执行:
相比之下,在Windows 中,从应用节点发送给管理节点的包会被丢弃。
最后,这两个漏洞被串起来后,攻击者就可以实现远程代码执行。
总结
云服务使得开发者可以快速和灵活地部署应用。但这些基础设施常常会存在漏洞。研究人员在微软Azure App Services中发现了2个安全漏洞,攻击者利用这2个安全漏洞可以实现远程代码执行。研究人员将该漏洞提交给了微软,目前漏洞已经修复。
本文翻译自:https://www.intezer.com/blog/cloud-security/kud-i-enter-your-server-new-vulnerabilities-in-microsoft-azure/