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数量不足了。