0x01 前期侦查
1、访问凭证泄露
在信息收集阶段,通过传统攻防下的信息收集方式,收集到目标的数据库账户密码、微软云平台账户密码,Access token、服务帐号密钥等
2、备份文件
通过https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/backup-azure-database-for-mysql-to-a-blob-storage/ba-p/803830处的方法可以将数据库备份,要注意https://cs110032001db2235e9.file.core.windows.net/cs-这样路径下的文件,有可能就是通过上述方法备份的数据库文件。
0x02 初始访问
1、访问凭证登录
如果在前期侦查阶段收集到了数据库的账户和密码,则可以通过其直接登录。或者在前期收集到了高权限的服务账户凭证,可以通过之前VM攻防中的方法去登录微软云控制台,就可以去操作Azure database for Mysql或者Azure database for PostgreSQL了。
2、弱口令
如果微软云数据库存在弱口令,我们可以通过爆破的方式,得到数据库的账户名和密码,进而直接访问数据库。
管理员的密码要求为强口令,所以弱口令基本为创建的普通用户。
0x03 执行
1、云厂商命令行工具
创建 Azure Database for MySQL 服务器
az mysql server create --resource-group myresourcegroup --name mydemoserver --location westus --admin-user myadmin --admin-password <server_admin_password> --sku-name GP_Gen5_2
获取连接信息
az mysql server show --resource-group myresourcegroup --name mydemoserver
2、数据库连接工具
当知道了数据库的账户和密码后,可以使用第三方数据库连接工具进行连接尝试。(谷歌云需要配置已授权网络才可以进行访问登录)
0x04 权限提升
1、低权限收集到高权限的凭证
当获取了数据库较低的权限后,访问数据库查找敏感信息,如用户存储的高权限账户密码、高权限凭证等信息,然后可以通过收集到的信息就可以登录控制台或命令行去操作数据库。
2、云平台数据库漏洞
通过云平台数据库自身问题去获取高权限。
0x05 权限维持
1、重置管理员密码
当拿到权限后,可以直接更改数据库服务器的管理员密码。但实际渗透场景下不建议这么做,容易被发现。
2、创建用户
创建 Azure Database for MySQL 服务器后,你可以使用第一个服务器管理员帐户来创建更多用户,并向这些用户授予管理员访问权限。
编辑并运行下面的 SQL 代码。 将占位符 db_user
替换为所需的新用户名。 将占位符 testdb
替换为数据库名称。
此 SQL 代码创建名为 testdb 的新数据库。 然后,它在 MySQL 服务中创建新用户,并将所有权限授予该用户的新数据库架构 (testdb.*)。
CREATE DATABASE testdb;
CREATE USER 'db_user'@'%' IDENTIFIED BY 'StrongPassword!';
GRANT ALL PRIVILEGES ON testdb . * TO 'db_user'@'%';
FLUSH PRIVILEGES;
运行 SHOW GRANTS
MySQL 语句,查看 testdb 数据库上允许的 db_user 用户的权限。
USE testdb;
SHOW GRANTS FOR 'db_user'@'%';
3、添加角色分配
将所有者的权限赋予用户、组或者服务主体,被赋予权限的角色将拥有该Mysql服务器的所有权限。
0x06 信息收集
1、数据库服务器信息收集
在数据库默认目录中查看数据库服务器名称和所属资源组
2、活动日志信息
在活动日志信息中可以看到数据库服务器的操作记录,其中包括了时间发起者
3、管理员信息
在数据库访问控制中可以查看数据库服务器的经典管理员
4、角色分配信息
在数据库访问控制中可以查看数据库服务器分配的角色以及分配的权限
0x07 影响
1、其他影响
当数据库被攻击者拿下后,可以获取数据库的敏感信息,对数据库进行恶意操作。
参考资料:
https://docs.microsoft.com/zh-cn/azure/mysql/howto-create-users