今天应师父要求,写一篇利用docker搭建渗透靶机的文章来记录一下自己的菜鸟时光,要求是小白照着一步一步走就能搭建成功(即使我也是小白)。想来想去还是从docker的安装说起吧。
系统版本:centos7
内核版本:3.10.0
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
国外镜像一般很难访问,建议配置阿里云镜像。
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
这里默认安装最新版本。
yum install docker-ce
systemctl start docker
systemctl enable docker
docker version
这个纯属个人喜好,因为dockerhub国内访问的限制加上国内几个加速器个人感觉不好用,所以我选择了阿里云的容器镜像服务中的加速器(免费的,个人感觉超赞)。
获取镜像加速器后,阿里云非常贴心的给出了使用配置步骤:
docker pull [仓库地址及镜像版本]
docker push [仓库地址及镜像版本]
docker run [参数] [镜像名称或ID]
docker commit [容器ID] [参数及其他]
本次搭建靶机是为了写poc验证漏洞,对应的php7cms版本是2018-10-09,
下载地址:https://www.a5xiazai.com/php/138976.html
下载后:
这个php7cms需要php版本为php7以上和mysql数据库5.6以上,而docker的强大之处之一就是非常方便,可以拉取别人搭建好的环境直接使用。
对应这次搭建靶场所需环境,本人推荐一个链接,里面有php几个常用版本的lamp镜像。
比如我们要拉取php7.1版本:
docker pull thiagobarradas/lamp:php-7.1
然后就进入了等待中:
当然也可以搜索官方的镜像仓库:docker search [关键词]
或者还有阿里云仓库:
拉取成功之后查看一下本地的镜像:
docker images
如果要删除镜像使用命令docker rmi [仓库:版本]
就行。如:docker rmi thiagobarradas/lamp:php-7.1
启动容器用 docker run
,这里我使用了 -it -d -p80:80 --privileged=true
这几个参数。解释一下:-d
后台运行;-p80:80
将docker容器的80端口映射到系统系统的80端口;-it
可以理解为稳定运行;privileged=true
是使容器内用户权限为真正的root权限。
docker run -it -d -p80:80 --privileged=true thiagobarradas/lamp:php-7.1
注意命令下回显的这一长串数字加字母就是容器ID,一般在使用容器ID时不用全部输进去,输入前几位能识别就行。可以利用命令docker ps
查看开启的容器。
如果要删除容器使用docker rm -f [容器ID]
就行了。
命令:docker cp [文件路径] [目的路径]
这里说一下,目的路径一般为
[容器ID]:[容器内路径]
docker cp /PHP7CMS 48:/app
docker exec -it 48 bash
我拉取的这个镜像是里面吧网站根目录设置成了/app,进入后看到了我们刚刚拷贝的PHP7CMS,还有index.html和phpinfo.php,咱们再浏览器上访问一下看看能否正常访问服务。
注意这里的ip地址是centos7的虚拟机地址,因为在启动容器时我把容器的80端口映射到了外部的80端口。这时候我们就要保证虚拟机centos7的80端口仅被docker服务占用。
删除多余文件,将PHP7CMS目录中的文件拷贝到 /app
rm -f index.html phpinfo.php
cp -r PHP7CMS/. /app
这时候按照php7cms的说明文档直接访问install.php安装。
这时候提醒我们目录不可写
因为本人比较懒,而且说不定还有其它不可写问题,所以直接把网站根目录及里面的所有文件设置成了 777 命令:chmod -R 777 /app
再访问:
这时候我们看到需要使用数据库,经本人测试,这个镜像的mysql数据库root密码为空,所以密码不用填就行
首先在容器内输入exit
退出容器,使用命令
docker commit 48 php7cms
将容器保存为镜像(我这里是把ID为48的容器保存为name是php7cms的镜像)
利用docker images
查看本地镜像发现保存成功。
因个人喜好,我这里使用的是阿里云的仓库
先创建镜像仓库:
然后选择本地仓库就行。
进入仓库后可以发现阿里云很贴心的把使用方法给了出来登录:
标记本地镜像(用IMAGE ID标记),将其归入仓库上传&等待
上传后刷新仓库