(云服务安全)遇到点奇怪的安全问题,有没有大佬来指点一下?

149 天前
 thinkershare

云务器厂商: 腾讯云 操作系统:Ubuntu(22.04)

禁用了密码登录,禁用了 root 远程登录,删除了默认的 ubuntu 用户,新建了一个用户,只允许 ssh 连接。

docker(root 模式)下安装了一个 mysql, 测试的时候,将 root 的 host 修改为了%, 然后修改了 root 密码为 128 位的随机复杂密码,可以确保只有我一个人有密码信息,但是服务器开放一天后,所有数据库全部被黑了,全部被替换了加密地址表。虽然没啥有用的信息,毕竟只是临时开出的一个测试服务器。

想要问一下,这个环境有哪些薄弱的安全环节导致 mysql 被人搞定了。docker 容器镜像是官方最新的版本。

990 次点击
所在节点    问与答
16 条回复
ajiangstudy
149 天前
如果数据库对外开放,感觉像是数据库的问题吧,数据库有指定过允许登录 IP 吗?
fredcc
149 天前
云防火墙入站策略怎么配的
thinkershare
149 天前
@ajiangstudy 没有限制 IP 地址,任何 IP 地址都可以访问。
thinkershare
149 天前
@fredcc 防火墙开了 3306 的入站端口,我难以理解,这是操作系统的密码存在漏洞,还是 mysql 数据库的密码系统存在安全漏洞,按道理来说,我随机生成的 128 位的密码,是不可能通过撞库来破解的。
qiaorenzhi
149 天前
docker 或者数据库是不是存在版本上的漏洞
daxin945
149 天前
查一下 mysql 的版本是多少,找一找有没有对应版本的已知漏洞
有可能是直接通过 mysql 漏洞进去的,不是撞库
用 docker 的话 你在宿主机上开一个 30000 之后的端口,最好奇怪些,然后映射到 docker 内的 3306
限制一下网络请求,最次也要把境外的 IP 封了
防火墙开着
thinkershare
149 天前
@daxin945 就是感觉很奇怪,就第一次公网 3306 没改端口,而且用的还是复杂密码,不到一天就被人给破了,主要是镜像还是上周五拉取的 docker hub 上的 mysql@latest 镜像。幸好上面没有任何有用的数据, 虽然有很多个数据库,但里面的数据都是伪造的垃圾数据。我本来想要设置一个足够复杂的密码,应该没啥大问题,我也就做多开一周,结果周五开的,周一来看,就被人给全部办了,看来公网果然还是危险。
blackeeper
149 天前
你这个环境的 MySQL 服务器安全性应该是没有问题的,毕竟你的服务器系统文件是正常的,数据库服务也是正常的,只不过数据库表被加密了,按照这个被黑的情况,问题点可能在于你的应用
1 ,你的 web 应用可能被挂马,或者有后门
2 ,连接 MySQL 的客户端工具有问题
thinkershare
149 天前
@blackeeper 我的应用使用的不是 root 用户,权限很低,不可能修改其它数据库。而且我的应用理论上来说就不可能有 SQL 注入漏洞,因为没有任何语句支持动态 SQL 。我感觉只有可能是密码被爆破了,不过这个机器本来就是随便开来做一次性单元测试的,有点想不通到底是那个环节出错了。
yw9381
148 天前
两个方向
1. 腾讯云的 aksk 是否泄露。aksk 的权限是否可以管理 vm 。如果可以。那通过应用泄露的 aksk 拿到 vm 权限进而勒索 mysql 就顺理成章了
2. 从服务角度。ssh mysql 自身应该都不存在安全问题。那么只能考虑密码泄露。或是应用层问题。你的应用是否存在安全问题。比如任意文件读取。配置信息泄露等等问题

抛开应用和场景只说环境安全其实是比较片面的。个人觉得楼主的关注方向可以放在应用
如果方便的话可以把应用发出来。或是咱俩私下沟通。可以顺手帮你看看安全问题(不那么耗精力的话可以免费)
rc5ayc
148 天前
查日志看看吧
daxin945
148 天前
@thinkershare
即使你啥也不部属,就绑定了公网 IP ,网卡上的流量也会蹭蹭的涨
要是愿意折腾,你就在你的机器上用 tcpdump 抓点流量包,或者用类似 suricata 的 IDS 抓些流量日志看看到底咋回事。
看不懂没事,把公网 IP 拿出来 去微步/VirusTotal 这些威胁情报站查,但凡黑 IP 都给它封了
可以参考这个差缺补漏,我觉得基本面是没问题的 https://github.com/guanhui07/blog/issues/360
blackeeper
148 天前
@thinkershare
额,为啥你会认为我说的被挂马或者有后门是:SQL 注入漏洞。
你给的信息太少,不确定你是 root 账户泄露了,还是 web 应用的数据账户泄露了。
如果只有 web 应用的数据库被加密了,那么就是 web 数据库账户被泄露了,有很多中方式可以获取你 web 的数据库配置文件
1 ,查你的 web 应用是否多了什么文件或者脚本,我猜你的应用应该是 PHP 写的
2 ,128 位的密码爆破?没有人愿意做这个事情,其实就是账户密码被 hacker 获取了,具体是哪里泄露的有可能是 web 应用,你的 IDE ,或者你电脑的破解版 MySQL 连接客户端
3 ,你可以查看 MySQL 的 binlog 和 log ,可以查到相关的信息
thinkershare
148 天前
@blackeeper 这些地方都没有可能性,因为数据库被攻破的时候,我的应用是停止状态,另外我的引用也全部是容器化的,msyql 工具用的是官方下载的 MySQL Workbench 8.0 CE ,密码除了通过微信发给过我自己,没有任何人知道。
blackeeper
147 天前
@thinkershare
我想告诉你:数据库被攻破的时候,应用是停止状态,不代表数据库配置文件没有泄露,加密数据库表不需要走你的应用去攻击,因为你的 mysql 是可以公网访问的
thinkershare
147 天前
@blackeeper 数据库配置文件根本没有被请求的可能性,数据库配置是通过环境变量注入到应用的(一次性环境变量),数据库被入侵的时候应用容器组都是停止状态)。我远程的 root ssh 都是关闭了的,而且 root 的密码也是修改过的,默认用的也不是 root 账号,整个环境除了存在 0day 我实在想不通到底是哪里导致问题的,我现在甚至怀疑微信发送消息是不是会被泄露,因为整个流程我只有通过微信自己给自己(文件助手)发送过 mysql 密码,密码除了我的微信上有,我自己甚至都记不住。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/999628

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX