mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-12 21:13:45 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA
This commit is contained in:
@@ -184,11 +184,11 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
Cuando **inicias sesión** a través de **CLI** en Azure con cualquier programa, estás utilizando una **Aplicación de Azure** de un **inquilino** que pertenece a **Microsoft**. Estas Aplicaciones, como las que puedes crear en tu cuenta, **tienen un id de cliente**. **No podrás ver todas ellas** en las **listas de aplicaciones permitidas** que puedes ver en la consola, **pero están permitidas por defecto**.
|
||||
Cuando inicias sesión a través de la CLI en Azure con cualquier programa, estás utilizando una Aplicación de Azure de un inquilino que pertenece a Microsoft. Estas Aplicaciones, como las que puedes crear en tu cuenta, tienen un id de cliente. No podrás ver todas ellas en las listas de aplicaciones permitidas que puedes ver en la consola, pero están permitidas por defecto.
|
||||
|
||||
Por ejemplo, un **script de powershell** que **autentica** utiliza una aplicación con el id de cliente **`1950a258-227b-4e31-a9cf-717495945fc2`**. Incluso si la aplicación no aparece en la consola, un sysadmin podría **bloquear esa aplicación** para que los usuarios no puedan acceder utilizando herramientas que se conectan a través de esa App.
|
||||
Por ejemplo, un script de powershell que autentica utiliza una aplicación con el id de cliente `1950a258-227b-4e31-a9cf-717495945fc2`. Incluso si la aplicación no aparece en la consola, un administrador del sistema podría bloquear esa aplicación para que los usuarios no puedan acceder utilizando herramientas que se conectan a través de esa Aplicación.
|
||||
|
||||
Sin embargo, hay **otros ids de cliente** de aplicaciones que **te permitirán conectarte a Azure**:
|
||||
Sin embargo, hay otros ids de cliente de aplicaciones que te permitirán conectarte a Azure:
|
||||
```bash
|
||||
# The important part is the ClientId, which identifies the application to login inside Azure
|
||||
|
||||
@@ -365,7 +365,7 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText
|
||||
```
|
||||
### MFA y Políticas de Acceso Condicional
|
||||
|
||||
Se recomienda encarecidamente agregar MFA a cada usuario, sin embargo, algunas empresas no lo configurarán o podrían configurarlo con un Acceso Condicional: El usuario será **requerido MFA si** inicia sesión desde una ubicación específica, navegador o **alguna condición**. Estas políticas, si no se configuran correctamente, pueden ser propensas a **bypasses**. Verifica:
|
||||
Se recomienda encarecidamente agregar MFA a cada usuario, sin embargo, algunas empresas no lo configurarán o podrían configurarlo con un Acceso Condicional: El usuario será **requerido MFA si** inicia sesión desde una ubicación, navegador o **alguna condición** específica. Estas políticas, si no se configuran correctamente, pueden ser propensas a **bypasses**. Verifica:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
|
||||
@@ -487,7 +487,7 @@ Los propietarios del grupo pueden agregar nuevos usuarios al grupo.
|
||||
Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
|
||||
```
|
||||
> [!WARNING]
|
||||
> Los grupos pueden ser dinámicos, lo que básicamente significa que **si un usuario cumple ciertas condiciones, será agregado a un grupo**. Por supuesto, si las condiciones se basan en **atributos** que un **usuario** puede **controlar**, podría abusar de esta función para **ingresar a otros grupos**.\
|
||||
> Los grupos pueden ser dinámicos, lo que básicamente significa que **si un usuario cumple ciertas condiciones, será agregado a un grupo**. Por supuesto, si las condiciones se basan en **atributos** que un **usuario** puede **controlar**, podría abusar de esta función para **entrar en otros grupos**.\
|
||||
> Consulta cómo abusar de grupos dinámicos en la siguiente página:
|
||||
|
||||
{{#ref}}
|
||||
@@ -714,10 +714,10 @@ Para más información sobre Aplicaciones consulta:
|
||||
../az-basic-information/
|
||||
{{#endref}}
|
||||
|
||||
Cuando se genera una App, se otorgan 2 tipos de permisos:
|
||||
Cuando se genera una aplicación, se otorgan 2 tipos de permisos:
|
||||
|
||||
- **Permisos** otorgados al **Service Principal**
|
||||
- **Permisos** que la **app** puede tener y usar en **nombre del usuario**.
|
||||
- **Permisos** que la **aplicación** puede tener y usar en **nombre del usuario**.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -892,16 +892,9 @@ Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/<res
|
||||
Get-AzDenyAssignment # Get from current subscription
|
||||
Get-AzDenyAssignment -Scope '/subscriptions/96231a05-34ce-4eb4-aa6a-70759cbb5e83/resourcegroups/testRG/providers/Microsoft.Web/sites/site1'
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
```
|
||||
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Raw" }}
|
||||
|
||||
```bash
|
||||
# Obtener permisos sobre un recurso utilizando ARM directamente
|
||||
# Get permissions over a resource using ARM directly
|
||||
$Token = (Get-AzAccessToken).Token
|
||||
$URI = 'https://management.azure.com/subscriptions/b413826f-108d-4049-8c11-d52d5d388768/resourceGroups/Research/providers/Microsoft.Compute/virtualMachines/infradminsrv/providers/Microsoft.Authorization/permissions?api-version=2015-07-01'
|
||||
$RequestParams = @{
|
||||
@@ -913,13 +906,12 @@ Headers = @{
|
||||
}
|
||||
(Invoke-RestMethod @RequestParams).value
|
||||
```
|
||||
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### Entra ID Roles
|
||||
### Roles de Entra ID
|
||||
|
||||
For more information about Azure roles check:
|
||||
Para más información sobre los roles de Azure, consulta:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -927,134 +919,125 @@ For more information about Azure roles check:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
|
||||
```bash
|
||||
# Listar plantillas de roles de Entra ID
|
||||
# List template Entra ID roles
|
||||
az rest --method GET \
|
||||
--uri "https://graph.microsoft.com/v1.0/directoryRoleTemplates"
|
||||
|
||||
# Listar roles integrados habilitados de Entra ID
|
||||
# List enabled built-in Entra ID roles
|
||||
az rest --method GET \
|
||||
--uri "https://graph.microsoft.com/v1.0/directoryRoles"
|
||||
|
||||
# Listar todos los roles de Entra ID con sus permisos (incluidos los roles personalizados)
|
||||
# List all Entra ID roles with their permissions (including custom roles)
|
||||
az rest --method GET \
|
||||
--uri "https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions"
|
||||
|
||||
# Listar solo roles personalizados de Entra ID
|
||||
# List only custom Entra ID roles
|
||||
az rest --method GET \
|
||||
--uri "https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions" | jq '.value[] | select(.isBuiltIn == false)'
|
||||
|
||||
# Listar todos los roles de Entra ID asignados
|
||||
# List all assigned Entra ID roles
|
||||
az rest --method GET \
|
||||
--uri "https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments"
|
||||
|
||||
# Listar miembros de un rol de Entra ID
|
||||
# List members of a Entra ID roles
|
||||
az rest --method GET \
|
||||
--uri "https://graph.microsoft.com/v1.0/directoryRoles/<role-id>/members"
|
||||
|
||||
# Listar roles de Entra ID asignados a un usuario
|
||||
# List Entra ID roles assigned to a user
|
||||
az rest --method GET \
|
||||
--uri "https://graph.microsoft.com/v1.0/users/<user-id>/memberOf/microsoft.graph.directoryRole" \
|
||||
--query "value[]" \
|
||||
--output json
|
||||
|
||||
# Listar roles de Entra ID asignados a un grupo
|
||||
# List Entra ID roles assigned to a group
|
||||
az rest --method GET \
|
||||
--uri "https://graph.microsoft.com/v1.0/groups/$GROUP_ID/memberOf/microsoft.graph.directoryRole" \
|
||||
--query "value[]" \
|
||||
--output json
|
||||
|
||||
# Listar roles de Entra ID asignados a un principal de servicio
|
||||
# List Entra ID roles assigned to a service principal
|
||||
az rest --method GET \
|
||||
--uri "https://graph.microsoft.com/v1.0/servicePrincipals/$SP_ID/memberOf/microsoft.graph.directoryRole" \
|
||||
--query "value[]" \
|
||||
--output json
|
||||
```
|
||||
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Azure AD" }}
|
||||
|
||||
```bash
|
||||
# Obtener todas las plantillas de roles disponibles
|
||||
# Get all available role templates
|
||||
Get-AzureADDirectoryroleTemplate
|
||||
# Obtener roles habilitados (roles asignados)
|
||||
# Get enabled roles (Assigned roles)
|
||||
Get-AzureADDirectoryRole
|
||||
Get-AzureADDirectoryRole -ObjectId <roleID> #Obtener información sobre el rol
|
||||
# Obtener roles personalizados - usar AzureAdPreview
|
||||
Get-AzureADDirectoryRole -ObjectId <roleID> #Get info about the role
|
||||
# Get custom roles - use AzureAdPreview
|
||||
Get-AzureADMSRoleDefinition | ?{$_.IsBuiltin -eq $False} | select DisplayName
|
||||
# Usuarios asignados a un rol (Administrador Global)
|
||||
# Users assigned a role (Global Administrator)
|
||||
Get-AzureADDirectoryRole -Filter "DisplayName eq 'Global Administrator'" | Get-AzureADDirectoryRoleMember
|
||||
Get-AzureADDirectoryRole -ObjectId <id> | fl
|
||||
# Roles de la Unidad Administrativa (quién tiene permisos sobre la unidad administrativa y sus miembros)
|
||||
# Roles of the Administrative Unit (who has permissions over the administrative unit and its members)
|
||||
Get-AzureADMSScopedRoleMembership -Id <id> | fl *
|
||||
```
|
||||
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### Devices
|
||||
### Dispositivos
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
|
||||
```bash
|
||||
# Si sabes cómo hacer esto, ¡envía un PR!
|
||||
# If you know how to do this send a PR!
|
||||
```
|
||||
|
||||
{{#endtab }}
|
||||
{{#tab name="MS Graph" }}
|
||||
|
||||
```bash
|
||||
# Enumerar dispositivos usando Microsoft Graph PowerShell
|
||||
# Enumerate devices using Microsoft Graph PowerShell
|
||||
Get-MgDevice -All
|
||||
|
||||
# Obtener detalles del dispositivo
|
||||
# Get device details
|
||||
Get-MgDevice -DeviceId <DeviceId> | Format-List *
|
||||
|
||||
# Obtener dispositivos gestionados usando Intune
|
||||
# Get devices managed using Intune
|
||||
Get-MgDevice -Filter "isCompliant eq true" -All
|
||||
|
||||
# Obtener dispositivos propiedad de un usuario
|
||||
# Get devices owned by a user
|
||||
Get-MgUserOwnedDevice -UserId test@corp.onmicrosoft.com
|
||||
|
||||
# Listar comandos disponibles en Microsoft Graph PowerShell
|
||||
# List available commands in Microsoft Graph PowerShell
|
||||
Get-Command -Module Microsoft.Graph.Identity.DirectoryManagement
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Azure AD" }}
|
||||
|
||||
```bash
|
||||
# Enumerar Dispositivos
|
||||
# Enumerate Devices
|
||||
Get-AzureADDevice -All $true | fl *
|
||||
# Listar todos los dispositivos activos (y no los dispositivos obsoletos)
|
||||
# List all the active devices (and not the stale devices)
|
||||
Get-AzureADDevice -All $true | ?{$_.ApproximateLastLogonTimeStamp -ne $null}
|
||||
# Obtener propietarios de todos los dispositivos
|
||||
# Get owners of all devices
|
||||
Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredOwner
|
||||
Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredOwner -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}}
|
||||
# Usuarios registrados de todos los dispositivos
|
||||
# Registred users of all the devices
|
||||
Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredUser
|
||||
Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredUser -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}}
|
||||
# Obtener dispositivos gestionados usando Intune
|
||||
# Get dives managed using Intune
|
||||
Get-AzureADDevice -All $true | ?{$_.IsCompliant -eq "True"}
|
||||
# Obtener dispositivos propiedad de un usuario
|
||||
# Get devices owned by a user
|
||||
Get-AzureADUserOwnedDevice -ObjectId test@corp.onmicrosoft.com
|
||||
# Obtener Unidades Administrativas de un dispositivo
|
||||
# Get Administrative Units of a device
|
||||
Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember -ObjectId $_.ObjectId | where {$_.ObjectId -eq $deviceObjId} }
|
||||
```
|
||||
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
> [!WARNING]
|
||||
> If a device (VM) is **AzureAD joined**, users from AzureAD are going to be **able to login**.\
|
||||
> Moreover, if the logged user is **Owner** of the device, he is going to be **local admin**.
|
||||
> Si un dispositivo (VM) está **unido a AzureAD**, los usuarios de AzureAD podrán **iniciar sesión**.\
|
||||
> Además, si el usuario conectado es **Propietario** del dispositivo, será **administrador local**.
|
||||
|
||||
### Administrative Units
|
||||
### Unidades Administrativas
|
||||
|
||||
For more information about administrative units check:
|
||||
Para más información sobre unidades administrativas, consulta:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -1062,104 +1045,100 @@ For more information about administrative units check:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
|
||||
```bash
|
||||
# Listar todas las unidades administrativas
|
||||
# List all administrative units
|
||||
az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits"
|
||||
# Obtener información de AU
|
||||
# Get AU info
|
||||
az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53"
|
||||
# Obtener miembros
|
||||
# Get members
|
||||
az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53/members"
|
||||
# Obtener principales con roles sobre la AU
|
||||
# Get principals with roles over the AU
|
||||
az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53/scopedRoleMembers"
|
||||
```
|
||||
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="AzureAD" }}
|
||||
|
||||
```bash
|
||||
# Obtener Unidades Administrativas
|
||||
# Get Administrative Units
|
||||
Get-AzureADMSAdministrativeUnit
|
||||
Get-AzureADMSAdministrativeUnit -Id <id>
|
||||
# Obtener ID de la unidad administrativa por cadena
|
||||
# Get ID of admin unit by string
|
||||
$adminUnitObj = Get-AzureADMSAdministrativeUnit -Filter "displayname eq 'Test administrative unit 2'"
|
||||
# Listar los usuarios, grupos y dispositivos afectados por la unidad administrativa
|
||||
# List the users, groups, and devices affected by the administrative unit
|
||||
Get-AzureADMSAdministrativeUnitMember -Id <id>
|
||||
# Obtener los roles que los usuarios tienen sobre los miembros de la AU
|
||||
Get-AzureADMSScopedRoleMembership -Id <id> | fl #Obtener ID de rol y miembros del rol
|
||||
# Get the roles users have over the members of the AU
|
||||
Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
|
||||
```
|
||||
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Entra ID Privilege Escalation
|
||||
## Escalación de Privilegios de Entra ID
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-entraid-privesc/
|
||||
{{#endref}}
|
||||
|
||||
## Azure Privilege Escalation
|
||||
## Escalación de Privilegios de Azure
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-authorization-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Defensive Mechanisms
|
||||
## Mecanismos Defensivos
|
||||
|
||||
### Privileged Identity Management (PIM)
|
||||
### Gestión de Identidades Privilegiadas (PIM)
|
||||
|
||||
Privileged Identity Management (PIM) in Azure helps to **prevent excessive privileges** to being assigned to users unnecessarily.
|
||||
La Gestión de Identidades Privilegiadas (PIM) en Azure ayuda a **prevenir que se asignen privilegios excesivos** a los usuarios innecesariamente.
|
||||
|
||||
One of the main features provided by PIM is that It allows to not assign roles to principals that are constantly active, but make them **eligible for a period of time (e.g. 6months)**. Then, whenever the user wants to activate that role, he needs to ask for it indicating the time he needs the privilege (e.g. 3 hours). Then an **admin needs to approve** the request.\
|
||||
Note that the user will also be able to ask to **extend** the time.
|
||||
Una de las principales características que ofrece PIM es que permite no asignar roles a los principales que están constantemente activos, sino hacerlos **elegibles por un período de tiempo (por ejemplo, 6 meses)**. Luego, cada vez que el usuario quiera activar ese rol, necesita solicitarlo indicando el tiempo que necesita el privilegio (por ejemplo, 3 horas). Luego, un **administrador necesita aprobar** la solicitud.\
|
||||
Tenga en cuenta que el usuario también podrá solicitar **extender** el tiempo.
|
||||
|
||||
Moreover, **PIM send emails** whenever a privileged role is being assigned to someone.
|
||||
Además, **PIM envía correos electrónicos** cada vez que se asigna un rol privilegiado a alguien.
|
||||
|
||||
<figure><img src="../../../images/image (354).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
When PIM is enabled it's possible to configure each role with certain requirements like:
|
||||
Cuando PIM está habilitado, es posible configurar cada rol con ciertos requisitos como:
|
||||
|
||||
- Maximum duration (hours) of activation
|
||||
- Require MFA on activation
|
||||
- Require Conditional Access acuthenticaiton context
|
||||
- Require justification on activation
|
||||
- Require ticket information on activation
|
||||
- Require approval to activate
|
||||
- Max time to expire the elegible assignments
|
||||
- A lot more configuration on when and who to send notifications when certain actions happen with that role
|
||||
- Duración máxima (horas) de activación
|
||||
- Requerir MFA en la activación
|
||||
- Requerir contexto de autenticación de Acceso Condicional
|
||||
- Requerir justificación en la activación
|
||||
- Requerir información de ticket en la activación
|
||||
- Requerir aprobación para activar
|
||||
- Tiempo máximo para expirar las asignaciones elegibles
|
||||
- Mucha más configuración sobre cuándo y a quién enviar notificaciones cuando ocurren ciertas acciones con ese rol
|
||||
|
||||
### Conditional Access Policies
|
||||
### Políticas de Acceso Condicional
|
||||
|
||||
Check:
|
||||
Verifique:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
|
||||
{{#endref}}
|
||||
|
||||
### Entra Identity Protection
|
||||
### Protección de Identidad de Entra
|
||||
|
||||
Entra Identity Protection is a security service that allows to **detect when a user or a sign-in is too risky** to be accepted, allowing to **block** the user or the sig-in attempt.
|
||||
La Protección de Identidad de Entra es un servicio de seguridad que permite **detectar cuándo un usuario o un inicio de sesión es demasiado arriesgado** para ser aceptado, permitiendo **bloquear** al usuario o el intento de inicio de sesión.
|
||||
|
||||
It allows the admin to configure it to **block** attempts when the risk is "Low and above", "Medium and above" or "High". Although, by default it's completely **disabled**:
|
||||
Permite al administrador configurarlo para **bloquear** intentos cuando el riesgo es "Bajo y superior", "Medio y superior" o "Alto". Aunque, por defecto, está completamente **deshabilitado**:
|
||||
|
||||
<figure><img src="../../../images/image (356).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!TIP]
|
||||
> Nowadays it's recommended to add these restrictions via Conditional Access policies where it's possible to configure the same options.
|
||||
> Hoy en día se recomienda agregar estas restricciones a través de políticas de Acceso Condicional donde es posible configurar las mismas opciones.
|
||||
|
||||
### Entra Password Protection
|
||||
### Protección de Contraseñas de Entra
|
||||
|
||||
Entra Password Protection ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) is a security feature that **helps prevent the abuse of weak passwords in by locking out accounts when several unsuccessful login attempts happen**.\
|
||||
It also allows to **ban a custom password list** that you need to provide.
|
||||
La Protección de Contraseñas de Entra ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) es una característica de seguridad que **ayuda a prevenir el abuso de contraseñas débiles al bloquear cuentas cuando ocurren varios intentos de inicio de sesión fallidos**.\
|
||||
También permite **prohibir una lista de contraseñas personalizadas** que debe proporcionar.
|
||||
|
||||
It can be **applied both** at the cloud level and on-premises Active Directory.
|
||||
Se puede **aplicar tanto** a nivel de nube como en Active Directory local.
|
||||
|
||||
The default mode is **Audit**:
|
||||
El modo predeterminado es **Auditoría**:
|
||||
|
||||
<figure><img src="../../../images/image (355).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## References
|
||||
## Referencias
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units](https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units)
|
||||
|
||||
|
||||
@@ -4,28 +4,28 @@
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell** es un terminal interactivo, autenticado y accesible a través del navegador, diseñado para gestionar recursos de Azure, ofreciendo la flexibilidad de trabajar con Bash o PowerShell. Se ejecuta en un host temporal por sesión que expira después de 20 minutos de inactividad, mientras persiste archivos en la ubicación $HOME utilizando un recurso compartido de archivos de 5 GB. Cloud Shell se puede acceder a través de múltiples puntos, incluyendo el portal de Azure, shell.azure.com, la documentación de Azure CLI y PowerShell, la aplicación móvil de Azure y la extensión de Azure Account de Visual Studio Code.
|
||||
**Azure Cloud Shell** es un terminal interactivo, autenticado y accesible desde el navegador, diseñado para gestionar recursos de Azure, ofreciendo la flexibilidad de trabajar con Bash o PowerShell. Se ejecuta en un host temporal por sesión que expira después de 20 minutos de inactividad, mientras persiste archivos en la ubicación $HOME utilizando un recurso compartido de archivos de 5 GB. Cloud Shell se puede acceder a través de múltiples puntos, incluyendo el portal de Azure, shell.azure.com, la documentación de Azure CLI y PowerShell, la aplicación móvil de Azure y la extensión de Azure Account de Visual Studio Code.
|
||||
|
||||
No hay permisos asignados a este servicio, por lo tanto, no hay técnicas de escalada de privilegios. Además, no hay ningún tipo de enumeración.
|
||||
|
||||
### Características Clave
|
||||
|
||||
**Entorno**: Azure Cloud Shell proporciona un entorno seguro al ejecutarse en Azure Linux, la propia distribución de Linux de Microsoft diseñada para infraestructura en la nube. Todos los paquetes incluidos en el repositorio de Azure Linux son compilados internamente por Microsoft para protegerse contra ataques a la cadena de suministro.
|
||||
**Entorno**: Azure Cloud Shell proporciona un entorno seguro al ejecutarse en Azure Linux, la propia distribución de Linux de Microsoft diseñada para infraestructura en la nube. Todos los paquetes incluidos en el repositorio de Azure Linux son compilados internamente por Microsoft para protegerse contra ataques de la cadena de suministro.
|
||||
**Herramientas Preinstaladas**: Cloud Shell incluye un conjunto completo de herramientas preinstaladas como Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git y editores de texto como vim, nano y emacs. Estas herramientas están listas para usar. Para listar los paquetes y módulos instalados, puedes usar "Get-Module -ListAvailable", "tdnf list" y "pip3 list".
|
||||
**Persistencia de $HOME**: Al iniciar Azure Cloud Shell por primera vez, puedes usarlo con o sin una cuenta de almacenamiento adjunta. Elegir no adjuntar almacenamiento crea una sesión efímera donde los archivos se eliminan al finalizar la sesión. Para persistir archivos entre sesiones, monta una cuenta de almacenamiento, que se adjunta automáticamente como **$HOME\clouddrive**, con tu directorio **$HOME** guardado como un archivo **.img** en Azure File Share. Sin embargo, los archivos fuera de $HOME y los estados de la máquina no se persisten. Para almacenar de forma segura secretos como claves SSH, utiliza Azure Key Vault.
|
||||
**Unidad de Azure (Azure:)**: PowerShell en Azure Cloud Shell incluye la unidad de Azure (Azure:), que permite una fácil navegación de recursos de Azure como Compute, Network y Storage utilizando comandos similares a los del sistema de archivos. Cambia a la unidad de Azure con cd Azure: y regresa a tu directorio personal con cd ~. Aún puedes usar cmdlets de Azure PowerShell para gestionar recursos desde cualquier unidad.
|
||||
**Unidad de Azure (Azure:)**: PowerShell en Azure Cloud Shell incluye la unidad de Azure (Azure:), que permite una navegación fácil de los recursos de Azure como Compute, Network y Storage utilizando comandos similares a los del sistema de archivos. Cambia a la unidad de Azure con cd Azure: y regresa a tu directorio personal con cd ~. Aún puedes usar cmdlets de Azure PowerShell para gestionar recursos desde cualquier unidad.
|
||||
**Instalación de Herramientas Personalizadas**: Los usuarios que configuran Cloud Shell con una cuenta de almacenamiento pueden instalar herramientas adicionales que no requieren permisos de root. Esta característica permite una mayor personalización del entorno de Cloud Shell, permitiendo a los usuarios adaptar su configuración a sus necesidades específicas.
|
||||
|
||||
## Referencias
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
|
||||
* [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
|
||||
- [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
|
||||
- [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
|
||||
- [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
|
||||
|
||||
## Persistencia
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-cloud-shell-persistence.md" %}
|
||||
[az-cloud-shell-persistence.md](../az-privilege-escalation/az-cloud-shell-persistence.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-persistence/az-cloud-shell-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -8,17 +8,13 @@
|
||||
|
||||
Azure Cosmos DB proporciona múltiples APIs de base de datos para modelar datos del mundo real utilizando documentos, modelos de datos relacionales, clave-valor, gráfico y de familia de columnas, siendo estas APIs NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin y Table.
|
||||
|
||||
Un aspecto clave de CosmosDB es la Cuenta de Azure Cosmos. **La Cuenta de Azure Cosmos** actúa como el punto de entrada a las bases de datos. La cuenta determina configuraciones clave como la distribución global, los niveles de consistencia y la API específica que se utilizará, como NoSQL. A través de la cuenta, puedes configurar la replicación global para garantizar que los datos estén disponibles en múltiples regiones para un acceso de baja latencia. Además, puedes elegir un nivel de consistencia que equilibre el rendimiento y la precisión de los datos, con opciones que van desde la consistencia Fuerte hasta la consistencia Eventual.
|
||||
Un aspecto clave de CosmosDB es la Cuenta de Azure Cosmos. **Cuenta de Azure Cosmos**, actúa como el punto de entrada a las bases de datos. La cuenta determina configuraciones clave como la distribución global, los niveles de consistencia y la API específica que se utilizará, como NoSQL. A través de la cuenta, puedes configurar la replicación global para garantizar que los datos estén disponibles en múltiples regiones para un acceso de baja latencia. Además, puedes elegir un nivel de consistencia que equilibre el rendimiento y la precisión de los datos, con opciones que van desde Consistencia Fuerte hasta Consistencia Eventual.
|
||||
|
||||
### NoSQL (sql)
|
||||
La API NoSQL de Azure Cosmos DB es una API basada en documentos que utiliza JSON como su formato de datos. Proporciona una sintaxis de consulta similar a SQL para consultar objetos JSON, lo que la hace adecuada para trabajar con datos estructurados y semi-estructurados. El punto final del servicio es:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### Bases de datos
|
||||
Dentro de una cuenta, puedes crear una o más bases de datos, que sirven como agrupaciones lógicas de contenedores. Una base de datos actúa como un límite para la gestión de recursos y permisos de usuario. Las bases de datos pueden compartir el rendimiento provisionado entre sus contenedores o asignar rendimiento dedicado a contenedores individuales.
|
||||
|
||||
@@ -27,9 +23,8 @@ La unidad central de almacenamiento de datos es el contenedor, que contiene docu
|
||||
|
||||
#### Enumeración
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
```bash
|
||||
# CosmoDB Account
|
||||
## List Azure Cosmos DB database accounts.
|
||||
@@ -65,11 +60,9 @@ az cosmosdb sql trigger list --account-name <AccountName> --container-name <Cont
|
||||
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{{#endtab }}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tab name="Az Powershell" }}
|
||||
```bash
|
||||
Get-Command -Module Az.CosmosD
|
||||
|
||||
@@ -112,14 +105,12 @@ Get-AzCosmosDBSqlTrigger -ResourceGroupName "<ResourceGroupName>" -AccountName "
|
||||
# List all user-defined functions (UDFs) in a specific Cosmos DB SQL container.
|
||||
Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
#### Conexión
|
||||
|
||||
Para conectar la biblioteca azure-cosmosDB (pip install azure-cosmos) es necesario. Además, el endpoint y la clave son componentes cruciales para realizar la conexión.
|
||||
{% code overflow="wrap" %}
|
||||
Para conectar la biblioteca azure-cosmosDB (pip install azure-cosmos) es necesario. Además, el endpoint y la clave son componentes cruciales para establecer la conexión.
|
||||
```python
|
||||
from azure.cosmos import CosmosClient, PartitionKey
|
||||
|
||||
@@ -158,11 +149,7 @@ print("All items in the container:")
|
||||
for item in all_items:
|
||||
print(item)
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Otra forma de establecer una conexión es usar **DefaultAzureCredential()**. Solo necesitas iniciar sesión (az login) con la cuenta que tiene los permisos y ejecutarlo. Para este caso, se debe realizar una asignación de rol, otorgando los permisos necesarios (ver para más)
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Otra forma de establecer una conexión es usar **DefaultAzureCredential()**. Solo necesitas iniciar sesión (az login) con la cuenta que tiene los permisos y ejecutarlo. Para este caso, se debe realizar una asignación de rol, otorgando los permisos necesarios (ver para más).
|
||||
```python
|
||||
from azure.identity import DefaultAzureCredential
|
||||
from azure.cosmos import CosmosClient
|
||||
@@ -187,17 +174,11 @@ item = {
|
||||
container.create_item(item)
|
||||
print("Document inserted.")
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### MongoDB
|
||||
La API NoSQL de MongoDB es una API basada en documentos que utiliza BSON (Binary JSON) similar a JSON como su formato de datos. Proporciona un lenguaje de consulta con capacidades de agregación, lo que la hace adecuada para trabajar con datos estructurados, semi-estructurados y no estructurados. El punto final del servicio generalmente sigue este formato:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
La API NoSQL de MongoDB es una API basada en documentos que utiliza BSON (Binary JSON) similar a JSON como su formato de datos. Proporciona un lenguaje de consulta con capacidades de agregación, lo que la hace adecuada para trabajar con datos estructurados, semi-estructurados y no estructurados. El endpoint del servicio generalmente sigue este formato:
|
||||
```bash
|
||||
mongodb://<hostname>:<port>/<database>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### Bases de datos
|
||||
En MongoDB, puedes crear una o más bases de datos dentro de una instancia. Cada base de datos sirve como un agrupamiento lógico de colecciones y proporciona un límite para la organización y gestión de recursos. Las bases de datos ayudan a separar y gestionar datos lógicamente, como para diferentes aplicaciones o proyectos.
|
||||
|
||||
@@ -206,9 +187,8 @@ La unidad central de almacenamiento de datos en MongoDB es la colección, que co
|
||||
|
||||
#### Enumeración
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
```bash
|
||||
# CosmoDB Account
|
||||
## List Azure Cosmos DB database accounts.
|
||||
@@ -235,11 +215,9 @@ az cosmosdb mongodb role definition list --account-name <AccountName> --resource
|
||||
# List all user definitions for MongoDB within an Azure Cosmos DB account
|
||||
az cosmosdb mongodb user definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{{#endtab }}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tab name="Az Powershell" }}
|
||||
```bash
|
||||
Get-Command -Module Az.CosmosDB
|
||||
|
||||
@@ -271,14 +249,12 @@ Get-AzCosmosDBMongoDBDatabaseThroughput -AccountName <account-name> -ResourceGro
|
||||
Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupName <resource-group-name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
#### Conexión
|
||||
|
||||
Aquí la contraseña que puedes encontrar con las claves o con el método descrito en la sección de privesc.
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
from pymongo import MongoClient
|
||||
|
||||
@@ -311,26 +287,24 @@ document = {
|
||||
result = collection.insert_one(document)
|
||||
print(f"Inserted document with ID: {result.inserted_id}")
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Referencias
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/](https://learn.microsoft.com/en-us/azure/cosmos-db/)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli)
|
||||
- [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
|
||||
- [https://learn.microsoft.com/en-us/azure/cosmos-db/](https://learn.microsoft.com/en-us/azure/cosmos-db/)
|
||||
- [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction)
|
||||
- [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli)
|
||||
|
||||
## Escalación de Privilegios
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-cosmosDB-privesc.md" %}
|
||||
[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-cosmosDB-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Post Explotación
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-cosmosDB-post-exploitation.md" %}
|
||||
[az-cosmosDB-post-exploitation.md](../az-post-exploitation/az-sql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-sql-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
## ToDo
|
||||
|
||||
@@ -338,6 +312,4 @@ print(f"Inserted document with ID: {result.inserted_id}")
|
||||
* Echar un vistazo a la post explotación "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" y definiciones de roles porque aquí podría haber una escalación de privilegios
|
||||
* Echar un vistazo a las restauraciones
|
||||
|
||||
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Información Básica
|
||||
|
||||
**Azure Files** es un servicio de almacenamiento de archivos en la nube completamente gestionado que proporciona almacenamiento de archivos compartidos accesible a través de los protocolos estándar **SMB (Server Message Block)** y **NFS (Network File System)**. Aunque el protocolo principal utilizado es SMB, los compartidos de archivos de Azure NFS no son compatibles con Windows (según la [**documentación**](https://learn.microsoft.com/en-us/azure/storage/files/files-nfs-protocol)). Permite crear compartidos de archivos en red altamente disponibles que pueden ser accedidos simultáneamente por múltiples máquinas virtuales (VMs) o sistemas locales, lo que permite un intercambio de archivos sin problemas entre entornos.
|
||||
**Azure Files** es un servicio de almacenamiento de archivos en la nube completamente gestionado que proporciona almacenamiento de archivos compartidos accesible a través de los protocolos estándar **SMB (Server Message Block)** y **NFS (Network File System)**. Aunque el protocolo principal utilizado es SMB, las comparticiones de archivos de Azure NFS no son compatibles con Windows (según la [**documentación**](https://learn.microsoft.com/en-us/azure/storage/files/files-nfs-protocol)). Permite crear comparticiones de archivos en red altamente disponibles que pueden ser accedidas simultáneamente por múltiples máquinas virtuales (VMs) o sistemas locales, lo que permite un intercambio de archivos sin problemas entre entornos.
|
||||
|
||||
### Niveles de Acceso
|
||||
|
||||
@@ -25,13 +25,13 @@
|
||||
|
||||
- **Autenticación de AD DS local**: Utiliza credenciales de Active Directory locales sincronizadas con Microsoft Entra ID para acceso basado en identidad. Requiere conectividad de red a AD DS local.
|
||||
- **Autenticación de Microsoft Entra Domain Services**: Aprovecha los Servicios de Dominio de Microsoft Entra (AD basado en la nube) para proporcionar acceso utilizando credenciales de Microsoft Entra.
|
||||
- **Microsoft Entra Kerberos para Identidades Híbridas**: Permite a los usuarios de Microsoft Entra autenticar compartidos de archivos de Azure a través de Internet utilizando Kerberos. Soporta VMs unidas a Microsoft Entra híbridas o unidas a Microsoft Entra sin requerir conectividad a controladores de dominio locales. Pero no soporta identidades solo en la nube.
|
||||
- **Autenticación de Kerberos de AD para Clientes Linux**: Permite a los clientes Linux utilizar Kerberos para la autenticación SMB a través de AD DS local o Servicios de Dominio de Microsoft Entra.
|
||||
- **Microsoft Entra Kerberos para Identidades Híbridas**: Permite a los usuarios de Microsoft Entra autenticar las comparticiones de archivos de Azure a través de Internet utilizando Kerberos. Soporta VMs unidas a Microsoft Entra híbridas o unidas a Microsoft Entra sin requerir conectividad a controladores de dominio locales. Pero no soporta identidades solo en la nube.
|
||||
- **Autenticación de Kerberos de AD para Clientes de Linux**: Permite a los clientes de Linux utilizar Kerberos para la autenticación SMB a través de AD DS local o Servicios de Dominio de Microsoft Entra.
|
||||
|
||||
## Enumeración
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="az cli"}}
|
||||
{{#tabs }}
|
||||
{{#tab name="az" }}
|
||||
```bash
|
||||
# Get storage accounts
|
||||
az storage account list #Get the account name from here
|
||||
@@ -58,9 +58,9 @@ az storage file list --account-name <name> --share-name <share-name> --snapshot
|
||||
# Download snapshot/backup
|
||||
az storage file download-batch -d . --account-name <name> --source <share-name> --snapshot <snapshot-version>
|
||||
```
|
||||
{{#endtab}}
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Az PowerShell"}}
|
||||
{{#tab name="Az Powershell" }}
|
||||
```bash
|
||||
Get-AzStorageAccount
|
||||
|
||||
@@ -81,11 +81,11 @@ Get-AzStorageShare -Context (Get-AzStorageAccount -ResourceGroupName "<resource-
|
||||
Get-AzStorageFile -ShareName "<share-name>" -Context (New-AzStorageContext -StorageAccountName "<storage-account-name>" -StorageAccountKey (Get-AzStorageAccountKey -ResourceGroupName "<resource-group-name>" -Name "<storage-account-name>" | Select-Object -ExpandProperty Value) -SnapshotTime "<snapshot-version>")
|
||||
|
||||
```
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
> [!NOTE]
|
||||
> Por defecto, `az` cli utilizará una clave de cuenta para firmar una clave y realizar la acción. Para usar los privilegios del principal de Entra ID, utiliza los parámetros `--auth-mode login --enable-file-backup-request-intent`.
|
||||
> Por defecto, `az` cli usará una clave de cuenta para firmar una clave y realizar la acción. Para usar los privilegios del principal de Entra ID, utiliza los parámetros `--auth-mode login --enable-file-backup-request-intent`.
|
||||
|
||||
> [!TIP]
|
||||
> Usa el parámetro `--account-key` para indicar la clave de cuenta a utilizar\
|
||||
@@ -144,7 +144,7 @@ az-storage.md
|
||||
|
||||
## Escalamiento de privilegios
|
||||
|
||||
Lo mismo que privesc de almacenamiento:
|
||||
Igual que el privesc de almacenamiento:
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-storage-privesc.md
|
||||
@@ -158,7 +158,7 @@ Lo mismo que privesc de almacenamiento:
|
||||
|
||||
## Persistencia
|
||||
|
||||
Lo mismo que persistencia de almacenamiento:
|
||||
Igual que la persistencia de almacenamiento:
|
||||
|
||||
{{#ref}}
|
||||
../az-persistence/az-storage-persistence.md
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
|
||||
- **Flex Consumption Plan**: Ofrece **escalado dinámico impulsado por eventos** con precios de pago por uso, añadiendo o eliminando instancias de función según la demanda. Soporta **redes virtuales** y **instancias pre-provisionadas** para reducir los inicios en frío, lo que lo hace adecuado para **cargas de trabajo variables** que no requieren soporte de contenedores.
|
||||
- **Traditional Consumption Plan**: La opción sin servidor predeterminada, donde **solo pagas por los recursos de computación cuando se ejecutan las funciones**. Escala automáticamente según los eventos entrantes e incluye **optimización de inicios en frío**, pero no admite implementaciones de contenedores. Ideal para **cargas de trabajo intermitentes** que requieren escalado automático.
|
||||
- **Premium Plan**: Diseñado para **rendimiento consistente**, con **trabajadores precalentados** para eliminar los inicios en frío. Ofrece **tiempos de ejecución extendidos, redes virtuales**, y soporta **imágenes de Linux personalizadas**, lo que lo hace perfecto para **aplicaciones críticas** que necesitan alto rendimiento y características avanzadas.
|
||||
- **Dedicated Plan**: Se ejecuta en máquinas virtuales dedicadas con **facturación predecible** y admite escalado manual o automático. Permite ejecutar múltiples aplicaciones en el mismo plan, proporciona **aislamiento de computación**, y asegura **acceso seguro a la red** a través de App Service Environments, lo que lo hace ideal para **aplicaciones de larga duración** que necesitan asignación de recursos consistente.
|
||||
- **Container Apps**: Permite desplegar **aplicaciones de función en contenedores** en un entorno gestionado, junto con microservicios y APIs. Soporta bibliotecas personalizadas, migración de aplicaciones heredadas, y **procesamiento GPU**, eliminando la gestión del clúster de Kubernetes. Ideal para **aplicaciones escalables en contenedores impulsadas por eventos**.
|
||||
- **Premium Plan**: Diseñado para **rendimiento consistente**, con **trabajadores precalentados** para eliminar los inicios en frío. Ofrece **tiempos de ejecución extendidos, redes virtuales** y admite **imágenes de Linux personalizadas**, lo que lo hace perfecto para **aplicaciones críticas** que necesitan alto rendimiento y características avanzadas.
|
||||
- **Dedicated Plan**: Se ejecuta en máquinas virtuales dedicadas con **facturación predecible** y admite escalado manual o automático. Permite ejecutar múltiples aplicaciones en el mismo plan, proporciona **aislamiento de computación** y asegura **acceso seguro a la red** a través de App Service Environments, lo que lo hace ideal para **aplicaciones de larga duración** que necesitan asignación de recursos consistente.
|
||||
- **Container Apps**: Permite desplegar **aplicaciones de función en contenedores** en un entorno gestionado, junto con microservicios y APIs. Soporta bibliotecas personalizadas, migración de aplicaciones heredadas y **procesamiento GPU**, eliminando la gestión del clúster de Kubernetes. Ideal para **aplicaciones escalables en contenedores impulsadas por eventos**.
|
||||
|
||||
### **Buckets de Almacenamiento**
|
||||
|
||||
Al crear una nueva Function App no contenedorizada (pero dando el código para ejecutar), los **códigos y otros datos relacionados con la función se almacenarán en una cuenta de almacenamiento**. Por defecto, la consola web creará una nueva por función para almacenar el código.
|
||||
Al crear una nueva Function App no contenedorizada (pero proporcionando el código para ejecutar), los **códigos y otros datos relacionados con la función se almacenarán en una cuenta de almacenamiento**. Por defecto, la consola web creará una nueva por función para almacenar el código.
|
||||
|
||||
Además, al modificar el código dentro del bucket (en los diferentes formatos en que podría estar almacenado), el **código de la aplicación se modificará al nuevo y se ejecutará** la próxima vez que se llame a la función.
|
||||
|
||||
@@ -30,7 +30,7 @@ Además, al modificar el código dentro del bucket (en los diferentes formatos e
|
||||
|
||||
También es posible encontrar las **claves maestra y de funciones** almacenadas en la cuenta de almacenamiento en el contenedor **`azure-webjobs-secrets`** dentro de la carpeta **`<app-name>`** en los archivos JSON que puedes encontrar dentro.
|
||||
|
||||
Ten en cuenta que las Functions también permiten almacenar el código en una ubicación remota simplemente indicando la URL a la misma.
|
||||
Ten en cuenta que Functions también permiten almacenar el código en una ubicación remota simplemente indicando la URL a la misma.
|
||||
|
||||
### Networking
|
||||
|
||||
@@ -79,7 +79,7 @@ Ten en cuenta que necesitas encontrar una manera de **verificar todas las Identi
|
||||
Al crear un endpoint dentro de una función usando un **desencadenador HTTP**, es posible indicar el **nivel de autorización de clave de acceso** necesario para activar la función. Hay tres opciones disponibles:
|
||||
|
||||
- **ANONYMOUS**: **Todos** pueden acceder a la función a través de la URL.
|
||||
- **FUNCTION**: El endpoint solo es accesible para usuarios que usan una **clave de función, host o maestra**.
|
||||
- **FUNCTION**: El endpoint solo es accesible para usuarios que utilizan una **clave de función, host o maestra**.
|
||||
- **ADMIN**: El endpoint solo es accesible para usuarios con una **clave maestra**.
|
||||
|
||||
**Tipo de claves:**
|
||||
@@ -96,15 +96,15 @@ Al crear un endpoint dentro de una función usando un **desencadenador HTTP**, e
|
||||
|
||||
### Autenticación Básica
|
||||
|
||||
Al igual que en los App Services, las Functions también admiten autenticación básica para conectarse a **SCM** y **FTP** para desplegar código usando un **nombre de usuario y contraseña en una URL** proporcionada por Azure. Más información al respecto en:
|
||||
Al igual que en App Services, las Functions también admiten autenticación básica para conectarse a **SCM** y **FTP** para desplegar código usando un **nombre de usuario y contraseña en una URL** proporcionada por Azure. Más información al respecto en:
|
||||
|
||||
{{#ref}}
|
||||
az-app-services.md
|
||||
{{#endref}}
|
||||
|
||||
### Despliegues Basados en Github
|
||||
### Implementaciones Basadas en Github
|
||||
|
||||
Cuando se genera una función a partir de un repositorio de Github, la consola web de Azure permite **crear automáticamente un flujo de trabajo de Github en un repositorio específico**, de modo que cada vez que se actualice este repositorio, se actualice el código de la función. De hecho, el yaml de Github Action para una función de python se ve así:
|
||||
Cuando se genera una función a partir de un repositorio de Github, la consola web de Azure permite **crear automáticamente un flujo de trabajo de Github en un repositorio específico** para que cada vez que se actualice este repositorio, se actualice el código de la función. De hecho, el yaml de Github Action para una función de python se ve así:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -197,7 +197,7 @@ Además, se crea una **Identidad Administrada** para que la Acción de Github de
|
||||
> [!CAUTION]
|
||||
> Por lo tanto, cualquier persona que comprometa ese repositorio podrá comprometer la función y las Identidades Administradas asociadas a ella.
|
||||
|
||||
### Despliegues Basados en Contenedores
|
||||
### Implementaciones Basadas en Contenedores
|
||||
|
||||
No todos los planes permiten desplegar contenedores, pero para aquellos que sí, la configuración contendrá la URL del contenedor. En la API, la configuración **`linuxFxVersion`** tendrá algo como: `DOCKER|mcr.microsoft.com/...`, mientras que en la consola web, la configuración mostrará los **ajustes de imagen**.
|
||||
|
||||
@@ -205,9 +205,8 @@ Además, **no se almacenará código fuente en la** cuenta de almacenamiento rel
|
||||
|
||||
## Enumeración
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
```bash
|
||||
# List all the functions
|
||||
az functionapp list
|
||||
@@ -253,11 +252,9 @@ curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/func
|
||||
# Get source code
|
||||
az rest --url "https://management.azure.com/<subscription>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{{#endtab }}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tab name="Az Powershell" }}
|
||||
```powershell
|
||||
Get-Command -Module Az.Functions
|
||||
|
||||
@@ -273,9 +270,9 @@ Get-AzFunctionAppPlan -ResourceGroupName <String> -Name <String>
|
||||
# Retrieves the app settings for a specific Azure Function App.
|
||||
Get-AzFunctionAppSetting -Name <FunctionAppName> -ResourceGroupName <ResourceGroupName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
|
||||
## Escalación de Privilegios
|
||||
|
||||
|
||||
@@ -43,9 +43,8 @@ Hay varias opciones de alojamiento:
|
||||
|
||||
### Enumeración
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
```bash
|
||||
# List
|
||||
az logic workflow list --resource-group <ResourceGroupName>
|
||||
@@ -108,11 +107,9 @@ az logicapp show --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
# List all application settings for a specific Logic App
|
||||
az logicapp config appsettings list --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{{#endtab }}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tab name="Az Powershell" }}
|
||||
```bash
|
||||
Get-Command -Module Az.LogicApp
|
||||
|
||||
@@ -137,18 +134,15 @@ Get-AzLogicAppTriggerCallbackUrl -ResourceGroupName "<ResourceGroupName>" -LName
|
||||
Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>" -TriggerName "<TriggerName>"
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### Cuentas de Integración
|
||||
**Cuentas de Integración**, son una característica de Azure Logic Apps. Las Cuentas de Integración se utilizan para facilitar integraciones a nivel empresarial al habilitar capacidades avanzadas de B2B, como EDI, AS2 y gestión de esquemas XML. Las Cuentas de Integración son un contenedor en Azure que almacena los siguientes artefactos utilizados para Logic Apps:
|
||||
|
||||
* Esquemas: Gestionar esquemas XML para validar y procesar mensajes en su cuenta de integración.
|
||||
* Mapas: Configurar transformaciones basadas en XSLT para convertir formatos de datos dentro de sus flujos de trabajo de integración.
|
||||
* Ensamblajes: Gestionar ensamblajes de cuentas de integración para optimizar la lógica y el procesamiento de datos.
|
||||
* Ensamblajes: Gestionar ensamblajes de la cuenta de integración para optimizar la lógica y el procesamiento de datos.
|
||||
* Certificados: Manejar certificados para cifrar y firmar mensajes, asegurando una comunicación segura.
|
||||
* Socios: Gestionar información de socios comerciales para transacciones B2B, permitiendo integraciones sin problemas.
|
||||
* Acuerdos: Configurar reglas y ajustes para intercambiar datos con socios comerciales (por ejemplo, EDI, AS2).
|
||||
@@ -157,9 +151,8 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
|
||||
|
||||
#### Enumeración
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
```bash
|
||||
# Integration account
|
||||
az logic integration-account list --resource-group <resource-group-name>
|
||||
@@ -219,11 +212,9 @@ az logic integration-account assembly show \
|
||||
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{{#endtab }}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tab name="Az Powershell" }}
|
||||
```powershell
|
||||
Get-Command -Module Az.LogicApp
|
||||
|
||||
@@ -254,23 +245,22 @@ Get-AzIntegrationAccountPartner -ResourceGroupName <resource-group-name> -Integr
|
||||
# Retrieve details of a specific schema in an integration account
|
||||
Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <schema-name>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
|
||||
## Escalación de Privilegios
|
||||
|
||||
Lo mismo que la escalación de privilegios de las aplicaciones lógicas:
|
||||
Igual que la escalación de privilegios de las aplicaciones lógicas:
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-logic-apps-privesc.md" %}
|
||||
[az-logic-apps-privesc.md](../az-privilege-escalation/az-logic-apps-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-logic-apps-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Post Explotación
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-logic-apps-post-exploitation.md" %}
|
||||
[az-logic-apps-post-exploitation.md](../az-post-exploitation/az-logic-apps-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-logic-apps-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Az - Bases de datos MySQL
|
||||
# Az - Bases de Datos MySQL
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -23,9 +23,8 @@ Azure Database for MySQL es un servicio de base de datos relacional completament
|
||||
|
||||
### Enumeración
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
```bash
|
||||
# List all flexible-servers
|
||||
az mysql flexible-server db list --resource-group <resource-group-name>
|
||||
@@ -55,11 +54,9 @@ az mysql flexible-server maintenance list --resource-group <resource-group-name>
|
||||
az mysql flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{{#endtab }}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tab name="Az Powershell" }}
|
||||
```bash
|
||||
Get-Command -Module Az.MySql
|
||||
|
||||
@@ -95,15 +92,12 @@ Get-AzMySqlFlexibleServerMaintenanceWindow -ResourceGroupName <resource-group-na
|
||||
# List log files for a server
|
||||
Get-AzMySqlFlexibleServerLog -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### Conexión
|
||||
|
||||
Con la extensión rdbms-connect puedes acceder a la base de datos con:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server connect -n <server-name> -u <username> -p <password> --interactive
|
||||
|
||||
@@ -116,17 +110,11 @@ az mysql flexible-server execute \
|
||||
--querytext "SELECT * FROM <table-name>;"
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
O con el plugin de extensión nativa de MySQL
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
También puedes ejecutar consultas con github, pero también se necesitan la contraseña y el usuario. Necesitas configurar un archivo sql con la consulta a ejecutar y luego:
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Setup
|
||||
az mysql flexible-server deploy setup \
|
||||
@@ -145,24 +133,20 @@ az mysql flexible-server deploy run \
|
||||
--action-name <action-name> \
|
||||
--branch <branch-name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Escalación de Privilegios
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-mysql-privesc.md" %}
|
||||
[az-mysql-privesc.md](../az-privilege-escalation/az-mysql-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-mysql-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Post Explotación
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-mysql-post-exploitation.md" %}
|
||||
[az-sql-mysql-exploitation.md](../az-post-exploitation/az-mysql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-mysql-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
## ToDo
|
||||
|
||||
* Buscar una forma de acceder con mysql flexible-server ad-admin para verificar si es un método de escalación de privilegios
|
||||
|
||||
|
||||
* Buscar una forma de acceder con mysql flexible-server ad-admin para verificar que es un método de escalación de privilegios
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -21,14 +21,13 @@
|
||||
* **Monitoreo Activo**: Accede a métricas y registros detallados para rastrear y mejorar el rendimiento de la base de datos.
|
||||
* **Detener/Iniciar Servidor**: Los usuarios pueden detener e iniciar el servidor.
|
||||
* **Copias de Seguridad Automáticas**: Copias de seguridad diarias integradas con períodos de retención configurables de hasta 35 días.
|
||||
* **Acceso Basado en Roles**: Controla los permisos de usuario y el acceso administrativo a través de Azure Active Directory.
|
||||
* **Acceso Basado en Roles**: Controla los permisos de los usuarios y el acceso administrativo a través de Azure Active Directory.
|
||||
* **Seguridad y Redes**: puede gestionar las reglas del firewall del servidor para un acceso seguro a la base de datos y desacoplar configuraciones de red virtual según sea necesario.
|
||||
|
||||
### Enumeración
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
```bash
|
||||
# List servers in a resource group
|
||||
az postgres flexible-server list --resource-group <resource-group-name>
|
||||
@@ -64,11 +63,9 @@ az postgres flexible-server maintenance list --resource-group <resource-group-na
|
||||
az postgres flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{{#endtab }}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tab name="Az Powershell" }}
|
||||
```bash
|
||||
Get-Command -Module Az.PostgreSql
|
||||
|
||||
@@ -91,15 +88,12 @@ Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location <location>
|
||||
Get-AzPostgreSqlServer -ResourceGroupName <resource-group-name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### Conexión
|
||||
|
||||
Con la extensión rdbms-connect puedes acceder a la base de datos con:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server connect -n <server-name> -u <username> -p <password> --interactive
|
||||
|
||||
@@ -112,36 +106,31 @@ az postgres flexible-server execute \
|
||||
--querytext "SELECT * FROM <table-name>;"
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
O
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser <database-name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Referencias
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/)
|
||||
* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview)
|
||||
* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview)
|
||||
- [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/)
|
||||
- [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview)
|
||||
- [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview)
|
||||
|
||||
## Escalación de Privilegios
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-postgresql-privesc.md" %}
|
||||
[az-postgresql-privesc.md](../az-privilege-escalation/az-postgresql-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-postgresql-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
## Post Explotación
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-postgresql-post-exploitation.md" %}
|
||||
[az-postgresql-post-exploitation.md](../az-post-exploitation/az-postgresql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-post-exploitation/az-postgresql-post-exploitation.md
|
||||
{{#endref}}
|
||||
|
||||
## ToDo
|
||||
|
||||
* Buscar una forma de acceder con ad-admin para verificar que es un método de privesc
|
||||
* Buscar una forma de acceder con ad-admin para verificar si es un método de privesc
|
||||
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Información Básica
|
||||
|
||||
Azure Queue Storage es un servicio en la plataforma de nube Azure de Microsoft diseñado para la **comunicación asíncrona y desacoplamiento** entre componentes de aplicación. Permite almacenar un número ilimitado de mensajes, cada uno de hasta 64 KB de tamaño, y soporta operaciones como crear y eliminar colas, agregar, recuperar, actualizar y eliminar mensajes, así como gestionar metadatos y políticas de acceso. Aunque típicamente procesa mensajes en un orden de primero en entrar, primero en salir (FIFO), no se garantiza un FIFO estricto.
|
||||
Azure Queue Storage es un servicio en la plataforma de nube Azure de Microsoft diseñado para la cola de mensajes entre componentes de la aplicación, **permitiendo la comunicación asíncrona y el desacoplamiento**. Te permite almacenar un número ilimitado de mensajes, cada uno de hasta 64 KB de tamaño, y soporta operaciones como crear y eliminar colas, agregar, recuperar, actualizar y eliminar mensajes, así como gestionar metadatos y políticas de acceso. Aunque típicamente procesa mensajes en un orden de primero en entrar, primero en salir (FIFO), no se garantiza un FIFO estricto.
|
||||
|
||||
### Enumeración
|
||||
|
||||
@@ -12,19 +12,19 @@ Azure Queue Storage es un servicio en la plataforma de nube Azure de Microsoft d
|
||||
{{#tab name="Az Cli" }}
|
||||
```bash
|
||||
# You need to know the --account-name of the storage (az storage account list)
|
||||
az storage queue list --account-name <storage_account>
|
||||
az storage queue list --account-name <storage_account> # --auth-mode login
|
||||
|
||||
# Queue Metadata
|
||||
az storage queue metadata show --name <queue_name> --account-name <storage_account>
|
||||
az storage queue metadata show --name <queue_name> --account-name <storage_account> # --auth-mode login
|
||||
|
||||
#Get ACL
|
||||
az storage queue policy list --queue-name <queue_name> --account-name <storage_account>
|
||||
az storage queue policy list --queue-name <queue_name> --account-name <storage_account> # --auth-mode login
|
||||
|
||||
# Get Messages (getting a message deletes it)
|
||||
az storage message get --queue-name <queue_name> --account-name <storage_account>
|
||||
az storage message get --queue-name <queue_name> --account-name <storage_account> # --auth-mode login
|
||||
|
||||
# Peek Messages
|
||||
az storage message peek --queue-name <queue_name> --account-name <storage_account>
|
||||
az storage message peek --queue-name <queue_name> --account-name <storage_account> # --auth-mode login
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ Algunas características avanzadas son:
|
||||
|
||||
### Regla de Autorización / Política SAS
|
||||
|
||||
Las Políticas SAS definen los permisos de acceso para las entidades del espacio de nombres de Azure Service Bus (la más importante), colas y temas. Cada política tiene los siguientes componentes:
|
||||
Las Políticas SAS definen los permisos de acceso para las entidades del espacio de nombres de Azure Service Bus (el más importante), colas y temas. Cada política tiene los siguientes componentes:
|
||||
|
||||
- **Permisos**: Casillas de verificación para especificar niveles de acceso:
|
||||
- Administrar: Otorga control total sobre la entidad, incluyendo la configuración y gestión de permisos.
|
||||
@@ -51,9 +51,8 @@ sku, regla de autorización,
|
||||
|
||||
### Enumeración
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
```bash
|
||||
# Queue Enumeration
|
||||
az servicebus queue list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
|
||||
@@ -81,11 +80,9 @@ az servicebus queue authorization-rule list --resource-group <MyResourceGroup> -
|
||||
az servicebus topic authorization-rule list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic>
|
||||
az servicebus namespace authorization-rule keys list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyAuthRule>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{{#endtab }}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
{{#tab name="Az Powershell" }}
|
||||
```powershell
|
||||
Get-Command -Module Az.ServiceBus
|
||||
|
||||
@@ -128,9 +125,8 @@ Get-AzServiceBusSubscription -ResourceGroupName <ResourceGroupName> -NamespaceNa
|
||||
# Retrieves details of a specified topic in a Service Bus namespace.
|
||||
Get-AzServiceBusTopic -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
|
||||
### Escalación de Privilegios
|
||||
@@ -147,8 +143,8 @@ Get-AzServiceBusTopic -ResourceGroupName <ResourceGroupName> -NamespaceName <Nam
|
||||
|
||||
## Referencias
|
||||
|
||||
- https://learn.microsoft.com/en-us/powershell/module/az.servicebus/?view=azps-13.0.0
|
||||
- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview
|
||||
- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quickstart-cli
|
||||
- [https://learn.microsoft.com/en-us/powershell/module/az.servicebus/?view=azps-13.0.0](https://learn.microsoft.com/en-us/powershell/module/az.servicebus/?view=azps-13.0.0)
|
||||
- [https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview)
|
||||
- [https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quickstart-cli](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quickstart-cli)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -28,18 +28,18 @@ Las Máquinas Virtuales (VMs) de Azure son servidores **basados en la nube flexi
|
||||
- **Ninguno**: Básicamente abre todos los puertos
|
||||
- **Básico**: Permite abrir fácilmente los puertos de entrada HTTP (80), HTTPS (443), SSH (22), RDP (3389)
|
||||
- **Avanzado**: Selecciona un grupo de seguridad
|
||||
- **Copia de seguridad**: Es posible habilitar la copia de seguridad **Estándar** (una al día) y **Mejorada** (múltiples al día)
|
||||
- **Copia de seguridad**: Es posible habilitar copia de seguridad **Estándar** (una al día) y **Mejorada** (múltiples al día)
|
||||
- **Opciones de orquestación de parches**: Esto permite aplicar automáticamente parches en las VMs de acuerdo con la política seleccionada como se describe en los [**docs**](https://learn.microsoft.com/en-us/azure/virtual-machines/automatic-vm-guest-patching).
|
||||
- **Alertas**: Es posible recibir automáticamente alertas por correo electrónico o aplicación móvil cuando algo sucede en la VM. Reglas predeterminadas:
|
||||
- El porcentaje de CPU es mayor al 80%
|
||||
- Los bytes de memoria disponible son menos de 1GB
|
||||
- El porcentaje de IOPS consumidos por discos de datos es mayor al 95%
|
||||
- El porcentaje de IOPS consumidos por el SO es mayor al 95%
|
||||
- El porcentaje de IOPS consumidos de discos de datos es mayor al 95%
|
||||
- El porcentaje de IOPS consumidos del SO es mayor al 95%
|
||||
- La red total es mayor a 500GB
|
||||
- La red de salida total es mayor a 200GB
|
||||
- VmAvailabilityMetric es menor a 1
|
||||
- **Monitor de salud**: Por defecto verifica el protocolo HTTP en el puerto 80
|
||||
- **Bloqueos**: Permite bloquear una VM para que solo pueda ser leída (**Bloqueo de Solo Lectura**) o que pueda ser leída y actualizada pero no eliminada (**Bloqueo de No Se Puede Eliminar**).
|
||||
- **Bloqueos**: Permite bloquear una VM para que solo pueda ser leída (**Bloqueo de Solo Lectura**) o que pueda ser leída y actualizada pero no eliminada (**Bloqueo No Eliminable**).
|
||||
- La mayoría de los recursos relacionados con VM **también soportan bloqueos** como discos, instantáneas...
|
||||
- Los bloqueos también se pueden aplicar a **niveles de grupo de recursos y suscripción**
|
||||
|
||||
@@ -142,17 +142,17 @@ Get-AzRestorePointCollection -Name <CollectionName> -ResourceGroupName <Resource
|
||||
{{#endtab}}
|
||||
{{#endtabs}}
|
||||
|
||||
## Recuperación de Sitios de Azure
|
||||
## Azure Site Recovery
|
||||
|
||||
De los [**docs**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview): La Recuperación de Sitios ayuda a garantizar la continuidad del negocio manteniendo las aplicaciones y cargas de trabajo en funcionamiento durante las interrupciones. La Recuperación de Sitios **replica cargas de trabajo** que se ejecutan en máquinas físicas y virtuales (VMs) desde un sitio principal a una ubicación secundaria. Cuando ocurre una interrupción en su sitio principal, se cambia a una ubicación secundaria y se accede a las aplicaciones desde allí. Después de que la ubicación principal vuelva a funcionar, puede regresar a ella.
|
||||
De los [**docs**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview): Site Recovery ayuda a garantizar la continuidad del negocio manteniendo las aplicaciones y cargas de trabajo en funcionamiento durante las interrupciones. Site Recovery **replica cargas de trabajo** que se ejecutan en máquinas físicas y virtuales (VMs) desde un sitio principal a una ubicación secundaria. Cuando ocurre una interrupción en su sitio principal, se cambia a una ubicación secundaria y se accede a las aplicaciones desde allí. Después de que la ubicación principal vuelva a funcionar, puede regresar a ella.
|
||||
|
||||
## Bastión de Azure
|
||||
## Azure Bastion
|
||||
|
||||
El Bastión de Azure permite el acceso seguro y sin problemas al **Protocolo de Escritorio Remoto (RDP)** y **Shell Seguro (SSH)** a sus máquinas virtuales (VMs) directamente a través del Portal de Azure o mediante un jump box. Al **eliminar la necesidad de direcciones IP públicas** en sus VMs.
|
||||
Azure Bastion permite el acceso seguro y sin problemas al **Remote Desktop Protocol (RDP)** y **Secure Shell (SSH)** a sus máquinas virtuales (VMs) directamente a través del Portal de Azure o mediante un jump box. Al **eliminar la necesidad de direcciones IP públicas** en sus VMs.
|
||||
|
||||
El Bastión despliega una subred llamada **`AzureBastionSubnet`** con una máscara de red `/26` en la VNet en la que necesita trabajar. Luego, permite **conectarse a VMs internas a través del navegador** utilizando `RDP` y `SSH`, evitando exponer puertos de las VMs a Internet. También puede funcionar como un **host de salto**.
|
||||
El Bastion despliega una subred llamada **`AzureBastionSubnet`** con una máscara de red `/26` en la VNet en la que necesita trabajar. Luego, permite **conectarse a VMs internas a través del navegador** utilizando `RDP` y `SSH`, evitando exponer puertos de las VMs a Internet. También puede funcionar como un **jump host**.
|
||||
|
||||
Para listar todos los Hosts de Bastión de Azure en su suscripción y conectarse a las VMs a través de ellos, puede usar los siguientes comandos:
|
||||
Para listar todos los Hosts de Azure Bastion en su suscripción y conectarse a las VMs a través de ellos, puede usar los siguientes comandos:
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="az cli"}}
|
||||
@@ -189,7 +189,7 @@ Get-AzBastion
|
||||
|
||||
## Metadatos
|
||||
|
||||
El Servicio de Metadatos de Instancia de Azure (IMDS) **proporciona información sobre las instancias de máquinas virtuales en ejecución** para ayudar con su gestión y configuración. Ofrece detalles como el SKU, almacenamiento, configuraciones de red e información sobre eventos de mantenimiento próximos a través de **REST API disponible en la dirección IP no enrutable 169.254.169.254**, que es accesible solo desde dentro de la VM. La comunicación entre la VM y el IMDS se mantiene dentro del host, asegurando un acceso seguro. Al consultar el IMDS, los clientes HTTP dentro de la VM deben evitar los proxies web para asegurar una comunicación adecuada.
|
||||
El Servicio de Metadatos de Instancia de Azure (IMDS) **proporciona información sobre las instancias de máquinas virtuales en ejecución** para ayudar con su gestión y configuración. Ofrece detalles como el SKU, almacenamiento, configuraciones de red e información sobre eventos de mantenimiento próximos a través de **REST API disponible en la dirección IP no enrutable 169.254.169.254**, que es accesible solo desde dentro de la VM. La comunicación entre la VM y el IMDS se mantiene dentro del host, asegurando un acceso seguro. Al consultar el IMDS, los clientes HTTP dentro de la VM deben evitar los proxies web para garantizar una comunicación adecuada.
|
||||
|
||||
Además, para contactar el punto final de metadatos, la solicitud HTTP debe tener el encabezado **`Metadata: true`** y no debe tener el encabezado **`X-Forwarded-For`**.
|
||||
|
||||
@@ -200,6 +200,9 @@ https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/
|
||||
{{#endref}}
|
||||
|
||||
## Enumeración de VM
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="az cli"}}
|
||||
```bash
|
||||
# VMs
|
||||
## List all VMs and get info about one
|
||||
@@ -335,7 +338,9 @@ az resource list --resource-type "Microsoft.Compute/virtualMachines" --query "[]
|
||||
# List all available run commands for virtual machines
|
||||
az vm run-command list --output table
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Az Powershell" }}
|
||||
```bash
|
||||
# Get readable VMs
|
||||
Get-AzVM | fl
|
||||
@@ -427,6 +432,9 @@ Get-AzStorageAccount
|
||||
Get-AzVMExtension -VMName <VmName> -ResourceGroupName <ResourceGroupName>
|
||||
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Ejecución de Código en VMs
|
||||
|
||||
### Extensiones de VM
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
|
||||
## Información Básica
|
||||
|
||||
Azure proporciona **redes virtuales (VNet)** que permiten a los usuarios crear **redes aisladas** dentro de la nube de Azure. Dentro de estas VNets, se pueden alojar y gestionar de forma segura recursos como máquinas virtuales, aplicaciones, bases de datos... La red en Azure admite tanto la comunicación dentro de la nube (entre servicios de Azure) como la conexión a redes externas e internet.\
|
||||
Azure proporciona **redes virtuales (VNet)** que permiten a los usuarios crear **redes** **aisladas** dentro de la nube de Azure. Dentro de estas VNets, recursos como máquinas virtuales, aplicaciones, bases de datos... pueden ser alojados y gestionados de forma segura. La conectividad en Azure soporta tanto la comunicación dentro de la nube (entre servicios de Azure) como la conexión a redes externas e internet.\
|
||||
Además, es posible **conectar** VNets con otras VNets y con redes locales.
|
||||
|
||||
## Red Virtual (VNET) y Subredes
|
||||
|
||||
Una Red Virtual de Azure (VNet) es una representación de tu propia red en la nube, proporcionando **aislamiento lógico** dentro del entorno de Azure dedicado a tu suscripción. Las VNets te permiten aprovisionar y gestionar redes privadas virtuales (VPN) en Azure, alojando recursos como Máquinas Virtuales (VM), bases de datos y servicios de aplicaciones. Ofrecen **control total sobre la configuración de la red**, incluyendo rangos de direcciones IP, creación de subredes, tablas de rutas y puertas de enlace de red.
|
||||
Una Red Virtual de Azure (VNet) es una representación de tu propia red en la nube, proporcionando **aislamiento lógico** dentro del entorno de Azure dedicado a tu suscripción. Las VNets te permiten aprovisionar y gestionar redes privadas virtuales (VPNs) en Azure, alojando recursos como Máquinas Virtuales (VMs), bases de datos y servicios de aplicaciones. Ofrecen **control total sobre la configuración de la red**, incluyendo rangos de direcciones IP, creación de subredes, tablas de rutas y puertas de enlace de red.
|
||||
|
||||
**Subredes** son subdivisiones dentro de una VNet, definidas por rangos de **direcciones IP** específicos. Al segmentar una VNet en múltiples subredes, puedes organizar y asegurar recursos de acuerdo con tu arquitectura de red.\
|
||||
**Subredes** son subdivisiones dentro de una VNet, definidas por rangos de **direcciones IP** específicos. Al segmentar una VNet en múltiples subredes, puedes organizar y asegurar recursos de acuerdo a tu arquitectura de red.\
|
||||
Por defecto, todas las subredes dentro de la misma Red Virtual de Azure (VNet) **pueden comunicarse entre sí** sin ninguna restricción.
|
||||
|
||||
**Ejemplo:**
|
||||
@@ -22,7 +22,7 @@ Por defecto, todas las subredes dentro de la misma Red Virtual de Azure (VNet) *
|
||||
|
||||
### Enumeración
|
||||
|
||||
Para listar todas las VNets y subredes en una cuenta de Azure, puedes usar la Interfaz de Línea de Comandos de Azure (CLI). Aquí están los pasos:
|
||||
Para listar todas las VNets y subredes en una cuenta de Azure, puedes usar la Interfaz de Línea de Comando de Azure (CLI). Aquí están los pasos:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -56,7 +56,7 @@ Los NSGs pueden asociarse a **subredes y NICs.**
|
||||
**Ejemplo de reglas:**
|
||||
|
||||
- Una regla de entrada que permite el tráfico HTTP (puerto 80) desde cualquier origen a tus servidores web.
|
||||
- Una regla de salida que permite solo el tráfico SQL (puerto 1433) a un rango de direcciones IP de destino específico.
|
||||
- Una regla de salida que permite solo tráfico SQL (puerto 1433) a un rango de direcciones IP de destino específico.
|
||||
|
||||
### Enumeración
|
||||
|
||||
@@ -95,15 +95,16 @@ Azure Firewall es un **servicio de seguridad de red gestionado** en Azure que pr
|
||||
|
||||
Está disponible en tres SKUs—**Básico**, **Estándar** y **Premium**, cada uno adaptado a necesidades específicas de los clientes:
|
||||
|
||||
| **Caso de Uso Recomendado** | Pequeñas/Medianas Empresas (PYMEs) con necesidades limitadas | Uso empresarial general, filtrado de Capas 3–7 | Entornos altamente sensibles (por ejemplo, procesamiento de pagos) |
|
||||
| ------------------------------ | ----------------------------------------------------------- | ------------------------------------------------ | --------------------------------------------------------------- |
|
||||
| **Rendimiento** | Hasta 250 Mbps de rendimiento | Hasta 30 Gbps de rendimiento | Hasta 100 Gbps de rendimiento |
|
||||
| **Inteligencia de Amenazas** | Solo alertas | Alertas y bloqueo (IPs/dominios maliciosos) | Alertas y bloqueo (inteligencia de amenazas avanzada) |
|
||||
| **Filtrado L3–L7** | Filtrado básico | Filtrado con estado a través de protocolos | Filtrado con estado con inspección avanzada |
|
||||
| **Protección Avanzada contra Amenazas** | No disponible | Filtrado basado en inteligencia de amenazas | Incluye Sistema de Detección y Prevención de Intrusiones (IDPS) |
|
||||
| **Inspección TLS** | No disponible | No disponible | Soporta terminación TLS entrante/saliente |
|
||||
| **Disponibilidad** | Backend fijo (2 VMs) | Escalado automático | Escalado automático |
|
||||
| **Facilidad de Gestión** | Controles básicos | Gestionado a través del Administrador de Firewall | Gestionado a través del Administrador de Firewall |
|
||||
| Criterio/Característica | Opción 1 | Opción 2 | Opción 3 |
|
||||
| ------------------------------ | ------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------- |
|
||||
| **Caso de Uso Recomendado** | Pequeñas/Medianas Empresas (PMEs) con necesidades limitadas | Uso empresarial general, filtrado de Capas 3–7 | Entornos altamente sensibles (por ejemplo, procesamiento de pagos) |
|
||||
| **Rendimiento** | Hasta 250 Mbps de rendimiento | Hasta 30 Gbps de rendimiento | Hasta 100 Gbps de rendimiento |
|
||||
| **Inteligencia de Amenazas** | Solo alertas | Alertas y bloqueo (IPs/dominios maliciosos) | Alertas y bloqueo (inteligencia de amenazas avanzada) |
|
||||
| **Filtrado L3–L7** | Filtrado básico | Filtrado con estado a través de protocolos | Filtrado con estado con inspección avanzada |
|
||||
| **Protección Avanzada contra Amenazas** | No disponible | Filtrado basado en inteligencia de amenazas | Incluye Sistema de Detección y Prevención de Intrusiones (IDPS) |
|
||||
| **Inspección TLS** | No disponible | No disponible | Soporta terminación TLS entrante/saliente |
|
||||
| **Disponibilidad** | Backend fijo (2 VMs) | Escalado automático | Escalado automático |
|
||||
| **Facilidad de Gestión** | Controles básicos | Gestionado a través del Firewall Manager | Gestionado a través del Firewall Manager |
|
||||
|
||||
### Enumeración
|
||||
|
||||
@@ -144,7 +145,7 @@ Get-AzFirewall
|
||||
|
||||
Las **Tablas de Rutas de Azure** se utilizan para controlar el enrutamiento del tráfico de red dentro de una subred. Definen reglas que especifican cómo se deben reenviar los paquetes, ya sea a recursos de Azure, a internet o a un siguiente salto específico como un Appliance Virtual o Azure Firewall. Puedes asociar una tabla de rutas con una **subred**, y todos los recursos dentro de esa subred seguirán las rutas en la tabla.
|
||||
|
||||
**Ejemplo:** Si una subred alberga recursos que necesitan enrutar tráfico saliente a través de un Appliance Virtual de Red (NVA) para inspección, puedes crear una **ruta** en una tabla de rutas para redirigir todo el tráfico (por ejemplo, `0.0.0.0/0`) a la dirección IP privada del NVA como el siguiente salto.
|
||||
**Ejemplo:** Si una subred alberga recursos que necesitan enrutar el tráfico saliente a través de un Network Virtual Appliance (NVA) para inspección, puedes crear una **ruta** en una tabla de rutas para redirigir todo el tráfico (por ejemplo, `0.0.0.0/0`) a la dirección IP privada del NVA como el siguiente salto.
|
||||
|
||||
### **Enumeración**
|
||||
|
||||
@@ -205,9 +206,9 @@ Get-AzPrivateEndpoint | Select-Object Name, Location, ResourceGroupName, Private
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Puntos de Conexión de Servicios de Azure
|
||||
## Puntos de Conexión de Servicio de Azure
|
||||
|
||||
Los Puntos de Conexión de Servicios de Azure extienden el espacio de direcciones privadas de su red virtual y la identidad de su VNet a los servicios de Azure a través de una conexión directa. Al habilitar los puntos de conexión de servicio, **los recursos en su VNet pueden conectarse de manera segura a los servicios de Azure**, como Azure Storage y Azure SQL Database, utilizando la red troncal de Azure. Esto asegura que el **tráfico de la VNet al servicio de Azure permanezca dentro de la red de Azure**, proporcionando un camino más seguro y confiable.
|
||||
Los Puntos de Conexión de Servicio de Azure extienden el espacio de direcciones privadas de su red virtual y la identidad de su VNet a los servicios de Azure a través de una conexión directa. Al habilitar los puntos de conexión de servicio, **los recursos en su VNet pueden conectarse de manera segura a los servicios de Azure**, como Azure Storage y Azure SQL Database, utilizando la red troncal de Azure. Esto asegura que el **tráfico de la VNet al servicio de Azure permanezca dentro de la red de Azure**, proporcionando un camino más seguro y confiable.
|
||||
|
||||
**Ejemplo:**
|
||||
|
||||
@@ -253,12 +254,12 @@ Microsoft recomienda usar Private Links en la [**docs**](https://learn.microsoft
|
||||
**Private Links:**
|
||||
|
||||
- Private Link mapea los servicios de Azure en tu VNet a través de un endpoint privado, que es una interfaz de red con una dirección IP privada dentro de tu VNet.
|
||||
- El servicio de Azure se accede utilizando esta dirección IP privada, haciendo que parezca parte de tu red.
|
||||
- El servicio de Azure se accede utilizando esta dirección IP privada, haciendo que parezca que es parte de tu red.
|
||||
- Los servicios conectados a través de Private Link solo pueden ser accedidos desde tu VNet o redes conectadas; no hay acceso público a internet al servicio.
|
||||
- Permite una conexión segura a los servicios de Azure o a tus propios servicios alojados en Azure, así como una conexión a servicios compartidos por otros.
|
||||
- Proporciona un control de acceso más granular a través de un endpoint privado en tu VNet, en lugar de un control de acceso más amplio a nivel de subred con service endpoints.
|
||||
- Proporciona un control de acceso más granular a través de un endpoint privado en tu VNet, en lugar de un control de acceso más amplio a nivel de subred con los service endpoints.
|
||||
|
||||
En resumen, aunque tanto Service Endpoints como Private Links proporcionan conectividad segura a los servicios de Azure, **Private Links ofrecen un mayor nivel de aislamiento y seguridad al garantizar que los servicios se accedan de forma privada sin exponerlos a internet público**. Los Service Endpoints, por otro lado, son más fáciles de configurar para casos generales donde se requiere un acceso simple y seguro a los servicios de Azure sin necesidad de una IP privada en la VNet.
|
||||
En resumen, aunque tanto los Service Endpoints como los Private Links proporcionan conectividad segura a los servicios de Azure, **los Private Links ofrecen un mayor nivel de aislamiento y seguridad al garantizar que los servicios se accedan de forma privada sin exponerlos a internet público**. Los Service Endpoints, por otro lado, son más fáciles de configurar para casos generales donde se requiere un acceso simple y seguro a los servicios de Azure sin necesidad de una IP privada en la VNet.
|
||||
|
||||
## Azure Front Door (AFD) y AFD WAF
|
||||
|
||||
@@ -295,7 +296,7 @@ Get-AzFrontDoorWafPolicy -Name <policyName> -ResourceGroupName <resourceGroupNam
|
||||
|
||||
## Azure Application Gateway y Azure Application Gateway WAF
|
||||
|
||||
Azure Application Gateway es un **balanceador de carga de tráfico web** que te permite gestionar el tráfico hacia tus **aplicaciones web**. Ofrece **balanceo de carga de Capa 7, terminación SSL y capacidades de firewall de aplicaciones web (WAF)** en el Controlador de Entrega de Aplicaciones (ADC) como servicio. Las características clave incluyen enrutamiento basado en URL, afinidad de sesión basada en cookies y descarga de capa de sockets seguros (SSL), que son cruciales para aplicaciones que requieren capacidades de balanceo de carga complejas como enrutamiento global y enrutamiento basado en rutas.
|
||||
Azure Application Gateway es un **balanceador de carga de tráfico web** que te permite gestionar el tráfico hacia tus **aplicaciones** web. Ofrece **balanceo de carga de Capa 7, terminación SSL y capacidades de firewall de aplicaciones web (WAF)** en el Controlador de Entrega de Aplicaciones (ADC) como servicio. Las características clave incluyen enrutamiento basado en URL, afinidad de sesión basada en cookies y descarga de capa de sockets seguros (SSL), que son cruciales para aplicaciones que requieren capacidades de balanceo de carga complejas como enrutamiento global y enrutamiento basado en rutas.
|
||||
|
||||
**Ejemplo:**
|
||||
|
||||
@@ -324,7 +325,7 @@ az network application-gateway waf-config list --gateway-name <AppGatewayName> -
|
||||
**El Peering de VNet** es una característica de red en Azure que **permite que diferentes Redes Virtuales (VNets) se conecten de manera directa y sin problemas**. A través del peering de VNet, los recursos en una VNet pueden comunicarse con recursos en otra VNet utilizando direcciones IP privadas, **como si estuvieran en la misma red**.\
|
||||
**El Peering de VNet también se puede usar con redes locales** configurando una VPN de sitio a sitio o Azure ExpressRoute.
|
||||
|
||||
**Azure Hub y Spoke** es una topología de red utilizada en Azure para gestionar y organizar el tráfico de red. **El "hub" es un punto central que controla y enruta el tráfico entre diferentes "spokes"**. El hub generalmente contiene servicios compartidos como dispositivos virtuales de red (NVAs), Azure VPN Gateway, Azure Firewall o Azure Bastion. Los **"spokes" son VNets que alojan cargas de trabajo y se conectan al hub utilizando peering de VNet**, lo que les permite aprovechar los servicios compartidos dentro del hub. Este modelo promueve un diseño de red limpio, reduciendo la complejidad al centralizar servicios comunes que múltiples cargas de trabajo en diferentes VNets pueden usar.
|
||||
**Azure Hub y Spoke** es una topología de red utilizada en Azure para gestionar y organizar el tráfico de red. **El "hub" es un punto central que controla y enruta el tráfico entre diferentes "spokes"**. El hub generalmente contiene servicios compartidos como dispositivos virtuales de red (NVAs), Azure VPN Gateway, Azure Firewall o Azure Bastion. Los **"spokes" son VNets que alojan cargas de trabajo y se conectan al hub utilizando peering de VNet**, lo que les permite aprovechar los servicios compartidos dentro del hub. Este modelo promueve un diseño de red limpio, reduciendo la complejidad al centralizar servicios comunes que múltiples cargas de trabajo a través de diferentes VNets pueden usar.
|
||||
|
||||
> [!CAUTION] > **El emparejamiento de VNET no es transitivo en Azure**, lo que significa que si el spoke 1 está conectado al spoke 2 y el spoke 2 está conectado al spoke 3, entonces el spoke 1 no puede comunicarse directamente con el spoke 3.
|
||||
|
||||
@@ -363,7 +364,7 @@ Get-AzFirewall
|
||||
|
||||
## VPN de Sitio a Sitio
|
||||
|
||||
Una VPN de Sitio a Sitio en Azure te permite **conectar tu red local a tu Red Virtual (VNet) de Azure**, permitiendo que recursos como VMs dentro de Azure aparezcan como si estuvieran en tu red local. Esta conexión se establece a través de un **gateway VPN que cifra el tráfico** entre las dos redes.
|
||||
Una VPN de Sitio a Sitio en Azure te permite **conectar tu red local a tu Red Virtual (VNet) de Azure**, permitiendo que recursos como las VMs dentro de Azure aparezcan como si estuvieran en tu red local. Esta conexión se establece a través de un **gateway VPN que cifra el tráfico** entre las dos redes.
|
||||
|
||||
**Ejemplo:**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user