使用Docker环境快速搭建靶机环境
在实际学习中,经常需要模拟不同的漏洞环境,而使用公网的实例的话,多多少少又存在一些风险,因此能搭建一个本地的模拟环境去测试漏洞是一个不错的方案。Docker是近两年来十分流行的开源容器引擎,因此也出现了很多使用Docker容器搭建的靶机环境供新手学习和使用。
这次我们来介绍两款使用docker进行搭建的集成了各种漏洞的靶机环境:
1. 由Phithon维护的Vulhub
项目地址:https://github.com/phith0n/vulhub
Vulhub是一个面向大众的开源漏洞靶场,无需Docker知识,简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。
2. 由 Medicean 维护的Vulapp项目地址:https://github.com/Medicean/VulApps
Vulapp收集各种漏洞环境,为方便使用,统一采用 Dockerfile 形式。同时也收集了安全工具环境。
下面来介绍下如果用Docker去搭建Vulhub和Vulapps
搭建Vulhub
准备环境:
以下在Ubuntu16.04中操作
1.在ubuntu16.04中安装pip
curl -shttps://bootstrap.pypa.io/get-pip.py | python3
2.安装docker
apt-get update && apt-getinstall docker.io
3.启动docker服务
service docker start
4.安装compose
pip install docker-compose
拉取vulhub
由于国内“不可描述的”原因,使用git clone拉取vulhub可能出现各类不可描述的情况。因此建议直接从github上下载项目就好了
当然,如果你的网络足够稳定的话,也可以使用下面的命令进行拉取。
git clone git@github.com:phith0n/vulhub.git
这里以struts环境为例,打开struts2下的s2-016目录
cd vulhub/struts/s2-016
在线自动化编译docker环境
docker-compose build
注意:
docker自身出错的情况,多出现在使用的docker/docker-compose版本较老时出现的BUG,最好使用最新版docker测试vulhub项目。源码编译失败的情况也可能出现,vulhub中的环境全部基于官方镜像编译,官方镜像可能会更新与升级,linux系统升级后可能造成编译上有一定差别,部分老原来就可能编译不成功了。
如果反复出现编译不了的情况的话,建议使用作者已经编译好并传到dockerhub的镜像:
https://hub.docker.com/u/vulhub/
使用方法是将docker-compose.yml里build: .替换成image:vulhub/xxxx
启动docker环境
docker-compose up -d
这时访问http://your-ip:8080/link.action就可以看到环境已经搭建好了。
这时再去使用struts2的利用工具就可以愉快的测试漏洞了
特别需要注意一点的是,vulhub里的漏洞并不是每一个都需要编译的,建议在运行之前到github上去看下关于特定漏洞的配置说明。
搭建Vulapp
对于没有docker基础的新手,建议使用vulapp的在线拉取镜像。如果国内访问速度很慢的话,建议将docker源替换成国内源:
推荐使用中科大源,替换方法可以参考中科大的说明文档。
Vulapp中每一个漏洞的readme.md文档中包含了详细的安装过程只需按照说明去拉取进行并启动环境即可。
按照使用说明教程搭建了wordpress的phpmailer漏洞复现环境
总结
虽然这里只是使用了github中开源的漏洞复现环境进行了介绍,但是也给很多新人学习漏洞和渗透测试的一个新的思路。Docker可以说是近两年一个特别火热的话题,它以轻巧、简单、开源著称,对于新人来说,使用docker去快速搭建一个靶机环境进行测试莫过于成本最低的一个方法,然而对于不太熟练docker的新手来说,vulapp和vulhub又是一个极为节省时间且十分高效的一个方案。
Vulhub和vulapp都是非常不错的一套靶机环境,这两款靶机环境都涵盖了最近一段时间比较流行的漏洞。特别值得一提的是vulapp不仅仅包含了漏洞还包含了漏洞利用的工具,这也给新人搭建环境测试漏洞提供了便利。这里也要给vulhub和vulapp的维护者点个赞,这两套靶机环境的最近更新时间均为半个月之内,同时也涵盖了最近两个月的漏洞,需要感谢他们的开源才使得更多新人能够更快学到更多知识。
- Oracle XE http端口8080的修改
- django之对FileField字段的upload_to的设定
- JAVA_HOME环境变量失效的解决办法
- JBOSS EAP 6.0+ Standalone模式安装成Windows服务
- Django 设置media static
- Django---Ajax
- 利用Spring MVC搭建REST Service
- ehcache2.8.3入门示例:hello world
- day4、Linux基础题目
- 命令行执行Django脚本的方法
- Spring Security笔记:Hello World
- day5、文件乱码怎么解决
- javascript计算对象的长度
- Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 『极限版』不掺水,用纯 CSS 来实现超飒的表单验证功能
- 从0到1开发测试平台(十三)前后端接口token验证
- 如何使用PYTHON抓取新闻文章
- Open3d 学习计划—13(Azure Kinect)
- 头条面试题:计算目录树的深度
- /etc/passwd文件和/etc/shadow文件
- docker_进阶
- [前端] 设定为disabled的表单域值不能被提交
- 工厂方法模式
- 原创 | 这道题codeforces的简单题差点做了我一下午,你能解出来吗?
- OpenCV4 部署DeepLabv3+模型
- 使用OpenCV实现哈哈镜效果
- 如何使用OpenCV在Python中访问IP摄像头
- 分享我学习Pandas使用的资料,可能是新手入门Pandas最好的教程!
- 原创 | Git入门教程,详解Git文件的四大状态