聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士团队

Intezer 公司的研究员在 Microsoft Azure 中发现了两个漏洞。它们位于流行的云服务 Azure App Services 中,影响 Linux服务器,使用云资源的企业组织机构应当对此注意。

如攻击者能够访问服务器,则第一个漏洞可使他们接管 App Service 的 git仓库并植入可通过 Azure Portal 访问的钓鱼页面。第二个漏洞可导致在应用程序中已拥有低权限的攻击者升级为完整的代码执行权限,并触发第一个漏洞。

研究人员已将这两个漏洞告知微软,后者已在本文发布前修复。

引言

云迁移使得老旧的安全实践基本过时,因为系统管理员必须了解如何适应并防御这个新平台。云安全仍然是相对较新的概念,因此非常有必要研究和记录使用这些新服务器时产生的新攻击面。从某种程度而言,其基础设施在某些领域并未记录,并不像 Windows或 Linux 系统那样已经过安全研究员的审查。

本文将说明从 Azure App Services 中找到的两个漏洞,具体而言它们位于 Linux App Services 管理组件 KuduLite中,另外还说明了 Azure App Service 的运作原理。

Azure App Services

Azure App Services 是一款基于 HTTP 的服务,用于托管 Web应用程序,可从微软 Azure Cloud 和内部部署程序中找到。本文具体指的是云版本。

App Services 使开发人员只需编写一款应用程序就可用作 HTTP,之后推送给 git。之后 Azure将处理所有繁琐的部署细节并提供 Azure管理的域名。

开始使用 App Services 时,用户必须首先创建一个将由 App Services 使用的机器 App Service Plan。该机器的主要目的是托管 App Service 的容器。用户创建 App Service 后,Azure 将创建一个由两个容器节点(管理器节点和应用程序节点)组成的新的 Docker环境。

之后注册两个域名:

  • app.azurewebsites.net–指向该应用程序的 HTTP Web 服务器

  • app.scm.azurewebsites.net–指向由 Azure 提供的 AppService 管理页面

该管理页面是由微软开源项目 Kudu提供的。在 Linux 系统上是由更少有人知道的姊妹项目 KuduLite 提供的。Kudu 示例托管在管理器节点上,而该应用程序本身托管在应用程序节点上。我们主要集中讨论 KuduLite变体的情况。

KuduLite 实例为用户提供系统诊断信息,包括 Docker日志、设置和其它环境信息。如果用户选择在 Azure上托管 app 的 git,则它由该 Kudu服务管理。

另外一个有用的功能是在 Kudu实例上运行交互 bash 的 Web 接口,以及SSH 到应用程序节点的另外一个 Web 接口(一个单独的 Azure项目 webssh)。

该 app节点内部的应用程序以 root身份运行,而且我们可以以 root身份将 SSH 连接到该节点。然而,当访问 Kudu 实例时,我们是低权限用户:

该用户仅和 /home进行交互,无法写入其它目录的文件中。有意思的是,这个实例中安装了 ClamAV。

第1个漏洞:KuduLite 接管/EoP

在调查 webssh如何将 Web 接口连接到该应用程序节点的 SSH 服务过程中,我们注意到它使用了硬编码凭证“root:Docker!”,访问该应用程序节点:

由于该应用程序节点的 SSH端口无法从互联网访问,因此这样做并不会带来任何危险。

之前我们注意到 KuduLite实例也运行 SSH,因此我们在 KuduLite 实例上使用了相同的实例并以 root身份登录:

需要注意的是,App Service KuduLite 的开发人员确保管理员仅能以低权限用户身份进行登录,因此我们了解到这并不在计划内。

现在我们已经控制了 KuduLite,因此能够完全控制 SCM Web 服务器。我们可以监听用户向 SCM网页发出的 HTTP 请求、增加自己的页面,并将恶意 Javascript 注入用户网页。

最初,我们尝试从 SCM用户的服务器请求中窃取他们的 cookie,然而我们很快发现一个 nginx 中间人在 cookie 到达 KuduLite 之前就从请求中删除 cookie。另外,这些 cookie具有一个 HttpOnly 属性,也就是说我们无法通过客户端浏览器上的 JavaScript 窃取这些 cookie。微软提供的缓解措施在限制该漏洞的潜在危害方面非常有效。

尽管已存在缓解措施,攻击者仍然能够利用该漏洞带来损害。攻击者可利用该漏洞在本应是 SCM 网页的地方植入钓鱼页面。

用户也可选择让 App Services 管理 git服务器,由 KuduLite 处理。攻击者之后还可向仓库添加恶意代码,实现持久性并传播给使用同样 git服务器的其它实例。

第2个漏洞:本地文件包含或 RCE
第2个漏洞:由 SSRF 最终引发 RCE

第二个漏洞存在于非常类似于 Kudu API 的 KuduLite API 中。该应用程序节点能够在无需任何访问验证的情况下向 KuduLite API 发送请求。当 Web app 中存在 SSRF漏洞时,这种情况的问题尤大。

设法伪造 GET 请求的攻击者或能够通过 KuduLite VFS API访问该应用程序节点的文件系统。

它将使攻击者轻易窃取源代码和应用程序节点上的其它资产。设法伪造 POST请求的攻击者可通过命令 API在应用程序节点上远程执行代码。

相反,在 Windows 系统中,从应用程序节点发送到管理器节点上的数据包被释放。

最终,攻击者可结合利用这两个漏洞,因为一旦他们通过第二个漏洞实现代码执行(通过 SSRF漏洞实现),就能够利用第一个漏洞。

结论
结论

云使得开发人员能够以极快的速度和灵活性构建并部署应用程序。然而,基础设施常常可能存在不受控的漏洞。在 App Services 的案例中,应用程序和另外一个管理容器共同托管,而且如本文所述,额外的组件会带来额外的威胁。

我们将问题告知微软,后者快速证实并修复了这些漏洞。

最为通用的最佳实践,运行时云安全是重要的最后一道防线,因为它在漏洞遭攻击者利用后检测恶意代码注入和其它内存威胁。有兴趣的读者可点击如下链接,进一步解释了预运行时和运行时安全的必要性:

https://www.intezer.com/blog/cloud-security/complementing-your-cspm-with-runtime-cloud-workload-protection/。

推荐阅读

微软推出 Azure Sphere 漏洞奖励计划,最高奖金10万美元

他利用 Azure 漏洞实际控制了 Windows 动态磁贴服务,而微软无回应

原文链接

https://www.intezer.com/blog/cloud-security/kud-i-enter-your-server-new-vulnerabilities-in-microsoft-azure/

题图:Pixabay License

本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 www.codesafe.cn”。

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

 觉得不错,就点个 “在看” 吧~

我发现了 Microsoft Azure 中的两个漏洞相关推荐

  1. Microsoft Azure 中的 SharePoint Server 2013 灾难恢复

    摘要: 使用 Azure,你可以为内部部署 SharePoint 服务器场创建灾难恢复环境.本文介绍如何设计和实施此解决方案. 观看 SharePoint Server 2013 灾难恢复概述视频 当 ...

  2. 如何修复在Microsoft Azure中“虚拟机防火墙打开,关闭RDP的连接端口”问题

     注:下列步骤并不一定适用所有场景,提供思路,请灵活应用 我们在使用Microsoft Azure 中Windows 虚拟机,有时会发生错误打开防火墙或一些管家软件错误的关闭了"远程桌面 ...

  3. 盘点AWS、GCP及Microsoft Azure中的网络安全服务!

    新钛云服已为您服务1298天 本指南介绍了AWS.Microsoft Azure和谷歌Cloud提供的网络.基础设施.数据和应用程序安全功能,以防止网络攻击,保护基于云的资源和工作负载. 在选择公共云 ...

  4. 网站安全测试与检测中 发现的OA系统中的SQL注入漏洞

    近日,SINE安全监测中心监控到泛微OA系统被爆出存在高危的sql注入漏洞,该移动办公OA系统,在正常使用过程中可以伪造匿名身份来进行SQL注入攻击,获取用户等隐私信息,目前该网站漏洞影响较大,使用此 ...

  5. 研究人员发现西门子工业控制器中的命令执行漏洞

    近期,有研究人员发现了西门子SIMATIC S7-1200可编程逻辑控制器(PLC)的新漏洞,可让攻击者在存在漏洞的设备上执行任意代码. 该漏洞和西门子SIMATIC S7-1200可编程逻辑控制器( ...

  6. 使用Microsoft Azure Backup备份Hyper-V数据

    在之前的文章中讲到了微软的云计算备份解决方案-Microsoft Azure Backup,通过技术可以备份Azure中的VM以及企业内部的Hyper-V.关于Microsoft Azure Back ...

  7. sql azure 语法_将SQL工作负载迁移到Microsoft Azure:服务选择

    sql azure 语法 In the previous article, Migrating SQL workloads to Microsoft Azure: Planning the jump, ...

  8. sql azure 语法_如何:Azure中SQL Server文件快照备份

    sql azure 语法 After receiving new additions to backup and restore capabilities of SQL Servers like fi ...

  9. sql azure 语法_如何将SQL Server数据库备份到Microsoft Azure

    sql azure 语法 In the last chapter, we explained how to create a Microsoft Azure Account and how to ha ...

最新文章

  1. 《因果科学周刊》第4期:因果赋能推荐系统
  2. 高温保护_连续4天高温预警!高温作业,这些劳动保护知识一定要懂!
  3. PHP之文件上传: 参数enctype
  4. conj--复数的共轭值
  5. 使输入框(input   textarea)变为只可读状态readonly=readonly,禁用输入框disabled=disabled...
  6. linux的lsm--TCB组成部分的新视角
  7. (六)boost库之内存管理shared_ptr
  8. [转] 用Diff和Patch工具维护源码
  9. javaee实验报告心得_JavaEE实验报告.doc
  10. 使用CommandLineRunner或ApplicationRunner接口创建bean
  11. ssm框架搭建+easyui增删改查实现
  12. php/js互传cookie中文乱码的问题
  13. pcl1.8.1+vs2017
  14. 基于java的小型旅游网站设计(含源文件)
  15. 10g gtx 光纤通信测试_光纤通信系统仿真实验
  16. 盘古开发框架集成 ShenYu 网关实现 Dubbo 泛化调用
  17. 【Pillow库】图片操作
  18. android手机设置固定dns,手机怎么设置dns 手机设置dns方法【详解】
  19. 润乾报表简单报表制作流程(胎盘级教程)
  20. 六兆年と一夜物語 jzoj3501 最短路

热门文章

  1. Instance Object
  2. C++多继承的二义性
  3. 我的最新分词进展和接口设计~
  4. ASP.NET Core 中文文档 第二章 指南(4.10)检查自动生成的Detail方法和Delete方法
  5. el captain设置环境变量
  6. 汇编实现时钟设置代码理解
  7. PowerShell定时记录操作系统行为
  8. 开源云平台 CloudStack 4.1.0 安装详解 - 3、vCenter
  9. bootstrap今天的学习心得
  10. Servlet多线程机制