小言_互联网的博客

利用docker搭建php7cms靶机

640人阅读  评论(0)

前言

今天应师父要求,写一篇利用docker搭建渗透靶机的文章来记录一下自己的菜鸟时光,要求是小白照着一步一步走就能搭建成功(即使我也是小白)。想来想去还是从docker的安装说起吧。

一、docker的安装及相关配置

系统版本:centos7
内核版本:3.10.0

1、yum更新
[root@localhost /]# yum update
2、安装需要的软件包
[root@localhost /]# yum install -y yum-utils device-mapper-persistent-data lvm2
3、设置yum源

国外镜像一般很难访问,建议配置阿里云镜像。

[root@localhost /]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、安装docker

这里默认安装最新版本。

[root@localhost /]# yum install docker-ce
5、启动并加入开机启动
[root@localhost /]# systemctl start docker
[root@localhost /]# systemctl enable docker
6、验证安装是否成功 (有client和service两部分表示docker安装启动都成功了)
[root@localhost /]# docker version
7、配置加速器

这个纯属个人喜好,因为dockerhub国内访问的限制加上国内几个加速器个人感觉不好用,所以我选择了阿里云的容器镜像服务中的加速器(免费的,个人感觉超赞)。

获取镜像加速器后,阿里云非常贴心的给出了使用配置步骤:

二、对于docker的理解和基本使用命令

1、仓库、镜像和容器之间的关系
  • 镜像:本人理解的docke镜像就像Vmware虚拟及里面的快照,可恢复成运行中的虚拟机,也可以保存在本地。
  • 容器:镜像运行起来便是容器。如果按照上面这个比喻的话,容器就是快照恢复后的虚拟机。
  • 仓库:用来存储镜像,比较大的有docker hub和阿里云。
2、仓库、镜像和容器之间的命令使用
  • 仓库—镜像:从仓库拉取(下载)镜像docker pull [仓库地址及镜像版本]
  • 镜像—仓库:从本地上传镜像到仓库docker push [仓库地址及镜像版本]
  • 镜像—容器:镜像运行成容器docker run [参数] [镜像名称或ID]
  • 容器—镜像:将容器保存为镜像docker commit [容器ID] [参数及其他]

三、docker搭建php7cms靶场

1、php7cms下载

本次搭建靶机是为了写poc验证漏洞,对应的php7cms版本是2018-10-09,
下载地址:https://www.a5xiazai.com/php/138976.html
下载后:

2、拉取所需环境的docker镜像

这个php7cms需要php版本为php7以上和mysql数据库5.6以上,而docker的强大之处之一就是非常方便,可以拉取别人搭建好的环境直接使用。
对应这次搭建靶场所需环境,本人推荐一个链接,里面有php几个常用版本的lamp镜像。
比如我们要拉取php7.1版本:

[root@localhost /]# docker pull thiagobarradas/lamp:php-7.1

然后就进入了等待中:
当然也可以搜索官方的镜像仓库:docker search [关键词]
或者还有阿里云仓库:

拉取成功之后查看一下本地的镜像:

[root@localhost /]# docker images

如果要删除镜像使用命令docker rmi [仓库:版本]就行。如:docker rmi thiagobarradas/lamp:php-7.1

3、启动容器

启动容器用 docker run,这里我使用了 -it -d -p80:80 --privileged=true这几个参数。解释一下:-d 后台运行;-p80:80 将docker容器的80端口映射到系统系统的80端口;-it 可以理解为稳定运行;privileged=true 是使容器内用户权限为真正的root权限。

[root@localhost /]# docker run -it -d -p80:80 --privileged=true thiagobarradas/lamp:php-7.1

注意命令下回显的这一长串数字加字母就是容器ID,一般在使用容器ID时不用全部输进去,输入前几位能识别就行。可以利用命令docker ps查看开启的容器。
如果要删除容器使用docker rm -f [容器ID]就行了。

4、将解压后的php7cms拷贝到docker容器内

命令:docker cp [文件路径] [目的路径]这里说一下,目的路径一般为
[容器ID]:[容器内路径]

[root@localhost /]# docker cp /PHP7CMS 48:/app
5、进入容器
[root@localhost /]# docker exec -it 48 bash
6、配置cms的安装环境并安装


我拉取的这个镜像是里面吧网站根目录设置成了/app,进入后看到了我们刚刚拷贝的PHP7CMS,还有index.html和phpinfo.php,咱们再浏览器上访问一下看看能否正常访问服务。
注意这里的ip地址是centos7的虚拟机地址,因为在启动容器时我把容器的80端口映射到了外部的80端口。这时候我们就要保证虚拟机centos7的80端口仅被docker服务占用。
删除多余文件,将PHP7CMS目录中的文件拷贝到 /app

root@486faa7c64e0:/app# rm -f index.html phpinfo.php
root@486faa7c64e0:/app# cp -r PHP7CMS/. /app

这时候按照php7cms的说明文档直接访问install.php安装。
这时候提醒我们目录不可写

因为本人比较懒,而且说不定还有其它不可写问题,所以直接把网站根目录及里面的所有文件设置成了 777 命令:chmod -R 777 /app再访问:
这时候我们看到需要使用数据库,经本人测试,这个镜像的mysql数据库root密码为空,所以密码不用填就行

四、将靶场保存为镜像并推送至仓库

1、将搭建好的靶场保存为镜像

首先在容器内输入exit退出容器,使用命令

[root@localhost /]# docker commit 48 php7cms

将容器保存为镜像(我这里是把ID为48的容器保存为name是php7cms的镜像)
利用docker images查看本地镜像发现保存成功。

2、将本地镜像上传到仓库

因个人喜好,我这里使用的是阿里云的仓库
先创建镜像仓库:
然后选择本地仓库就行。
进入仓库后可以发现阿里云很贴心的把使用方法给了出来登录:

标记本地镜像(用IMAGE ID标记),将其归入仓库上传&等待
上传后刷新仓库

后记

历时5小时完成了这篇文章,毕竟萌新就是萌新。
我一定加倍努力!做大做强!超越我师父!


转载:https://blog.csdn.net/weixin_43595543/article/details/104753586
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场