Grimorio de XTORMIN
Xtormin GithubLinkedIn
  • Home
  • 🧠IA / AI
    • Investigación y automatización
    • IA en local
    • Plantillas de prompts
      • Informes de pentesting
  • 🏢Pentesting en Infraestructuras
    • Intrusión física
    • Redes Wi-Fi
      • Herramientas
      • Metodología de Pentest Wifi
      • WEP
      • WPA2-PSK / Red personal
      • WPA2-MGT / Red corporativa
    • Cloud
      • 🔷Azure
        • Herramientas
        • Metodología de Azure Pentest
        • AzureAD
        • Az Powershell
        • Az Cli
        • Portal de Azure
    • Perímetro
      • Acceso remoto
    • Red interna
      • Windows
      • Active directory
        • Enumeración manual
    • Servicios
      • FTP - 21/tcp
      • SSH - 22/tcp
      • DNS - 53/UDP
      • SMB - 135, 445 /tcp
      • SNMP - 161, 162, 10161, 10162/udp
      • IPMI - 623/udp/tcp
      • RDP - 3389/TCP
      • Redis - 6379/tcp
    • Misc
      • Transferencia de ficheros
  • 🌐Pentesting en aplicaciones web
    • General
      • Ataques y vulnerabilidades
        • Autenticación
          • Vulnerabilidades JWT
        • Javascript
          • XSS
          • Contaminación de prototipos - Prototype pollution
        • GraphQL
      • Explotación
        • Webshell
    • Tecnología
      • Jenkins
      • Salesforce
  • ⚒️Herramientas comunes
    • Recursos generales
    • Nmap
    • Nuclei
    • BloodHound
  • 👾MISC
    • [ Kali ] Setup
      • VPN
Con tecnología de GitBook
En esta página
  • Instalación
  • Conexión
  • Popup
  • Línea de comandos
  • Tokens
  • Configuración
  • Comandos
  • Información general
  • Usuarios
  • Grupos
  • Aplicaciones
  • Servicios principales
  • Roles
  • Referencias

¿Te fue útil?

  1. Pentesting en Infraestructuras
  2. Cloud
  3. Azure

Az Cli

La CLI de Azure se puede instalar en entornos Windows, macOS y Linux. También se puede ejecutar en un contenedor de Docker y Azure Cloud Shell. Permite configurar y administrar recursos de Azure.

AnteriorAz PowershellSiguientePortal de Azure

Última actualización hace 11 meses

¿Te fue útil?

Instalación

Detalles de la instalación:

O también se puede utilizar el siguiente comando que descarga y ejecuta el instalador .msi de 64-bit:

$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri https://aka.ms/installazurecliwindowsx64 -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; Remove-Item .\AzureCLI.msi

Conexión

Para iniciar sesión con Az Cli, se pueden usar los siguientes comandos:

Popup

Se abre una ventana emergente para iniciar sesión:

az login

Línea de comandos

Se inicia sesión desde la línea de comandos.

  • Se registra la contraseña en el historial de la consola:

az login -u <email> -p <password>
  • No se registra la contraseña en el historial de la consola:

az login -u <email>
read -sp "Azure password: " AZ_PASS && echo && az login -u <username> -p $AZ_PASS
$AzCred = Get-Credential -UserName <username>
az login -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password

Sin permisos en suscripciones

az login -u <email> -p <password> --allow-no-subscriptions

Con código de dispositivo

Si se quiere iniciar sesión sin el popup o usando credenciales desde la consola, se puede usar el siguiente comando, que dará un código para usarlo desde un positivo en el que se haya iniciado sesión.

  1. Se ejecuta el comando y se obtiene un código:

az login --use-device-code
  1. Se añade el código mostrado en el paso 1.

Tokens

  • Obtener token de acceso:

az account get-access-token
az account get-access-token --resource-type aad-graph
az account get-access-token --subscription "<subscription ID or name>"

Configuración

az configure

Comandos

az find "vm"
az find "az vm"
az find "az vm list"

Se puede modificar la salida de información con el parámetro "--output":

  • --output table

Para obtener información de la mayoría de consultas, es necesario que el dispositivo se encuentre dentro del dominio, si no, saldrá el siguiente error:

AADSTS53001: Device is not in required device state: domain_joined. Conditional Access policy requires a domain joined device, and the device is not domain joined. Trace ID: 65ee476e-caa8-4fff-b8fc-351f6e947101 Correlation ID: ca37e804-ed92-4f9e-bf70-44895e9e6ca0 Timestamp: 2024-04-28 18:10:57Z

Información general

  • Detalles del Tenant:

az account tenant list
  • Obtener detalles de la subscripción actual:

az account subscription list
  • Obtener detalles del usuario actual:

az ad signed-in-user show
  • Obtener los objetos propiedad del usuario actual:

az ad signed-in-user list-owned-objects
  • Obtener las máquinas virtuales donde el usuario actual tiene al menos permisos de lectura:

az vm list
  • Obtener nombre de las máquinas virtuales:

az vm list --query "[].[name]" -o table

Usuarios

  • Obtener usuarios:

az ad user list

Esta herramienta utiliza JMESPath como consulta para filtrar información.

  • Filtrar la salida para mostrar únicamente userPrincipalName y displayName:

az ad user list --query "[].[userPrincipalName,displayName]" --output table
  • Filtrar la salida para mostrar las columnas anteriores modificando el nombre de la columna:

az ad user list --query "[].{UPN:userPrincipalName, Name:displayName}" --output table
  • Obtener detalles de un usuario en concreto:

az ad user show --id test@defcorphq.onmicrosoft.com
  • Obtener los usuarios cuyo displayName contenga la cadena admin (case sensitive):

az ad user list --query "[?contains(displayName,'admin')].displayName"
  • Lo mismo que antes, pero NOT case sensitive:

az ad user list | ConvertFrom-Json | %{$_.displayName -match "admin"}
  • Todos los usuarios sincronizados desde on-prem:

az ad user list --query "[?onPremisesSecurityIdentifier!=null].displayName"
  • Usuarios que son de AzureAD:

az ad user list --query "[?onPremisesSecurityIdentifier==null].displayName"
  • Para ver más opciones de filtrado:

az ad user show list --query-examples

Grupos

  • Obtener todos los grupos:

az ad group list

az ad group list --query "[].[displayName]" -o table
  • Obtener un grupo en concreto según su DisplayName u ObjectID:

az ad group show -g "VM Admins"

az ad group show -g fe5e6dcb-1c46-2abe-b964-9af5ba122494
  • Obtener los grupos que contengan en el DisplayName una cadena en concreto (case sensitive):

az ad group list --query "[?contains(displayName,'admin')].displayName"
  • Obtener los grupos que contengan en el DisplayName una cadena en concreto (NOT case sensitive):

az ad group list | ConvertFrom-Json | %{$_.displayName -match "admin"}
  • Obtener los grupos sincronizados desde on-prem:

az ad group list --query "[?onPremisesSecurityIdentifier!=null].displayName"
  • Obtener los grupos de AzureAD:

az ad group list --query "[?onPremisesSecurityIdentifier==null].displayName"
  • Obtener miembros de un grupo:

az ad group member list -g "VM Admins" --query "[].[displayName]" -o table
  • Comprobar si un usuario es miembro de un grupo:

az ad group member check --group "VM Admins" --member-id fe4e6dcb-1c46-2abe-b964-9af5ba322494
  • Obtener los ObjectID de los grupos a los que pertenece el grupo:

az ad group get-member-groups -g "VM Admins"
  • Añadir un usuario a un grupo usando sus ObjectID:

Add-AzureADGroupMember -ObjectId "<ID del grupo>" -RefObjectId "<ID del usuario>" -Verbose
Add-AzureADGroupMember -ObjectId "e6875783-1378-4072-b242-
84c08c6dc0d7" -RefObjectId "f63e133c-bd01-4b1b-b3b7-7cd949fd45f3" -Verbose

Aplicaciones

  • Obtener todas las aplicaciones registradas en el Tenant:

az ad app list

az ad app list --query "[].[displayName]" -o table
  • Obtener todos los detalles de una aplicación:

az ad app show --id fe4e6dcb-1c45-2abe-b964-9af5ba322494
  • Obtener una aplicación basado en su DisplayName:

az ad app list --query "[?contains(displayName,'app')].displayName"
  • Obtener una aplicación que contenga una cadena en concreto en el DisplayName:

az ad app list | ConvertFrom-Json | %{$_.displayName -match "app"}
  • Obtener al dueño/a de una aplicación:

az ad app owner list --id fe4e6dcb-1c45-2abe-b964-9af5ba321494 --query "[].[displayName]" -o table
  • Obtener las aplicaciones que cuentan con contraseña:

az ad app list --query "[?passwordCredentials !=null].displayName"
  • Obtener las aplicaciones que tienen claves de credenciales (usan certificados de autenticación):

az ad app list --query "[?keyCredentials !=null].displayName"
  • Obtener aplicaciones web:

az webapp list
  • Obtener aplicaciones de funciones de Azure:

az functionapp list

Servicios principales

  • Obtener todos los Service Principals:

az ad sp list --all
az ad sp list --all --query "[].[displayName]" -o table
  • Obtener los detalles de un Service Principal según su DisplayName u ObjectID:

az ad sp show --id fe4e6dcb-1c45-1abe-b964-9af5ba321494
  • Obtener un Service Principal cuyo DisplayName empiece por la cadena en concreto :

az ad sp list --all --query "[?contains(displayName,'app')].displayName"
  • Obtener un Service Principal que contenga una cadena en concreto en su DisplayName:

az ad sp list --all | ConvertFrom-Json | %{$_.displayName -match "app"}
  • Obtener al dueño/a de un Service Principal:

az ad sp owner list --id fe4e6dcb-1c45-1abe-b964-9af5ba321494 --query "[].[displayName]" -o table
  • Obtener los Service Principals cuyo dueño/a es el usuario actual:

az ad sp list --show-mine
  • Obtener los Service Principals que cuentan con contraseña:

az ad sp list --all --query "[?passwordCredentials != null].displayName"
  • Obtener los Service Principals que tienen claves de credenciales (usan certificados de autenticación):

az ad sp list -all --query "[?keyCredentials != null].displayName"

Roles

az role assignment list --assignee xtormin@xtormincorp.onmicrosoft.com

Referencias

Se abre la url "" en un dispositivo donde se haya iniciado sesión.

🏢
🔷
https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-windows?tabs=powershell
https://microsoft.com/devicelogin
https://learn.microsoft.com/en-us/cli/azure/authenticate-azure-cli-interactively
https://learn.microsoft.com/en-us/cli/azure/cheat-sheet-onboarding