
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.
az login
Al introducir el comando nos pide las credenciales.
La contrasena
Despues de introducir las credenciales que se entregan al principio del laboratorio vemos lo siguiente:
az account show
az account show | jq -r "{homeTenantId}"
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
Connect-MgGraph
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
az ad signed-in-user show
Para poder ver mas informacion sobre el usuario que esta en la session actual introducimos este comando.
Obtenemos la membresia del grupo ejecutando el siguiente comando.
Get-MgUserMemberOf -userid "marcus@megabigtech.com" | select * -ExpandProperty additionalProperties | Select-Object {$_.AdditionalProperties["displayName"]}
Como se puede ver marcus es miembro de Directory Readers, All Company y Yolo-MFA
Escogemos la opcion dos:
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
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
En el portal de azure se ve asi:
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
Y en el portal de azure se ve asi.
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
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
Por alguna razon no me funcionaba este comando
Tuve que desconectarme con los siguientes pasos:
az logout
Disconnect-AzAccount
az login
Connect-AzAccount
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
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
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.
Podemos ver la tabla de clientes:
Ahora iniciamos session con el usuario y contrasena de Josh.
Nos dirigimos a https://portal.azure.com
Al iniciar la sesion vemos que tenemos estos recursos.
Le damos click a custdatabase y despues a Storage browser.
En la parte de tablas vemos el flag.txt