文章目录
Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。旨在让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。
安装docker
和docker-compose
后即可开始使用vulhub。
一、准备工作
安装docker
和docker-compose
的过程中需要用到pip以及git命令,CentOS7自带的python(这里指python2)没有pip功能。可以选择安装python的pip,也可以安装较新版本的python3,安装过程会附带安装pip3。
1、python2安装pip命令(步骤1和2二者选其一)
[root@localhost opt]# yum install python-pip
#若出现如下问题,可通过删除对应文件解决
/var/run/yum.pid 已被锁定,PID 为 7070 的另一个程序正在运行。
Another app is currently holding the yum lock; waiting for it to exit...
另一个应用程序是:PackageKit
内存:148 M RSS (559 MB VSZ)
已启动: Thu May 25 23:21:14 2023 - 00:16之前
状态 :睡眠中,进程ID:7070
#删除已存在的进程文件,再进行安装,输入 y 确认即可完成pip安装
[root@localhost opt]# rm -f /var/run/yum.pid
[root@localhost opt]# yum install python-pip
#查看python2版本
[root@localhost opt]# python -V
Python 2.7.5
2、安装python3
#安装Python基础依赖包,缺少这一步会出错
[root@localhost opt]# yum -y install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
# 创建目录
[root@localhost opt]# mkdir -p /usr/local/python3
# 下载安装包
[root@localhost opt]# wget https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz
# 解压安装包
[root@localhost opt]# tar -xvf Python-3.10.11.tgz
# 编译安装Python
[root@localhost opt]# cd Python-3.10.11 && ./configure --prefix=/usr/local/python3 && make && make install
#删除一些临时文件(删除源代码(C\C++ code)生成的执行文件和所有的中间目标文件)
[root@localhost Python-3.10.11]# make clean
#创建python软链
#在/usr/bin路径下创建python3软链,指向已安装的python3.10
[root@localhost Python-3.10.11]# ln -s /usr/local/python3/bin/python3.10 /usr/bin/python3
#在/usr/bin路径下创建pip软链,指向已安装的pip3.10
[root@localhost Python-3.10.11]# ln -s /usr/local/python3/bin/pip3.10 /usr/bin/pip
#配置完成之后,此时系统中存在两个python版本:命令python对应的仍是默认2.7版本;命令python3则对应新安装的3.10.11版本
#更新pip命令,临时制定下载源
[root@localhost Python-3.10.11]# pip install --upgrade pip -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
如果pip install 命令出错显示无可用的ssl模块的话,请参考https://blog.csdn.net/qq_37996012/article/details/134387394
3、修改pip下载源
(1)临时修改
#命令行后面指定下载地址并添加信任
[root@localhost ~]# pip install docker-compose -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
(2)永久修改
#命令行永久修改
[root@localhost ~]# pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
[root@localhost ~]# pip config set install.trusted-host mirrors.aliyun.com
#或
#在家目录下建立一个隐藏的pip目录,然后再创建一个名为pip.conf的配置文件,在pip.conf文件中输入如下内容即可
[root@localhost ~]# mkdir -p ~/.pip
[root@localhost ~]# vim ~/.pip/pip.conf
#然后输入以下内容:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com
以下是国内互联网常用的pypi安装源URL,在国内互联网下载的速度非常快
清华大学源:https://pypi.tuna.tsinghua.edu.cn/simple
腾讯源:http://mirrors.cloud.tencent.com/pypi/simple
阿里源:https://mirrors.aliyun.com/pypi/simple/
豆瓣源 :http://pypi.douban.com/simple/
4、更新 yum 源
[root@localhost ~]# yum -y update
5、题外话
python卸载方法,以python3.6做示范(卸载步骤与docker安装无关,跳过)
方法1:
#查看python3.6路径
[root@localhost ~]# whereis python3.6
#删除python3.6相关文件
[root@localhost ~]# rm -rf /usr/bin/python3.6m
[root@localhost ~]# rm -rf /usr/bin/python3.6
[root@localhost ~]# rm -rf /usr/lib/python3.6
[root@localhost ~]# rm -rf /usr/lib64/python3.6
[root@localhost ~]# rm -rf /usr/include/python3.6m
#再次查看所有的路径,看是否只剩下python2的
[root@localhost ~]# whereis python
#python3.6卸载完成
方法2:
#卸载pyhton3:
[root@localhost ~]# rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps
#删除所有残余文件
[root@localhost ~]# whereis python3 |xargs rm -frv
#卸载完成
二、卸载旧版本docker(第一次安装则不需要此步骤)
1、准备工作
#停止 docker 服务
[root@localhost ~]# systemctl stop docker
[root@localhost ~]# systemctl stop docker.socket
#删除所有docker镜像
docker rmi $(docker images -qa)
#杀死并删除所有docker容器
docker rm -f $(docker ps -qa)
#删除docker相关存储目录:(分别进行执行以下四个命令)
rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/run/docker
rm -rf /var/lib/dockershim
rm -rf /var/lib/docker
#如果删除不掉,则先umount,然后再重新执行上面那步“删除docker相关存储目录”。
umount /var/lib/docker/devicemapper
2、卸载工作
[root@localhost ~]# yum remove docker docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
#查看系统已经安装了哪些docker包:
[root@localhost ~]# yum list installed | grep docker
[root@localhost ~]# yum remove docker-ce.x86_64 docker-ce-cli.x86_64 docker-engine docker-selinux
#再次查看
[root@localhost ~]# yum list installed | grep docker
#也可以尝试以下命令进行卸载
[root@localhost ~]# yum -y remove docker docker-common docker-selinux docker-engine
三、安装docker
1、安装docker依赖环境
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
2、使用阿里云docker yum源(也可以使用国内其他下载源)
#进入opt目录
[root@localhost ~]# cd /opt
[root@localhost opt]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost opt]# yum makecache fast
#查看所有仓库中所有docker版本,以便选择版本安装
[root@localhost opt]# yum list docker-ce --showduplicates | sort -r
已加载插件:fastestmirror, langpacks
已安装的软件包
可安装的软件包
* updates: mirrors.aliyun.com
Loading mirror speeds from cached hostfile
* extras: mirrors.aliyun.com
docker-ce.x86_64 3:24.0.2-1.el7 docker-ce-stable
docker-ce.x86_64 3:24.0.2-1.el7 @docker-ce-stable
docker-ce.x86_64 3:24.0.1-1.el7 docker-ce-stable
docker-ce.x86_64 3:24.0.0-1.el7 docker-ce-stable
#省略号...
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
#默认安装最新版本
[root@localhost opt]# yum -y install docker-ce
#或指定安装版本
[root@localhost opt]# yum install docker-ce-24.0.2
#查看docker版本,判断安装启动是否成功
[root@localhost opt]# docker version
Client: Docker Engine - Community
Version: 24.0.2
API version: 1.43
Go version: go1.20.4
Git commit: cb74dfc
Built: Thu May 25 21:55:21 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 24.0.2
API version: 1.43 (minimum version 1.12)
Go version: go1.20.4
Git commit: 659604f
Built: Thu May 25 21:54:24 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.21
GitCommit: 3dce8eb055cbb6872793272b4f20ed16117344f8
runc:
Version: 1.1.7
GitCommit: v1.1.7-0-g860f061
docker-init:
Version: 0.19.0
GitCommit: de40ad0
3、加入开机自启并启动docker
[root@localhost opt]# systemctl enable docker
[root@localhost opt]# systemctl start docker
4、设置国内源,使用Docker镜像加速
[root@localhost ~]# vi /etc/docker/daemon.json
#写入以下内容, 按esc键然后输入 :wq 保存退出
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://3laho3y3.mirror.aliyuncs.com",
"http://f1361db2.m.daocloud.io",
"https://mirror.ccs.tencentyun.com"
]
}
#为防止出错,再复制并重命名一份,把daemon.json配置文件改成daemon.conf
[root@localhost ~]# mv daemon.json daemon.conf
#重新启动服务
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker
四、下载安装docker-compose
[root@localhost opt]# sudo curl -L "https://github.com/docker/compose/releases/download/v1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#这里可能会因为网络问题导致下载不完整因而运行命令时出错,重新运行命令或者换一个下载方式
[root@localhost opt]# curl -L "https://get.daocloud.io/docker/compose/releases/download/v1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息,看是否安装成功
[root@localhost opt]# docker-compose version
docker-compose version 1.25.0, build 0a186604
docker-py version: 4.1.0
CPython version: 3.7.4
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
五、下载vulhub环境
#打开下载存放目录
[root@localhost ~]# cd /opt
#下载vulhub环境
[root@localhost opt]# git clone https://github.com/vulhub/vulhub.git
#如果下载出错,可能是因为(国内外)网络问题,重试几遍,或者将 https 改为 git
[root@localhost opt]# git clone git://github.com/vulhub/vulhub.git
六、使用vulhub
1、启动环境
docker-compose会自动查找当前目录下的配置文件(默认文件名为docker-compose.yml
),并根据其内容编译镜像和启动容器。所以,要运行某个漏洞靶场,需要先进入该漏洞所在的目录。
在Vulhub中选择某个环境,进入对应目录。如appweb服务端模板注入漏洞,我们进入appweb/CVE-2018-8715
目录:
#未防止无法访问靶场,需关闭防火墙,也可以添加8080
[root@localhost opt]# systemctl stop firewalld.service
#进入某个环境对应的目录
[root@localhost opt]# cd /opt/vulhub/appweb/CVE-2018-8715
#执行如下命令,进行漏洞靶场的编译和运行:
[root@localhost CVE-2018-8715]# docker-compose build
#或
[root@localhost CVE-2018-8715]# docker-compose up -d
#查看运行服务端口
[root@localhost CVE-2018-8715]# docker ps
#通过容器ID查看对应IP,[容器ID]为漏洞环境所在容器
[root@localhost CVE-2018-8715]# docker inspect [容器ID] | grep IPAddress
为什么docker-compose build
是可选的?
docker-compose up -d
运行后,会自动查找当前目录下的配置文件。如果配置文件中包含的环境均已经存在,则不会再次编译;如果配置文件中包含的环境不存在,则会自动进行编译。所以,其实docker-compose up -d
命令是包含了docker-compose build
的。
如果更新了配置文件,可以手工执行docker-compose build
来重新编译靶场环境。
2、漏洞测试
Vulhub中所有漏洞环境均配置了详细的文档,包括如何编译、启动、原理、复现。
使用物理机或者虚拟机访问,比如在浏览器搜索地址输入:192.168.124.42:8080
3、移除环境
Vulhub中所有环境均为漏洞靶场,在测试结束后,请及时关闭并移除环境,避免被他人恶意利用。
虽然靶场全部运行在Docker中,但大多数恶意软件并不会因为运行在容器中就失去效果!
docker-compose
会默认根据当前目录下的配置文件启动容器,在关闭及移除环境的时候,也需要在对应目录下。执行docker-compose up -d
后,不要离开当前目录,漏洞测试结束后,执行如下命令移除环境:
[root@localhost CVE-2018-8715]# docker-compose down
#关闭docker服务
[root@localhost ~]# systemctl stop docker
[root@localhost ~]# systemctl stop docker.socket
上述命令会执行如下几个动作:
- 关闭正在运行的容器
- 删除所有相关容器
- 移除NAT(docker-compose在运行的时候会创建一个NAT网段)
但不会移除编译好的漏洞镜像,下次再执行docker-compose up -d
命令,就不需要再次编译相关镜像了。
参考链接:
1.Centos 7 安装python 3.8
https://blog.csdn.net/qq_41261251/article/details/105407495
2.漏洞利用
https://vulhub.org/#/environments/
3.vulhub安装
https://blog.csdn.net/JJ951001/article/details/104578501/
4.docker卸载
https://www.cnblogs.com/wangzy-Zj/p/13993468.html#:~:text=1.%E4%B8%80%E6%AC%A1%E6%80%A7%E6%9D%80%E6%AD%BB%E5%B9%B6%E5%88%A0%E9%99%A4%E6%89%80%E6%9C%89docker%E5%AE%B9%E5%99%A8%EF%BC%9A%20docker%20rm%20-f%20%24%20(docker%20ps%20-qa),rm%20-rf%20%2Fetc%2F%20docker%20rm%20-rf%20%2Frun%2F%20docker