docker下运行漏洞环境

建立一个漏洞复现的环境,其实和建立一个应用的步骤是类似的。只是漏洞复现环境是存在漏洞的应用而已。
对环境的搭建比较方便的方式是通过dockerfile结合docker-compose。
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于拉取的基础镜像并最终创建一个新的镜像,通过Dockerfile我们可以创建一个你需要的镜像,里面是包含了你要安装的软件,相当于是提前定制好要安装的拓展,执行的命令等,然后一键执行,极大地简化操作流程。Dockerfile由4部分组成:基础镜像信息、维护者信息、镜像操作指令和容器启动指令。
Compose是用来定义和运行一个或多个容器应用的工具。Compose是使用YML文件来定义多容器应用的,它还会用docker-compose up命令把完整的应用运行起来。

vulhub介绍

Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。
项目地址

https://github.com/vulhub/vulhub
下载整个项目

git clone https://github.com/vulhub/vulhub.git
或者
https://codeload.github.com/vulhub/vulhub/zip/master
克隆完成后cd进入到漏洞目录,目录里有个docker-compose.yml文件,比如weblogic系列的CVE-2020-14882未授权访问漏洞的docker-compose.yml文件。

version: ‘2’
services:
weblogic:
image: vulhub/weblogic:12.2.1.3-2018
ports:
- “7001:7001”
image为镜像名字,一般由(用户名/软件名:标签)组成,ports为暴露的端口,前面的7001为暴露到宿主机的端口(访问端口),后面的7001为容器里漏洞的端口。
执行以下命令启动,-d参数为后台启动,执行后会自动下载镜像并运行

docker-compose up -d
启动后因为该端口为http端口,可以通过浏览器访问查看。成功访问表示成功使用docker运行漏洞环境。 5.png
查看镜像

docker images
5.png REPOSITORY:仓库的名字,这里的仓库名是两段式名称,即<用户名>/<软件名>,比如这里的用户名为vulhub,软件名为weblogic。对于Docker Hub(docker官方维护的公共仓库),如果不给出用户名,则默认为library,即官方镜像。
TAG:标签名
IMAGE ID:镜像id
CREATE:镜像创建的时间
SIZE:镜像大小

查看运行中容器

docker ps
2.png 查看所有容器

docker ps -a
1.png 进入容器

docker exec -it 67cf37096531 /bin/bash
4.png -it后的字符串为容器id。
容器启停

docker stop id
docker start id
docker restart id

获取镜像

docker hub上有大量的镜像可用,从docker镜像仓库获取镜像的命令是docker pull,其命令格式是

docker pull [选项] [Docker registry 地址[:端口号]/仓库名][:标签]
8.png Docker 镜像仓库地址:地址格式一般是<域名/ip>:[端口号],默认地址是Docker Hub 仓库名 这里的仓库名是两段式名称,即<用户名>/<软件名>,比如:ysrc/xunfeng,对于Docker Hub,如果不给出用户名,则默认为library,即官方镜像。比如

docker pull ubuntu:18.04
6.png
上面的命令中没有给出 Docker 镜像仓库地址,因此将会从 Docker Hub 获取镜像。而镜像名称是 ubuntu:18.04,因此将会获取官方镜像 library/ubuntu 仓库中标签为 18.04 的镜像。
下载私有镜像

docker pull docker.io/betsy0/web-xxe
7.png 运行镜像
以上面的私有镜像为例

docker run -itd -p 5001:80 --name test betsy0/web-xxe:latest
6.png -i:以交互模式运行容器,通常与 -t 同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-d:后台运行容器,并返回容器ID;
三者如何使用?
例如:“我想在后台运行一个镜像”,当执行下方命令的时候

docker run -d --name test betsy0/web-xxe:latest
通过docker ps查看是否运行成功,却发现,没有运行成功,这是什么情况呢??后台运行不就是运用-d参数吗?其实主要原因就是这个镜像可能最后添加了CMD就类似

CMD ["/bin/bash"]
意思就是当你在后台运行的时候,这个镜像创建的容器会首先执行/bin/bash,这意味着,当在后台运行(-d)时,shell立即退出。所以除非命令未在前台运行,否则容器会立即停止 解决方法:通过-i或者-t为-d提供一个伪"tty -n"

docker run -i -d images:tags
docker run -t -d images:tags
docker run -itd images:tags
另外一种情况(进入容器)也是如此,Docker官方更是提倡-i 和 -t搭配使用,使其行为类似于shell。
文件复制

docker cp filename 容器名:/filepath
容器自启
运行了一个环境后想要其docker启动后容器也随之启动。

docker update --restart=always id

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值