3

docker搭建复现环境

 2 years ago
source link: https://blue-bird1.github.io/posts/dockertopoc/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Jan 19, 2019

docker搭建复现环境

docker搭建复现环境

安全人员进行漏洞复现经常需要搭建漏洞环境, docker能够很方便搭建漏洞环境,同时提供相当好的性能,管理功能.

docker安装请参照空格表哥的这篇文章

搭建漏洞环境也有几种情况

  • 已经有现成的docker镜像

  • 只有源代码压缩包

  • 漏洞软件开源

寻找已有docker镜像

dockerhub是官方的镜像仓库, 提供免费的公开镜像储存,也支持搜索 网站url

可以直接搜索镜像 https://hub.docker.com/search?q=<keyword>&type=image

docker命令行也支持搜索镜像 命令格式 docker search "keyword"

例如 docker search "think5"

从源代码搭建镜像

以zzzphp为例. github地址

Dockerfile知识快速普及

dockerfile是一个描述建造镜像流程的文件 每一行格式

<关键字> <n个参数>

搭建漏洞环境常用的几个关键字

FROM 镜像名 说明是从哪个镜像开始建造

COPY 本地路径 镜像路径 拷贝文件到镜像里

ENV 变量名 变量值 定义镜像内的环境变量

RUN 命令 在镜像运行一条命令

WORKDIR 路径 更改之后像RUN这类执行命令的路径

我挑选webdevops/php-apache-dev:ubuntu-15.10作为基础镜像, 这个镜像提供了非常快捷的搭建方法.

FROM webdevops/php-apache-dev:ubuntu-15.10
COPY --chown=application:application .  /var/www/html
ENV WEB_DOCUMENT_ROOT /var/www/html

只需要三行就能搭建出一个php环境

第二行 COPY --chown=application:application . /var/www/html 拷贝当前目录到/var/www/html 并更改所有者成application:application .

application:application 是这个镜像的服务器用户, 更改文件权限否则服务器不能读写文件

ENV WEB_DOCUMENT_ROOT /var/www/html

WEB_DOCUMENT_ROOT是这个镜像的一个特殊环境变量 指向web目录

使用 docker build -t site . 建造镜像和命名为site

从git构建镜像

和从源代码构建的区别只是在于一个用COPY 一个在容器直接用RUN执行命令.

FROM webdevops/php-apache-dev:ubuntu-15.10
RUN git clone https://github.com/DaBoQuan/cmseasy_decode /var/www/cmseasy && chown -R application:application /var/www/cmseasy
ENV WEB_DOCUMENT_ROOT /var/www/cmseasy

只是简单的git clone到web目录和 chown -R更改文件权限

运行和数据库

用docker运行很简单docker run -d -p 外部端口:镜像端口 <镜像名>

如果运行site镜像就是 docker run -d -p 80:80 site

一个网站当然需要一个数据库 如果你的服务器有一个外部ip 那么很简单

docker run --name mysql -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 mysql:5.6

填数据库地址的时候填外部ip即可

如果没有 可以用docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql 获取docker内部ip 填写内部ip即可


899 Words

2019-01-19 14:52 +0000


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK