搜索
    Hi~登录注册
    查看: 142|回复: 4
    收起左侧

    利用docker搭建php7cms靶机全过程记录

    [复制链接]

    2

    主题

    0

    精华

    22 小时

    在线时间

    新手上路

    Rank: 1

    积分
    11
    发表于 2020-3-15 22:24:42 | 显示全部楼层 |阅读模式

    前言

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

    一、docker 的安装及相关配置

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

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

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

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

    这里默认安装最新版本。

    [[email protected] /]# yum install docker-ce
    5、启动并加入开机启动
    [[email protected] /]# systemctl start docker
    [[email protected] /]# systemctl enable docker
    6、验证安装是否成功 (有 client 和 service 两部分表示 docker 安装启动都成功了)
    [[email protected] /]# 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 版本:

    [[email protected] /]# docker pull thiagobarradas/lamp:php-7.1

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

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

    [[email protected] /]# 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 权限。

    [[email protected] /]# 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]:[容器内路径]

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

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

    [email protected]:/app# rm -f index.html phpinfo.php
    [email protected]:/app# cp -r PHP7CMS/. /app

    在这里插入图片描述这时候按照 php7cms 的说明文档直接访问 install.php 安装。 这时候提醒我们目录不可写 在这里插入图片描述 因为本人比较懒,而且说不定还有其它不可写问题,所以直接把网站根目录及里面的所有文件设置成了 777 命令:chmod -R 777 /app 再访问: 在这里插入图片描述这时候我们看到需要使用数据库,经本人测试,这个镜像的 MySQL 数据库 root 密码为空,所以密码不用填就行 在这里插入图片描述在这里插入图片描述

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

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

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

    [[email protected] /]# docker commit 48 php7cms

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

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

    因个人喜好,我这里使用的是阿里云的仓库 先创建镜像仓库: 在这里插入图片描述然后选择本地仓库就行。 在这里插入图片描述进入仓库后可以发现阿里云很贴心的把使用方法给了出来在这里插入图片描述登录: 登录 标记本地镜像(用 IMAGE ID 标记),将其归入仓库改名字上传&等待 在这里插入图片描述上传后刷新仓库 在这里插入图片描述




    上一篇:操作系统导论
    下一篇:新手报到
    回复

    使用道具 举报

    游客
    回复
    您需要登录后才可以回帖 登录 | 获取账号

    快速回复 返回顶部 返回列表