V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
thinkershare
V2EX  ›  问与答

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

  •  
  •   thinkershare · 2023-12-12 11:24:30 +08:00 · 1237 次点击
    这是一个创建于 380 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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