原文视频:(https://blog.sechelper.com/20220919/code-review/docker-maven-install-guid/)

Docker是什么

Docker 是一个开源的应用容器引擎。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

docker三个基本概念

  • Image(镜像)
  • Container(容器)
  • Repository(仓库)

我们可以通过安装Docker,结合著名的漏洞环境集合Vulhub,快速的来搭建我们想要的漏洞验证环境。因Vulhub是基于Docker和Docker-compose来搭建的。安全人员可以极其便利地使用Docker生成一个带有特定漏洞的容器进行调试分析,从而减少在环境配置上的时间消耗,更专注于研究漏洞本身。

Docker的下载与安装

不同系统下的docker的下载与安装

 
https://www.runoob.com/docker/ubuntu-docker-install.html

我们这里以macos系统安装为例,mac可以选择brew安装也可以直接选择手动安装,这里我们选择手动安装

 
https://docs.docker.com/desktop/install/mac-install/

跟其他软件安装一样,直接按照提示即可,最后我们可以在应用中看到Docker 图标,点击运行即可

查看docker安装版本命令

 
docker --version
Docker version 20.10.17, build 100c701

Docker基本使用方法

在docker开启后,可以使用命令行方式进行镜像的搜索、拉取、查看等,或者容器的开启与关闭等操作。

搜索镜像

search命令可以搜索指定名称和仓库的镜像,例如搜索tomcat的镜像

 
docker search tomcat

拉取镜像

pull 命令可以拉取指定仓库和名称以及标签的镜像。当未指定所获取镜像的tags(标签)时,则自动拉取latest(最新)版本的镜像。

 
docker pull dordoka/tomcat

查看镜像

images命令可以读取已经拉取到本地的镜像文件,并列出镜像所存放仓库名、TAG标签、镜像编号、创建时间以及镜像大小。

 
docker images

删除镜像

rmi指令可以删除已经拉取到本地的镜像,记得在删除镜像前需要先停止容器

 
docker rmi 镜像名

生成容器

run指令可以以指定的镜像为模板生成对应的容器。我们这里启动一个Tomcat的容器,希望可以访问它的8080端口,并在容器启动后在后台默默运行

 
docker run --name my_tomcat -it -d -p 8080:8080 tomcat

查看容器

 
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
987a78763b16 tomcat "catalina.sh run" 6 minutes ago Up 6 minutes 0.0.0.0:8080->8080/tcp my_tomcat

停止容器

 
docker stop CONTAINER ID

启动容器

 
docker start CONTAINER ID

进入容器

 
docker exec -it [CONTAINER ID] /bin/bash 

退出容器

 
exit

删除容器

 
docker rm [CONTAINER ID]

使用Vulhub快速搭建漏洞环境

** Vulhub的下载与安装**

Vulhub Github地址:https://github.com/vulhub/vulhub

下载并解压Vulhub后,可以看到相应的漏洞环境,我们要启动对应的漏洞环境只需进入相应的文件夹使用Docker-compose命令启动即可。

启动漏洞环境

本次使用CVE-2020-1938为例,进入到相对应的文件夹后,编译完环境后使用docker-compose up –d启动命令会根据该文件夹中的docker-compose.yml定义将相应的镜像拉取到本地,并且会自动启动容器以及进行必要的端口映射。

 
# 自动化编译环境
docker-compose build

# 启动整个环境
docker-compose up -d

# 删除环境
docker-compose down -v

启动后访问其8080端口即可

Maven基础知识及掌握

Maven是一个项目构建工具,可以对Java项目进行构建和管理,也可以用于各种项目的构建和管理。

pom.xml文件介绍

pom.xml文件使用XML文件结构,该文件用于管理源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等。Maven项目中必须包含pom.xml文件。了解pom.xml文件结构有助于审计应用程序中所依赖的组件和发掘隐藏风险。

pom.xml定义依赖关系

pom.xml文件中的dependencies和dependency用于定义依赖关系,dependency通过groupId、artifactId以及version来定义所依赖的项目。引入Fastjson 1.2.24版本组件的Maven配置信息。其中groupId、artifactId和version共同描述了所依赖项目的唯一标志。

Maven的使用

IDEA中可以在新建项目时选择创建Maven项目。选择创建Maven项目,右侧窗口显示的是Maven项目的模板。直接使用默认模板并单击“Next”按钮,填写Name(项目名称)和Location(项目保存路径)后单击“Finish”按钮,即可完成项目的创建。

创建完成的Maven项目中包含该pom.xml文件。pom.xml文件描述了项目的Maven坐标、依赖关系、开发者需要遵循的规则、缺陷管理系统、组织以及licenses,还有其他所有的项目相关因素。对于我们代码审计来说,可以从pom.xml中快速的审查当前Java应用程序中是否使用了存在安全隐患的组建,以及快速的搭建特定版本的漏洞环境。

这里以搭建Fastjson 1.2.24之前版本的反序列化漏洞环境,需要引入版本小于1.2.24的Fastjson组件为例,引入Fastjson相应版本后右键单击pom.xml文件选择“Maven”选项,进行组件的自动获取。

​关注 至察助安 ,专注网络安全优质知识分享,无优质,不分享。

最新文章

  1. C++:一般情况下,设计函数的形参只需要两种形式
  2. css简单评论页面
  3. Unity学习疑问记录之图片画质
  4. Scrum Meeting 13-20151221
  5. Angularjs使用的一些特点
  6. 订餐系统之定时器Timer不定时
  7. Light OJ 1199 - Partitioning Game (博弈sg函数)
  8. POJ2441 Arrange the Bulls(状压DP)
  9. 解决python中json模块loads出来的结构都是unicode的问题
  10. poj 1260 Pearls(dp)
  11. lrzsz on linux
  12. [jquery]基础篇--this与$this区别
  13. 3.1决策树理论--python深度机器学习
  14. Ubuntu ssh的使用
  15. An overview of network penetration testing
  16. 利用C#进行AUTOCAD的二次开发
  17. Linux是cat、tail、head查看文件任意几行的数据
  18. 1038 Recover the Smallest Number (30 分)
  19. Scrum立会报告+燃尽图(十一月二十二日总第三十次):加强回归测试
  20. 559. N叉树的最大深度

热门文章

  1. ppt/word公式LaTeX环境配置
  2. RS485通信电路
  3. JSP页面+请求转发+EL表达式
  4. 4-1 Spring框架基础知识
  5. 素数算法(Prime Num Algorithm)
  6. AtCoder Beginner Contest 248 E - K-colinear Line // 计算几何
  7. Mysql 数据恢复流程 基于binlog redolog undolog
  8. 「Python实用秘技10」深度比较Python对象间差异
  9. mybatis报错:java.io.IOException: Could not find resource /resources/mybatis-config.xml
  10. Luogu2290 [HNOI2004]树的计数 (组合计数,prufer编码)