CentOS 7 搭建 docker+vulhub(漏洞测试靶场)

时间:2025-04-10 08:09:35

CentOS 7 安装Vulhub(漏洞测试靶场)

  • 一、安装Docker
    • 1.一键安装Docker
    • 2.手工安装Docker
    • 加速器
      • 配置Docker镜像站
        • Linux
        • macOS
        • Windows
  • 二、安装docker-compose
    • 1.安装Python3
    • 2.安装PIP
    • 3.安装docker-compose
  • 三、下载Vulhub
  • 四、启动环境
  • 五、漏洞测试
  • 六、移除环境
  • 七、配置要求

本文为结合各位大佬博客制作的安装vulhub个人日记版

其中涉及到的引用资料链接如下:
vulhub官网: /#/docs/download-vulhub/.
修瑾:/xiujin/p/.
干就完了:/daiyekun-blog/p/.

一、安装Docker

1.一键安装Docker

这是推荐方式。在未安装过Docker的机器上,root权限执行如下命令即可一键安装最新版Docker:

curl -s / | sh 
  • 1

如果你已经安装过老版本Docker(且不是用这个一键安装脚本安装的),请先卸载Docker(例如sudo apt purge --autoremove )。

如果你不想使用这种方式安装Docker,也可以使用系统自带的包管理工具来安装,比如在Ubuntu下:

sudo apt install 
  • 1

但包管理工具安装的Docker版本一般较老,有可能在使用Vulhub的时候会出现BUG(基本上下不会,但也不排除有的Docker版本过老的)。

注意,docker是一个系统服务,所以,安装完成后可能需要手工启动服务:service start docker,否则会出现连接失败的情况。同样,如果docker没有自启动,你也需要手工启动docker服务。如果你是使用一键安装工具安装的docker,则docker会自动启动。

2.手工安装Docker

如果你使用的操作系统不支持使用一键安装脚本,也没有包管理工具,可以选择手工安装最新版Docker。

Docker分为CE版本和EE版本,其中CE版本面向开源社区,是免费软件;我们选用CE版本即可。

常见操作系统安装Docker的方法在文档中均可查阅,我就不再赘述: /engine/installation/.

注意,docker是一个系统服务,所以,安装完成后可能需要手工启动服务:systemctl restart docker,否则会出现连接失败的情况。同样,如果docker没有自启动,你也需要手工启动docker服务。

加速器

由于Vulhub所有的资源均来自于Dockerhub/Github/软件官网,而上述站点服务器在国内访问可能存在速度慢、丢包率高等问题,导致我们在启动Vulhub漏洞环境的时候太卡,影响正常体验。

所以,我们首先推荐使用国外VPS进行漏洞环境的搭建,在这种情况下,平均启动一个环境只需要30秒。

如果实在没有条件购买国外VPS,也可以Docker加速器对Dockerhub进行加速(当然只能加速Dockerhub)。
链接: /mirror

配置Docker镜像站

Linux
curl -sSL /daotools/set_mirror.sh | sh -s 
  • 1

该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/ 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。更多详情请访问文档。

macOS
  • Docker For Mac

右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中加入下面的镜像地址:

.

点击 Apply & Restart 按钮使设置生效。

Docker Toolbox 等配置方法请参考帮助文档

Windows
  • Docker For Windows

在桌面右下角状态栏中右键 docker 图标,修改在 Docker Daemon 标签页中的 json ,把下面的地址:


  • 1

加到" registry-mirrors"的数组里。点击 Apply 。

Docker Toolbox 等配置方法请参考帮助文档

二、安装docker-compose

Docker-compose用于组合服务与内网。有部分环境涉及到多个容器,且不同环境开启的端口、目录也不相同,所以Vulhub选择使用docker-compose做环境一键化管理工具。用户不再需要学习docker命令的各种参数与用法,只需要简单地执行docker-compose up -d即可启动容器。

Docker-compose基于Python开发,所以我们可以使用pip进行安装。

1.安装Python3

  • 1.安装相应的编译工具
    在root用户下(不要用普通用户,麻烦),全部复制粘贴过去,一次性安装即可.
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install -y libffi-devel zlib1g-dev
yum install zlib* -y
  • 1
  • 2
  • 3
  • 4
  • 2.下载安装包
wget wget /ftp/python/3.7.2/Python-3.7.
  • 1
  • 3.解压
tar -xvJf  Python-3.7.
  • 1
  • 4.创建编译安装目录
mkdir /usr/local/python3 
  • 1
  • 5.安装
cd Python-3.7.2
./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl 
  • 1
  • 2

第一个指定安装的路径,不指定的话,安装过程中可能软件所需要的文件复制到其他不同目录,删除软件很不方便,复制软件也不方便.
第二个可以提高python10%-20%代码运行速度.
第三个是为了安装pip需要用到ssl,后面报错会有提到.

make && make install
what-does-enable-optimizations-do-while-compiling-python
  • 1
  • 2
  • 6.创建软链接
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
  • 1
  • 2
  • 7.验证是否成功
python3 -V
pip3 -V
  • 1
  • 2
  • 报错请参考 修瑾 大佬的博客
    链接: /xiujin/p/.

2.安装PIP

上面安装python3的时候已经安装了pip3,所以此步骤可跳过

如果你的环境中没有安装pip,还需要先安装pip。推荐使用如下命令进行安装,这种方式将会少安装很多不需要的依赖:

curl -s / | python3
  • 1

3.安装docker-compose

有pip后即可直接使用pip安装docker-compose:

pip3 install docker-compose
  • 1

安装完成后,执行 docker-compose -v,有返回则说明安装成功。

经测试,多从执行docker-compose都失败,遂寻求其他途径安装docker-compose
此处参考: /daiyekun-blog/p/.

wget /docker/compose/releases/download/1.14.0-rc2/docker-compose-Linux-x86_64
rename docker-compose-Linux-x86_64 docker-compose docker-compose-Linux-x86_64
chmod +x /usr/local/bin/docker-compose
docker-compose version
  • 1
  • 2
  • 3
  • 4

三、下载Vulhub

安装完成docker和docker-compose后,拉取Vulhub到本地任意目录即可:

git clone /vulhub/
  • 1

如果拉取速度太慢,可以直接下载master分支的压缩包:.。

四、启动环境

启动漏洞环境
docker-compose会自动查找当前目录下的配置文件(默认文件名为),并根据其内容编译镜像和启动容器。所以,要运行某个漏洞靶场,需要先进入该漏洞所在的目录。

在Vulhub中选择某个环境,进入对应目录。如Flask服务端模板注入漏洞,我们进入flask/ssti目录:

cd flask/ssti
  • 1

直接执行如下命令,进行漏洞靶场的编译和运行:

# 可选
docker-compose build
docker-compose up -d
  • 1
  • 2
  • 3

为什么docker-compose build是可选的?

docker-compose up -d运行后,会自动查找当前目录下的配置文件。如果配置文件中包含的环境均已经存在,则不会再次编译;如果配置文件中包含的环境不存在,则会自动进行编译。所以,其实docker-compose up -d命令是包含了docker-compose build的。

如果更新了配置文件,你可以手工执行docker-compose build来重新编译靶场环境。

五、漏洞测试

Vulhub中所有漏洞环境均配置了详细的文档,包括如何编译、启动、原理、复现。

我们可以在本文档中搜索并查看所有漏洞环境,这里不再赘述。

六、移除环境

Vulhub中所有环境均为漏洞靶场,在测试结束后,请及时关闭并移除环境,避免被他人恶意利用。

虽然靶场全部运行在Docker中,但大多数恶意软件并不会因为运行在容器中就失去效果!

前面说了,docker-compose会默认根据当前目录下的配置文件启动容器,在关闭及移除环境的时候,也需要在对应目录下。我们执行docker-compose up -d后,不要离开当前目录即可,漏洞测试结束后,执行如下命令移除环境:

docker-compose down
  • 1

上述命令会执行如下几个动作:

关闭正在运行的容器
删除所有相关容器
移除NAT(docker-compose在运行的时候会创建一个NAT网段)
但不会移除编译好的漏洞镜像,下次再执行docker-compose up -d命令,就不需要再次编译相关镜像了。

七、配置要求

Vulhub是一个漏洞靶场,都是运行真实存在漏洞的程序。所以,漏洞程序不相同导致对环境的需求也不尽相同。

当前Vulhub的环境中,大部分环境对配置需求不高,我们建议使用1G内存的VPS进行测试。但类似gitlab/CVE-2016-9086,对配置要求相对较高,可能需要2G内存方可运行,这个是因为Gitlab软件本身的配置需求就比较高。

inode不足导致的问题
另外,Vulhub测试过程中,在配置上出现较多的问题是硬盘inode不足。

先阅读《理解inode》,了解一下inode。在时间久了以后,因为docker-compose down不会移除镜像,我们就可能已经下载或编译过很多漏洞镜像了。每个漏洞镜像其实相当于一个Linux系统,小文件比较多,比较占用inode。

某些VPS在分配空间的时候,分配的inode数量较少,我们可以执行df -i查看当前文件系统的inode:

# root @ docker-demo in ~ [20:26:48]
$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
udev             56787    404   56383    1% /dev
tmpfs            62210    537   61673    1% /run
/dev/vda1      1280000 136309 1143691   11% /
tmpfs            62210      2   62208    1% /dev/shm
tmpfs            62210      3   62207    1% /run/lock
tmpfs            62210     16   62194    1% /sys/fs/cgroup
tmpfs            62210      4   62206    1% /run/user/0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

如果说你发现硬盘空间还没用完,但提示空间不足,可以查看一下当前的inode,也许是inode数量不足了。