Az - MySQL 数据库

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

Azure MySQL

Azure Database for MySQL 是一个完全托管的关系数据库服务,基于 MySQL Community Edition,旨在为各种应用需求提供可扩展性、安全性和灵活性。它有两种不同的部署模型:

  • 单服务器(正在退役中):
  • 针对成本效益和易于管理的 MySQL 部署进行了优化。
  • 功能包括自动备份、高可用性和基本监控。
  • 适合具有可预测工作负载的应用程序。
  • 灵活服务器
  • 提供对数据库管理和配置的更多控制。
  • 支持高可用性(同区和区冗余)。
  • 具有弹性扩展、补丁管理和工作负载优化功能。
  • 提供停止/启动功能以节省成本。

关键特性

  • 服务器管理ad-admin 功能允许管理 Azure Entra ID 管理员的 MySQL 服务器,通过 Entra ID 凭据控制管理访问。Mysql 支持用户管理身份,用于在不需要凭据的情况下进行身份验证,并可被其他服务使用。
  • 生命周期管理:选项包括启动或停止服务器、删除灵活服务器实例、重启服务器以快速应用配置更改,以及等待以确保服务器满足特定条件后再继续自动化脚本。
  • 安全性和网络:通过防火墙规则限制连接,仅允许特定公共 IP 地址,或使用将服务器集成到虚拟网络中的私有端点来保护服务器。所有连接都使用 TLS 1.2 加密进行保护。数据库、备份和日志默认使用服务管理密钥或自定义密钥进行静态加密。
  • 数据保护和备份:包括管理灵活服务器备份以进行数据恢复的选项,执行地理恢复以在不同区域恢复服务器,导出服务器备份以供外部使用(预览中),以及从备份恢复服务器到特定时间点。

枚举

# 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>

连接

使用扩展 rdbms-connect,您可以通过以下方式访问数据库:

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>;"

或使用 MySQL 原生扩展插件

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

您还可以使用 GitHub 执行查询,但也需要密码和用户名。您需要设置一个包含要运行的查询的 SQL 文件,然后:

# 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>

权限提升

Az - MySQL Privesc

后期利用

Az - MySQL Post Exploitation

待办事项

  • 寻找一种方法以 mysql flexible-server ad-admin 访问,以验证这是一种权限提升方法

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks