服务器被黑-数据库被清空-请大佬们帮忙分析下问题出在哪儿

如题,请大佬们帮忙分析一下:

现状#

1. 多个数据库所有表被清空,留下一个新建的 WARNING 表:#

+---------+------+------+-----+---------+-------+
| Field   | Type | Null | Key | Default | Extra |
+---------+------+------+-----+---------+-------+
| id      | int  | NO   | PRI | NULL    |       |
| warning | text | YES  |     | NULL    |       |
| website | text | YES  |     | NULL    |       |
| token   | text | YES  |     | NULL    |       |
+---------+------+------+-----+---------+-------+

id = 1

warning = To recover your lost databases and avoid leaking it: visit hn4wg4o6s5nc7763.onion and enter your unique token 19662ef1c31f0054 and pay the required amount of Bitcoin to get it back. Databases that we have: ljdg, ljcc, ljbm, ljsp. Your databases are downloaded and backed up on our servers. If we dont receive your payment in the next 9 Days, we will sell your database to the highest bidder or use them otherwise. To access this site you have use the tor browser www.torproject.org/projects/torbro...

website = hn4wg4o6s5nc7763.onion

token = 19662efxxfxx54

2. 系统数据库 mysql 下插入一个后门用户#

+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | mysqlbackups     |
+-----------+------------------+

排查情况#

搜索勒索地址找到以下关于相同攻击的文章#

www.guardicore.com/labs/please-rea...

github.com/guardicore/labs_campaig...

系统环境#

  • 服务商:京东云

  • OS:

      Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
  • Docker: version 19.03.8, build afacb8b

  • Docker-compose:

      docker-compose version 1.25.5, build 8a1c60f6
      docker-py version: 4.1.0
      CPython version: 3.7.5
      OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019
  • Git: version 1.8.3.1

  • 对外开放端口:

      tcp 1521
      tcp 9000
      tcp 19281
      tcp 8080
      tcp 22      ssh
      tcp 443     https
      tcp 80      http
      tcp 8081    http
      tcp 2222
    
      其他端口一律拒绝
  • 网络:

      内网ip: 通过一个域名+端口号,映射访问该服务器
    
      ssh -p 19281 root@xxx.com
  • 登录方式:

          1. 用户名密码登录(不常用,非弱密码)
          2. 证书登录(常用)
  • 登录日志未发现异常 ip 登录 (或者日志被自动删除)

WEB 环境#

  • 环境:Laradock: v11.0

  • 配置:

    代码已被折叠,点此展开
  • 编排文件:

    代码已被折叠,点此展开
  • 启动服务:docker-compose up -d nginx mysql redis workspace

  • 容器运行情况:

      [root@Too-app laradock]# docker-compose ps
              Name                          Command               State                                        Ports                                     
      ------------------------------------------------------------------------------------------------------------------------------------------------------
      laradock_docker-in-docker_1   dockerd-entrypoint.sh            Up      2375/tcp, 2376/tcp                                                             
      laradock_mysql_1              docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp                                              
      laradock_nginx_1              /bin/bash /opt/startup.sh        Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp                   
      laradock_php-fpm_1            docker-php-entrypoint php-fpm    Up      9000/tcp                                                                       
      laradock_redis_1              docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp                                                         
      laradock_workspace_1          /sbin/my_init                    Up      0.0.0.0:2222->22/tcp, 0.0.0.0:3000->3000/tcp, 0.0.0.0:3001->3001/tcp,          
                                                                          0.0.0.0:4200->4200/tcp, 0.0.0.0:8001->8000/tcp, 0.0.0.0:8080->8080/tcp 
  • 服务密码

          redis null      (仅本地访问没设置密码)
          mysql root root (仅本地访问弱密码)
  • 服务日志

mysql未开启连接日志

WEB 开发框架#

Apiato version 8.0.1

黑哈尔
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 15
da_house

是阿里云的服务器吗

4年前 评论
黑哈尔 (楼主) 4年前
黑哈尔

@Summer @liyu001989 大佬们帮忙看看

4年前 评论

有一种工具能破别人服务器,以前有人演示过给我看,破了服务器,登陆他们的数据库,所以数据库能看,所以也能删除

4年前 评论
黑哈尔 (楼主) 4年前
wzg10086 (作者) 4年前

以前遇到过一模一样的 :joy:,感觉还是放在 rds 比较靠谱

4年前 评论
黑哈尔 (楼主) 4年前

Web 日志呢

4年前 评论
黑哈尔 (楼主) 4年前

我们公司也遇到过,公司空降了一个精通 go 的大佬,整个项目 docker,数据库,缓存,全上,项目上线稳定运行了半年没有啥问题,他离职后 docker 容器异常停止,硬盘塞满的日志文件,老板重新去各个大学找新人来解决,但是找了 2 个多月,问题依然没有解决,用户天天打电话投诉,没办法老板又重新找到了他,好像薪水给他加了 3 倍才请过来。 但老板后来换了 RUST,把 GO 技术组裁掉以后,技术主管披露那项目的源码原来是他在 docker 里加了自己的源码【植入了自己的恶意代码】。

4年前 评论
JustSo 4年前
吃鱼不吐刺 4年前
laravel重度用户 (作者) 4年前
laravel重度用户 (作者) 4年前
overfalse 4年前
boolstone 4年前
laravel重度用户 (作者) 4年前
laravel重度用户 (作者) 4年前
海狗王 4年前
twfy914 3年前

为啥好好的,单台机器,用容器?你是专业运维还是写代码的?如果非专业的运维,你怎么知道别人的 DOCKER 里有啥,为什么不用常规的 lnmp? 不用自己完全熟悉的东西

4年前 评论
黑哈尔 (楼主) 4年前
  • 1.docker 本身的漏洞
  • 2. 镜像问题,确定你下载的镜像是安全的
  • 3. 部分容器的问题,因为 docker 用的是 Namespace 隔离资源,一些关键资源呢没有被完全隔离例如(/sys , /proc) ,一旦这些关键位置暴露,那主机就 GG 了
4年前 评论
黑哈尔 (楼主) 4年前

能出问题的都是对外开放的端口

首先确认异常连接请求
netstat –antlp 一般可以根据显示的端口确认对方的主要攻击目标
确认一下 ssh 端口以及 登录日志
检查进程树,确认是否有异常进程
检查 /tmp, 或者允许生成文件的目录,查看是否有异常文件

另外检查一下 nginx 日志,看是否有大量异常请求在扫你的漏洞
web 漏洞的话,只能说尽量的去检查一下了

一般来说无论密码强度如何,像 22,3306 这类端口都应该使用白名单的方式访问
甚至于很多服务器会修改此类固定端口

4年前 评论
黑哈尔 (楼主) 4年前

redis 看看 还有一些 包是有安全漏洞的

4年前 评论
黑哈尔 (楼主) 4年前

内核先升级下吧,看版本可能被提权。

4年前 评论
黑哈尔 (楼主) 4年前

redis 如果没有设置密码,并且是默认端口对外开放。也可以提权

4年前 评论

各位大佬找到问题了吗?

4年前 评论
webstar 4年前

盲猜一下:workspace 容器的 SSH 密钥用的 laradock 的默认密钥,黑客用默认公钥扫一下 2222 端口直接就进了,laradock 本身是个开发环境,很多默认设置都是不安全的,我看你这台服务器虽然是个测试环境,但还是尽量不要用 laradock 了,想容器化部署的话可以参考着 laradock 自己写 Dockerfile 和 docker-compose.yaml。

4年前 评论
twfy914 3年前

生产环境用 laradock 干嘛,自己写 dockerfile,那种现成的自己当开发环境还凑合

3年前 评论