如何在Cloud SQL中通过投放shell联系Google SRE

2020-08-20 06:24:20

注意:这篇文章中讨论的漏洞已由Google快速而正确地修补。我们支持负责任的披露。导致这篇帖子的研究是由我和我的老朋友Ezquiel Pereira完成的。你可以在他的网站上读到同样的帖子。

Google Cloud SQL是一个完全托管的关系数据库服务。客户可以部署由Google保护、监控和更新的SQL、PostgreSQL或MySQL服务器。要求更高的用户可以轻松扩展、复制或配置高可用性。通过这样做,用户可以专注于使用数据库,而不是处理前面提到的所有复杂任务。云SQL数据库可以通过使用适用的命令行工具访问,也可以从全球托管的任何应用程序访问。这篇文章涵盖了我们在云SQL的MySQL 5.6和5.7版本中发现的漏洞。

由于云SQL是全托管服务,用户无法访问某些功能。特别是超级权限和文件权限。在MySQL中,超级权限保留给与系统管理相关的任务,而FILE权限用于读取/写入运行MySQL守护进程的服务器上的文件。任何可以获得这些权限的攻击者都可以很容易地危害服务器。

此外,由于防火墙的原因,默认情况下无法从公共互联网访问mysqld端口3306。当用户使用gcloud客户端(‘gcloud SQL connect<;instance>;’)连接到MySQL时,该用户的IP地址会临时添加到允许连接的主机白名单中。

用户确实可以访问‘root’@‘%’帐户。在MySQL中,用户由用户名和主机名定义。在这种情况下,用户‘root’可以从任何主机(‘%’)连接。