Docker 卸载/安装
我的操作系统:ubuntu22.04
卸载
首先使用相关命令(如find、whereis、which等命令)判断老版本的docker是通过什么方式安装的,因为不同的安装方式,卸载方式不同,要不然你是卸载不掉的!
我这里使用which命令发现之前是用snap安装的,所以卸载时得用 snap remove 命令,再使用rm命令清除残留数据
安装
注意几个问题:
1、网络问题,网络不通可以换不同的安装方法;
2、某些命令(docker search)网络不通,不代表docker其它命令也没法使用
3、务必配置国内源加速,记得重启docker服务
安装方式
根据自身需要选择合适的安装方式:
1、使用包管理工具,如apt、snap等,直接安装(推荐初学者使用)
2、参考各大文档:
(1)官方文档:
https://docs.docker.com/engine/install/ubuntu/
(2)各大云厂商文档,如阿里云
https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker?spm=5176.28426678.J_HeJR_wZokYt378dwP-lLl.1.2dc05181cFTGYo&scm=20140722.S_help@@%E6%96%87%E6%A1%A3@@51853.S_BB1@bl+BB2@bl+RQW@ag0+hot+os0.ID_51853-RL_docker-LOC_search~UND~helpdoc~UND~item-OR_ser-V_4-P0_0-P1_0#8dca4cfa3dn0e
(3)安全项目文档,如vulhub靶场
https://vulhub.org/#/docs/install-docker-one-click/
(4)teamssix云知识库
https://wiki.teamssix.com/cloudnative/docker/docker-use-notes.html
我这里根据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"]
}
安装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
查看启动中的容器,加 -a 查看所有容器
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容器!
webshell权限如图
2、JAVA漏洞环境
WebLogic 服务器
在官方镜像hub上找一个weblogic的漏洞环境,这里以CVE-2020-2883举例
拉取镜像,以端口映射方式启动容器
访问
使用漏洞利用工具测试
命令执行 ls -al ,发现存在 .dockerenv 文件,目标为docker容器!
webshell权限如图
Shiro 框架
拉取和启动不再赘述,直接上webshell权限截图
因此,不同的漏洞环境拿到的权限可能不同,当我们在做容器逃逸时需要注意自己拿到的权限,因为有的逃逸手段是建立在高权限之上的,低权限不适用,需要先做提权。
至此,Dcoker安全分析测试环境搭建完毕。以上所搭建的测试环境是为下一篇容器逃逸测试做准备的,下一篇详细探讨Docker容器逃逸的方法。
原文始发于微信公众号(仇辉攻防):【云安全】云原生-Docker(二)搭建测试环境
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论