Unlock Access with Azure Key Vault

Unlock Access with Azure Key Vault


Azure

Los Azure Key Vaults almacenan datos confidenciales como secretos y certificados. Son muy valiosos para los atacantes que pretenden comprometer múltiples servicios. Las cuentas de contratistas con privilegios elevados que no se gestionan adecuadamente se consideran un riesgo.

ssh_command.

az login

ssh_command.

Al introducir el comando nos pide las credenciales.

ssh_command.

La contrasena

ssh_command.

Despues de introducir las credenciales que se entregan al principio del laboratorio vemos lo siguiente:

ssh_command.

az account show

az account show | jq -r "{homeTenantId}"

ssh_command.

Lo mas importante de todo esto es lo siguiente:

Usuario: marcus@megabigtech.com  tenant ID : 2590ccef-687d-493b-ae8d-441cbab63a72  subscription ID : ceff06cb-e29d-4486-a3ae-eaaec5689f94

pwsh

Install-Module Microsoft.Graph

Import-Module Microsoft.Graph.Users

ssh_command.

ssh_command.

Connect-MgGraph

ssh_command.

ssh_command.

El cmdlet Get-MgContext de PowerShell recupera información detallada sobre la sesión actual de Microsoft Graph PowerShell, y sirve como panel de control del estado de la sesión. Muestra detalles clave como la cuenta con la que se ha iniciado sesión (nombre principal de usuario), el ID, el entorno de nube (por ejemplo, Global, GCCHigh, DoD), el tipo de autenticación (delegada o solo aplicación) y los ámbitos específicos (permisos) concedidos en la sesión actual.

Get-MgContext

ssh_command.

az ad signed-in-user show

Para poder ver mas informacion sobre el usuario que esta en la session actual introducimos este comando.

ssh_command.

Obtenemos la membresia del grupo ejecutando el siguiente comando.

Get-MgUserMemberOf -userid "marcus@megabigtech.com" | select * -ExpandProperty additionalProperties | Select-Object {$_.AdditionalProperties["displayName"]}

ssh_command.

Como se puede ver marcus es miembro de Directory Readers, All Company y Yolo-MFA

ssh_command.

Escogemos la opcion dos:

ssh_command.

Al estar autenticado yo queria hacer esto a puro comando de cli. En ese caso queria ver los recursos asignados al usuario.

az resource list

ssh_command.

Vemos que el vault se llama ext-contractors.

Para estar seguro hice el siguiente comando.

az keyvault list --query "[].{name:name,resourceGroup:resourceGroup}" -o table

ssh_command.

En el portal de azure se ve asi:

ssh_command.

Para poder ver la lista de secretos ejecute el siguiente comando:

az keyvault secret list --vault-name MyVault --query "[].{name:name,id:id}" -o table

ssh_command.

Y en el portal de azure se ve asi.

ssh_command.

Decidi crear un script en bash para poder ver el nombre y el valor de cada secreto.

Corremos el siguiente script vaultEnum.sh

Se despliega los secretos de cada uno de ellos

ssh_command.

Queria saber cual era el correo del usuario para poder iniciar sesion ya que tenia el secreto o contrasena a mano.

Get-MgUser -UserId ext.josh.harvey@megabigtech.com

ssh_command.

Por alguna razon no me funcionaba este comando

ssh_command.

Tuve que desconectarme con los siguientes pasos:

az logout

Disconnect-AzAccount

az login

ssh_command.

Connect-AzAccount

ssh_command.

ssh_command.

Para poder hace el siguiente comando necesitamos la subscripcion que encontramos en el primer paso. Es muy comun que los usuarios usen la misma contrasena.

Get-AzRoleAssignment -Scope "/subscriptions/ceff06cb-e29d-4486-a3ae-eaaec5689f94" | Select-Object DisplayName, RoleDefinitionName

ssh_command.

Vemos que a Josh se le ha asignado el rol de lector. El rol de lector en Azure concede acceso de solo lectura a los recursos de Azure, lo que permite al usuario ver las propiedades y la configuración, pero no modificarlas. El rol de lector no concede permiso para acceder a recursos confidenciales o secretos, como el contenido de Azure Key Vault o las bases de datos. Al grupo CUSTOMER-DATABASE-ACCESS se le ha asignado el rol de acceso a la base de datos de clientes.

az role definition list --custom-role-only true --query "[?roleName=='Customer Database Access']" -o json

ssh_command.

ssh_command.

ssh_command.

ssh_command.

Comencemos por enumerar las cuentas de almacenamiento de la cuenta. Una cuenta de almacenamiento de Azure es un espacio de nombres único que proporciona una capa de abstracción sobre los servicios de almacenamiento de Azure.

Vemos las cuentas de almacenamiento custdatabase, mbtwebsite y securityconfigs.

ssh_command.

Podemos ver la tabla de clientes:

ssh_command.

Ahora iniciamos session con el usuario y contrasena de Josh.

Nos dirigimos a https://portal.azure.com

ssh_command.

ssh_command.

ssh_command.

Al iniciar la sesion vemos que tenemos estos recursos.

ssh_command.

Le damos click a custdatabase y despues a Storage browser.

ssh_command.

En la parte de tablas vemos el flag.txt

ssh_command.

© 2025 Cu3rv0x