起因

环境因素影响,我他么路由器映射端口 msf就是反弹不回来session,在跟大牛交流后,大牛说服务器装个kali就行了,我以为是叫idc那边直接安装,但是因为这个系统特殊,很多 idc不允许安装这个的,不过很多国外的idc倒是允许自行上传iso镜像,自行安装。

Docker简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。–来自Docker_百度百科 (不懂的自行科普)

Docker值得关注的特性
文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
资源隔离:系统资源,像CPU和内存等可以分配到不同的容器中,使用cgroup。
网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和IP地址。
日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。
交互式shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次***互shell。 

Docker通常用于如下场景
web应用的自动化打包和发布;
自动化测试和持续集成、发布;
在服务型环境中部署和调整数据库或其他的后台应用;
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

实验环境
外网vps服务器一台(注:内存超过2g)
实验环境中是一台centos6.7 64位的系统

官方文档要求Linux kernel至少3.8以上,且docker只能运行在64位的系统中,由于RHEL6和CentOS6的内核版本为2.6,因此必须要先升级内核。(实验环境中内核升级后是2.6.32-573.7.1.el6.x86_64)额,官方说至少3.8以上,我也不理解。

实验环境中我是直接

 

升级的。

安装方法很多,自行科普。

开始安装Docker
curl -sSL https://get.docker.com/ | sh
安装完毕后启动服务

 

查看是否启动成功

docker参数

搜索docker可用镜像
docker search ****  (搜索kali) 

 

docke  pull kalilinux/kali-linux-docker

执行pull命令的时候要写完整的名字,比如”docker  pull kalilinux/kali-linux-docker”。

额,我已经装好了就不截图了。

在docker容器(kali)中 运行“hello 90sec”。(文中的kali容器我自己改名过的,安装哪个镜像就是哪个镜像的名字,原:kalilinux/kali-linux-docker)

在容器中安装程序

 

docker run kali apt-get install ****

这样安装是否太麻烦,那么我直接进入系统直接安装所要的程序吧。

进入容器(kali)

 

更新一下

 

更新完毕后kali中的所有软件只要想用的 都可以自己安装 下面我们安装msf

 

apt-get install metasploit-framework

安装完毕后启动postgresql

 

/etc/init.d/postgresql start

启动msf

docker 可以自动化打包和发布,你可以把你需要的都安装进容器里面,并且发布,方便自己以后使用。(打造一个属于自己的渗透测试环境是不是很方便,当然docker的应用还有很多)

接下来退出容器,并且保存 查看容器的id

 

保存容器

 

感觉就每次使用都要保存,好麻烦。(嘿嘿,每次渗透的记录都不会被保存不挺好的嘛,取证就不太方便了。)

安装好后,会自动分配个内网ip到容器中,并且每次登录的ip都是不一样的。
细心点的同学会发现,容器中的内核是跟宿主机的内核一样的
每次保存也就等于快照一样。

小技巧:

由于容器中的msf ip是内网的 启动容器的时候可以映射端口,加上p参数就行。

 

docker run -i -t -p 53:53 kali

也可以共享目录,v参数

 

docker run -i -t -p 53:53 -v /mnt:/mnt kali

基本就这样了,发一些自己刚玩整理的命令。 启动一个退出的容器:

 

attach到运行中的容器:

 

docker attach CONTAINERID

查看安装的镜像:

 

在docker容器中运行命令:

 

docker run IMAGE [COMMAND] [ARG...]

docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。 注意:IMAGE=REPOSITORY[:TAG],如果IMAGE参数不指定镜像的TAG,默认TAG为latest。

列出容器:

 

查看最近生成的容器:

 

查看正在运行的容器:

 

停止正在运行的容器:

 

启动一个退出的容器:

 

删除容器:

 

查看所有容器ID:

 

删除所有的容器:

 

docker rm $(docker ps -a -q)

删除镜像:

 

P神补充:
docker使用完成后并不用保存。
注意区分镜像和容器的区别,使用完成后是一个docker容器,退出后,执行如下操作即可重启容器并再次进入:

 

查看容器id

docker ps -a

启动容器

docker start xxx

容器中执行bash并进入交互式shell

docker exec -it xxx /bin/bash

在容器中,按ctrl + p再按ctrl + q退出容器,但不结束bash

下次执行

docker attach xxx

即可再次进入此bash

只有当你觉得需要保存成镜像的时候才执行commit。

【via@90sec-9ye

Docker在渗透中的应用的更多相关文章

  1. 内网渗透中的反弹Shell与端口转发

    from:https://www.91ri.org/9367.html Web渗透中的反弹Shell与端口转发 php需未禁用exec函数一:生成php反弹脚本msf > msfpayload ...

  2. Docker查看运行中容器并进入容器

    一.简述 Docker查看运行中容器并进入容器. 二.方法 $ sudo docker ps $ sudo docker exec -it 775c7c9ee1e1 /bin/bash 将黄色文字替换 ...

  3. docker从容器中怎么访问宿主机

    docker从容器中怎么访问宿主机  我来答 浏览 3160 次 2个回答 #热议# 2019年全国两会召开,哪些提案和政策值得关注? 好程序员 知道合伙人 推荐于2017-11-22   dock ...

  4. 1. docker 在 macOS 中的架构 2. 在macOS系统中,docker pull 下来的镜像存储在哪里?

    docker 在 macOS 中的架构: 在macOS中,docker的实现跟在其它Linux系统中略有不同,在其它Linux系统中,操作系统本身就是docker容器的宿主机,docker镜像都是直接 ...

  5. PHP渗透中的奇淫技巧--检查相等时的漏洞

    PHP是现在网站中最为常用的后端语言之一,是一种类型系统 动态.弱类型的面向对象式编程语言.可以嵌入HTML文本中,是目前最流行的web后端语言之一,并且可以和Web Server 如apache和n ...

  6. 内网渗透中的mimikatz

    0x00 前言 上篇测试了中间人攻击利用框架bettercap,这次挑选一款更具代表性的工具--mimikatz 0x01 简介 mimikatz,很多人称之为密码抓取神器,但在内网渗透中,远不止这么 ...

  7. Docker 在容器中部署静态网站

    Docker 在容器中部署静态网站 在容器中部署静态网站 设置容器的端口映射 run -P``--publish-all=true|false:容器暴露的所有端口进行映射 -p``--publish= ...

  8. PHP网站渗透中的奇技淫巧:检查相等时的漏洞

    PHP是现在网站中最为常用的后端语言之一,是一种类型系统 动态.弱类型的面向对象式编程语言.可以嵌入HTML文本中,是目前最流行的web后端语言之一,并且可以和Web Server 如apache和n ...

  9. 修改/etc/docker/daemon.json中的log-opts配置发现无效 docker 限制日志大小

    https://colobu.com/2018/10/22/no-space-left-on-device-for-docker/ 在/etc/docker/daemon.json中修改或添加log- ...

随机推荐

  1. jsp 通用获取所有表单值传后台

    新建一个js文件,自定义一个jquery 函数. 在jsp页面引用 下面为:自定义函数 $.fn.GetDivJson = function (prifix,orgModel) { var $oute ...

  2. 使用NSKeyedArichiver进行归档、NSKeyedUnarchiver进行解档

    一.使用archiveRootObject进行简单的归档 使用NSKeyedArichiver进行归档.NSKeyedUnarchiver进行接档,这种方式会在写入.读出数据之前对数据进行序列化.反序 ...

  3. Extjs combobox 实现搜索框的效果

    目的:使用combobox实现一个类似搜索框的效果,即用户输入内容后,出现相关下列列表,提供选择. 实现:extjs3 中combobox自身带这个功能即在remote模式下,store在load的时 ...

  4. c# WinForm软件启动拦截(通过更改文件关联实现)

    前几天想做一个软件启动之前拦截的程序,找了下网上的资料没有找到合适的,突然看到电脑软件某看图软件,找到个思路就是跟他一样的,通过修改文件关联进行启动拦截. 原理是这样的,更改.exe默认的启动方式为我 ...

  5. 视频流协议HLS与RTMP 直播原理 点播原理

    小结: 1.HLS原理 视频--->图像.声音分别编码打包切割容器文件ts,建立纯文本索引文件.m3u8--->播放器http下载容器文件.索引文件,播放,下载 基于HLS可以实现直播和点 ...

  6. IO流入门-第五章-FileWriter

    FileWriter基本用法和方法示例 /* java.io.Writer java.io.OutputStreamWriter 转换流(字节输出流--->字符输出流) java.io.File ...

  7. [转载]javascript+ajax+jquery教程11--正则表达式

    原文地址:javascript+ajax+jquery教程11--正则表达式作者:morflame 正则表达式可以: 测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个 ...

  8. rest_framework之url控制器详解

    一 自定义路由(原始方式) from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^books/ ...

  9. Python元组组成的列表转化为字典

    虽然元组.列表不可以直接转化为字典,但下面的确是可行的,因为经常用python从数据库中读出的是元组形式的数据. # 原始数据 rows = (('apollo', 'male', '164.jpeg ...

  10. Django - ModelForm组件

    一.ModelForm组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用:比如我们的数据库中有这样一张学生表, ...