【云安全】云原生-Docker(二)搭建测试环境

Docker 卸载/安装

我的操作系统:ubuntu22.04

卸载

linux常规卸载命令

#方式一
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

#方式二
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

#清理残留配置文件
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc

其它情况:

使用相关命令(如find、whereis、which等命令)判断老版本的docker是通过什么方式安装的

很重要,因为不同的安装方式,卸载方式不同,要不然你是卸载不掉的!

我这里使用which命令发现之前是用snap安装的,所以卸载时得用 snap remove 命令,再使用rm命令清除残留数据

安装

注意几个问题:

1、网络问题,网络不通可以换不同的安装方法;

2、某些命令(docker search)网络不通,不代表docker其它命令也没法使用

3、务必配置国内源加速,记得重启docker服务

安装方式

根据自身需要选择合适的安装方式:

1、使用包管理工具,如apt、snap等,直接安装(推荐初学者使用)

2、参考各大文档:

(1)官方文档 Ubuntu | Docker Docs

(2)各大云厂商文档,如阿里云安装Docker并使用镜像仓库ACR_云服务器 ECS(ECS)-阿里云帮助中心

(3)安全项目文档,如vulhub靶场Vulhub - Docker-Compose file for vulnerability environment

(4)teamssix云知识库Docker 使用笔记 | T Wiki

我这里根据teamssix云知识库文档里的方式安装,就一条命令

curl -fsSL https://get.docker.com/ | sh

此方式需注意网络问题!还是建议初学者使用 apt install docker.io,省很多麻烦,或者根据阿里云的官方文档安装,安全从业者没必要在安装卸载、网络连接这种问题上浪费时间,没必要一棵树上吊死!

安装后验证

docker -v #查看版本

docker run hello-world #验证docker是否正常工作,如果该命令无法启动,就需要配置国内源,docker默认使用的是官方源

使用vim /etc/docker/daemon.json创建daemon.json配置文件,内容如下

{ 
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"] 
}

然后systemctl restart docker重启docker即可

安装docker-compose

也可以使用pip安装,本文是按T Wiki云知识库文档里的方式安装

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

Docker 初体验

在我个人的使用体验中,Docker 无疑为开发和测试带来了极大的便利。它的操作简便,几乎可以一步到位,整个过程非常顺畅,带来了极大的工作效率提升。

打开镜像库官网https://hub.docker.com/,搜索我们想要的镜像

这里以pikachu靶场镜像举例

docker pull

docker pull <镜像名> #拉取我们需要的镜像

docker images

使用docker images命令查看刚才拉取的镜像

docker run

要启动一个Docker容器,需要使用docker run命令。下面是启动一个容器的基本语法:

docker run [选项] <镜像名> [命令]

其中,选项可以是以下几种:

  • -d:后台运行容器;
  • -p:指定容器端口与主机端口的映射;
  • -v:指定容器与主机的文件或目录映射(挂载);
  • --name:为容器指定一个名称;
  • --restart:指定容器的重启策略。

镜像名是要启动的容器的镜像名称,可以是Docker Hub上的官方镜像,也可以是自己构建的镜像。命令是在容器启动后要执行的命令,可以是容器内的命令或脚本。

示例:

基于pikachu镜像,启动一个容器

docker run -d -p 8888:80 area39/pikachu

访问该容器搭建的pikachu

docker ps

查看启动中的容器

docker exec

docker exec -it <容器ID或容器名称> /bin/bash        #进入容器

docker kill

docker kill <容器ID或容器名称>        #强行停止容器,适用于紧急情况,如容器无响应或卡死、消耗太多资源

docker stop 

docker stop <容器ID或容器名称>        #停止容器,此种方式平常使用较多,该方式允许进程进行清理操作,例如关闭文件、释放资源等,较为优雅

docker start

docker start <容器ID或容器名称>        #启动已停止的容器

docker commit

docker commit <容器ID或容器名称> <新镜像名称>        #将停止的容器保存为新镜像 

docker rm 

docker rm <容器ID或容器名称>        #删除容器

docker rmi

docker rmi <镜像名>        #删除镜像

Docker 搭建测试环境

1、PHP漏洞环境

启动刚才拉取的pikachu靶场

通过RCE漏洞写入一句话木马

进入容器,验证,成功写入

使用哥斯拉连接,命令执行ls -al,发现存在.dockerenv文件,目标为docker容器!

拿到的容器权限为网站权限,非root权限

2、JAVA漏洞环境

WebLogic 服务器

在官方镜像hub上找一个weblogic的漏洞环境,这里以CVE-2020-2883举例

拉取镜像,以端口映射方式启动容器

访问

使用漏洞利用工具测试

命令执行ls -al,发现存在.dockerenv文件,目标为docker容器!

拿到的容器权限为oracle,非root权限

Shiro 框架

拉取和启动不再赘述,拿到的容器权限为root(uid=0 gid=0 gourps=0)

因此,不同的漏洞环境拿到的权限可能不同,当我们在做容器逃逸时需要注意自己拿到的权限,因为有的逃逸手段是建立在高权限之上的,低权限不适用,需要先做提权。


至此,Dcoker安全分析测试环境搭建完毕。以上所搭建的测试环境是为下一篇容器逃逸测试做准备的,下一篇详细探讨Docker容器逃逸的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值