Files
hacktricks-cloud/src/pentesting-cloud/azure-security/az-services/az-mysql.md

7.2 KiB

Az - Bases de datos MySQL

{{#include ../../../banners/hacktricks-training.md}}

Azure MySQL

Azure Database for MySQL es un servicio de base de datos relacional completamente administrado basado en la Edición Comunitaria de MySQL, diseñado para proporcionar escalabilidad, seguridad y flexibilidad para diversas necesidades de aplicaciones. Tiene dos modelos de implementación diferentes:

  • Servidor Único (está en la ruta de retiro):
  • Optimizado para implementaciones de MySQL rentables y fáciles de administrar.
  • Las características incluyen copias de seguridad automatizadas, alta disponibilidad y monitoreo básico.
  • Ideal para aplicaciones con cargas de trabajo predecibles.
  • Servidor Flexible:
  • Proporciona más control sobre la gestión y configuración de la base de datos.
  • Soporta alta disponibilidad (en la misma zona y redundante entre zonas).
  • Las características incluyen escalado elástico, gestión de parches y optimización de cargas de trabajo.
  • Ofrece funcionalidad de detener/iniciar para ahorrar costos.

Características Clave

  • Gestión del Servidor: La función ad-admin permite gestionar administradores de Azure Active Directory (AAD) para servidores MySQL, proporcionando control sobre el acceso administrativo a través de credenciales de AAD, mientras que la función identity permite la asignación y gestión de Identidades Administradas de Azure, ofreciendo autenticación segura sin credenciales para acceder a recursos de Azure.
  • Gestión del Ciclo de Vida: opciones para iniciar o detener un servidor, eliminar una instancia de servidor flexible, reiniciar un servidor para aplicar rápidamente cambios de configuración y esperar para asegurar que un servidor cumpla con condiciones específicas antes de proceder con scripts de automatización.
  • Seguridad y Redes: puede gestionar reglas de firewall del servidor para un acceso seguro a la base de datos y desacoplar configuraciones de red virtual según sea necesario.
  • Protección de Datos y Copia de Seguridad: incluye opciones para gestionar copias de seguridad de servidores flexibles para recuperación de datos, realizar restauraciones geográficas para recuperar un servidor en una región diferente, exportar copias de seguridad de servidores para uso externo (en Vista Previa) y restaurar un servidor desde una copia de seguridad a un punto específico en el tiempo.

Enumeración

{{#tabs }} {{#tab name="az cli" }}

# List all flexible-servers
az mysql flexible-server db list --resource-group <resource-group-name>
# List databases in a flexible-server
az mysql flexible-server db list --resource-group <resource-group-name> --server-name <server_name>
# Show specific details of a MySQL database
az mysql flexible-server db show --resource-group <resource-group-name> --server-name <server_name> --database-name <database_name>

# List firewall rules of the a server
az mysql flexible-server firewall-rule list --resource-group <resource-group-name> --name <server_name>

# List all ad-admin in a server
az mysql flexible-server ad-admin list --resource-group <resource-group-name> --server-name <server_name>
# List all user assigned managed identities from the server
az mysql flexible-server identity list --resource-group <resource-group-name> --server-name <server_name>

# List the server backups
az mysql flexible-server backup list --resource-group <resource-group-name> --name <server_name>
# List all read replicas for a given server
az mysql flexible-server replica list --resource-group <resource-group-name> --name <server_name>

# Get the server's advanced threat protection setting
az mysql flexible-server advanced-threat-protection-setting show --resource-group <resource-group-name> --name <server_name>
# List all of the maintenances of a flexible server
az mysql flexible-server maintenance list --resource-group <resource-group-name> --server-name <server_name>
# List log files for a server.
az mysql flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>

{{#endtab }}

{{#tab name="Az Powershell" }}

Get-Command -Module Az.MySql

# Get all flexible servers in a resource group
Get-AzMySqlFlexibleServer -ResourceGroupName <resource-group-name>

# List databases in a specific flexible server
Get-AzMySqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name>

# Get details of a specific database in a flexible server
Get-AzMySqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name> -DatabaseName <database_name>

# List all firewall rules for a flexible server
Get-AzMySqlFlexibleServerFirewallRule -ResourceGroupName <resource-group-name> -ServerName <server_name>

# Get the identity information of a flexible server
Get-AzMySqlFlexibleServerIdentity -ResourceGroupName <resource-group-name> -ServerName <server_name>

# Get the server's advanced threat protection setting
Get-AzMySqlFlexibleServerAdvancedThreatProtection -ResourceGroupName <resource-group-name> -ServerName <server_name>

# List configuration settings of a flexible server
Get-AzMySqlFlexibleServerConfiguration -ResourceGroupName <resource-group-name> -ServerName <server_name>
# Get the connection string for a flexible server
Get-AzMySqlFlexibleServerConnectionString -ResourceGroupName <resource-group-name> -ServerName <server_name> -Client <client>

# List all read replicas for a given server
Get-AzMySqlFlexibleServerReplica -ResourceGroupName <resource-group-name> -ServerName <server_name>

# Get the maintenance window details for a flexible server
Get-AzMySqlFlexibleServerMaintenanceWindow -ResourceGroupName <resource-group-name> -ServerName <server_name>

# List log files for a server
Get-AzMySqlFlexibleServerLog -ResourceGroupName <resource-group-name> -ServerName <server_name>

{{#endtab }} {{#endtabs }}

Conexión

Con la extensión rdbms-connect puedes acceder a la base de datos con:

az mysql flexible-server connect -n <server-name> -u <username> -p <password> --interactive

#or execute commands
az mysql flexible-server execute \
-n <server-name> \
-u <username> \
-p "<password>" \
-d <database-name> \
--querytext "SELECT * FROM <table-name>;"

O con el plugin de extensión nativa de MySQL

mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p

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:

# Setup
az mysql flexible-server deploy setup \
-s <server-name> \
-g <resource-group> \
-u <admin-user> \
-p "<admin-password>" \
--sql-file <path-to-sql-file> \
--repo <github-username/repository-name> \
--branch <branch-name> \
--action-name <action-name> \
--allow-push

# Run it
az mysql flexible-server deploy run \
--action-name <action-name> \
--branch <branch-name>

Escalación de Privilegios

{{#ref}} ../az-privilege-escalation/az-mysql-privesc.md {{#endref}}

Post Explotación

{{#ref}} ../az-post-exploitation/az-mysql-post-exploitation.md {{#endref}}

ToDo

  • 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}}