spug icon indicating copy to clipboard operation
spug copied to clipboard

docker镜像openspug/spug-service 挂马希望注意安全

Open bravelib opened this issue 1 year ago • 7 comments

1、配置文件

version: "3.3"
services:
  db:
    image: mariadb:10.8.2
    container_name: spug-db
    restart: always
    command: --port 3306 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
      - /www/server/spug/mysql:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=spug
      - MYSQL_USER=admin
      - MYSQL_PASSWORD=1
      - MYSQL_ROOT_PASSWORD=1
  spug:
    image: openspug/spug-service
    container_name: spug
    privileged: true
    restart: always
    volumes:
      - /www/server/spug/service:/data/spug
      - /www/server/spug/repos:/data/repos
    ports:
      # 如果80端口被占用可替换为其他端口,例如: - "8000:80"
      - "8080:80"
    environment:
      - MYSQL_DATABASE=spug
      - MYSQL_USER=admin
      - MYSQL_PASSWORD=1
      - MYSQL_HOST=db
      - MYSQL_PORT=3306
    depends_on:
      - db```
2、执行命令
`docker compose up -d`

3、这个镜像开始在宿主机上这个镜像操作牛逼了
![1705308839114](https://github.com/openspug/spug/assets/5875864/0945552b-733d-44fc-9879-59c7609781fe)

```bash
[root@ip-172-31-17-150 spug]# ps -ef |grep supervi
root      2954     1 15  2023 ?        36-21:14:10 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
root     16344 16320  0  2023 ?        00:24:27 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
[root@ip-172-31-17-150 spug]# ps -ef |grep 16320
root     16320     1  0  2023 ?        00:07:01 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 02ebadd4d838f7b5f845e6793806cf8d1ffeaeedb7d9820c8b0aba87a7d924a3 -address /run/containerd/containerd.sock
root     16344 16320  0  2023 ?        00:24:27 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf

[root@ip-172-31-17-150 spug]# docker ps
CONTAINER ID   IMAGE                   COMMAND                  CREATED        STATUS        PORTS                                   NAMES
02ebadd4d838   openspug/spug-service   "/entrypoint.sh"         2 months ago   Up 8 weeks    0.0.0.0:8080->80/tcp, :::8080->80/tcp   spug
591849de478b   mariadb:10.8.2          "docker-entrypoint.s…"   2 months ago   Up 2 months   3306/tcp                                spug-db
[root@ip-172-31-17-150 spug]# ps -ef |grep 16344
root     16344 16320  0  2023 ?        00:24:27 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
root     16559 16344  0  2023 ?        01:56:05 redis-server 127.0.0.1:6379
[root@ip-172-31-17-150 spug]#

然后通过redis高权限漏洞,编写一个可执行脚本拉取下面的sh文件本地执行。

会下载这个文件夺取服务器root权限 http://en2an.top/cleanfda/init.sh 还会下载很多sh文件,这里不想列出来了没意思 有图有真相 希望大家注意服务器安全 呵忒

bravelib avatar Jan 15 '24 08:01 bravelib

miner_url="http://en2an.top/cleanfda/zzh" miner_url_backup="http://45.83.123.29/cleanfda/zzh" miner_size="2654112" sh_url="http://en2an.top/cleanfda/newinit.sh" sh_url_backup="http://45.83.123.29/cleanfda/newinit.sh" chattr_size="8000"

666

LOVECHEN avatar Jan 19 '24 18:01 LOVECHEN

作者不修复的么

madman163 avatar Jan 23 '24 04:01 madman163

什么时候的事情

kaka5548 avatar Jan 24 '24 23:01 kaka5548

http://en2an.top/cleanfda/init.sh 这个文件确实是恶意代码

shyboyga avatar Jan 25 '24 07:01 shyboyga

没看懂,意思镜像启动后,会创建redis镜像?

jsRuner avatar Jan 25 '24 08:01 jsRuner

你这个利用漏洞要求挺难吧,这个redis 是内部, 6379端口没放开吧。无法访问

jsRuner avatar Jan 25 '24 09:01 jsRuner

是潜在风险还是实际实施了得分析清楚

风险观察

  • 示例demo容器(openspug/spug-service)内部很可能只是一个运行环境
  • 根据现在库里存在的代码(注意,并非经过实际运行docker容器验证),容器会在初次创建时动态去远程拉代码,entrypoint.sh,这有风险
  • spug-service容器内置了一个本地不带密码的Redis服务,bind 127.0.0.1,按说不会暴露....但留下内部操作的隐患
  • 这个漏洞主要针对无保护的redis
  • 文档里也说了一些redis相关的安全事项

解决方案

d0ng13 avatar Jan 29 '24 05:01 d0ng13