当前位置:首页 > 黑客服务 > 正文内容

Docker 给你不一样的渗透体验

访客4年前 (2021-04-07)黑客服务466

  我们在渗透测试的时候,经常需要去配置一些环境,下载一些特别不容易的各种支持库。尤其是伟大的防火墙各种拦截的情况下,我们做相关的工作会花费大量的时间跟精力。那么这个时候有没有一种简单的方式来解决这个问题呢?这篇文章将会给大家介绍能实现安全人员最梦寐以求的一次性地创建或配置,可以在任意环境、任意时间让应用正常地运行的容器——Docker

  Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in packages called containers.——Wikipedia,所以想要搞懂Docker我们必须先从container(容器)开始说起。

  一 、认识容器

  1.1 什么是容器?

  容器镜像是轻量的、可执行的独立软件包?,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。

  容器化软件在任何环境中都能够始终如一地运行,不依赖于任何语言、框架包括系统。

  容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。

  

  1.2 图解物理机、虚拟机与容器

  关于虚拟机与容器的对比在后面会详细介绍到,这里只是通过网上的图片加深大家对于物理机、虚拟机与容器这三者的理解。

  物理机

  

  虚拟机

  

  容器

  

  容器和虚拟机具有相似的资源隔离和分配优势,但功能有所不同,因为容器虚拟化的是操作系统,而不是硬件,因此容器更容易移植,效率也更高。

  一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。

  二、那么Docker又是什么呢

  

  2.1 什么是Docker?

  说实话关于Docker是什么并太好说,下面我通过四点向你说明Docker到底是个什么东西。

  Docker 是世界领先的软件容器平台。

  Docker?使用 Google 公司推出的 Go 语言 进行开发实现, 是?linux 容器的一种封装,提供简单易用的容器使用接口,接口相当简单,用户可以方便的创建、销毁容器,属于操作系统层面的虚拟化技术。

  Docker 能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件。

  用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

  2.2 Docker应用场景

  ? 使用Docker容器开发,测试,部署服务

  ? 创建隔离的运行环境

  ? 搭建测试环境

  ? 构建多用户的平台即服务基础设施

  ? 提供软件即服务应用程序

  ? 高性能,多规模的宿主机部署

  2.3 Docker容器的特点

  轻量

  在一台机器上运行的多个 Docker 容器可以共享这台机器的操作系统内核;它们能够迅速启动,只需占用很少的计算和内存资源。镜像是通过文件系统层进行构造的,并共享一些公共文件。这样就能尽量降低磁盘用量,并能更快地下载镜像。

  标准

  Docker 容器基于开放式标准,能够在所有主流 Linux 版本、Microsoft Windows 以及包括 VM、裸机服务器和云在内的任何基础设施上运行。

  安全

  Docker 赋予应用的隔离性不仅限于彼此隔离,还独立于底层的基础设施。Docker 默认提供最强的隔离,因此应用出现问题,也只是单个容器的问题,而不会波及到整台机器。

  2.4 为什么要用Docker

  更高效的利用系统资源

  由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高。无论你在用awvs扫漏洞还是用御剑扫后台,妈妈再也不用担心内存不够啦。

  更快速的启动时间

  传统的虚拟机技术启动应用服务往往需要数分钟,而Docker容器应用,由于直接 运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。

  一致的运行环境

  Docker的镜像提供了除内 核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现“这段代码在我机器上没问题啊”这类问题。

  持续交付和部署

  使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。安全人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署系统进行自动部署。正如分布式扫描器的部署。

  而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环 境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。

  更轻松的迁移

  由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。

  比如渗透测试人员去做内网测试就可以很轻易的将在一个平台上运行的应用,迁移到甲方爸爸指定的平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

  三、Docker基本概念

  Docker 包括三个基本概念:

  镜像(Image)

  容器(Container)

  仓库(Repository)

  理解了这三个概念,就理解了 Docker 的整个生命周期。

  

  3.1 镜像(Image)——一个特殊的文件系统

  操作系统分为内核和用户空间。对于Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是一个root文件系统。

  镜像构建时,充分利用 Union FS的技术,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。

  分层存储的特征还使得镜像的复用、定制变得更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。

  3.2 容器(Container)——镜像运行时的实体

  镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。前面讲过镜像使用的是分层存储,容器也是如此。

  容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。

  容器不应该向其存储层内写入任何数据?,容器存储层要保持无状态化。所有的文件写入操作,都应该使用数据卷(Volume)、或者绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。因此,使用数据卷后,容器可以随意删除、重新 run ,数据却不会丢失。

  3.3 仓库(Repository)——集中存放镜像文件的地方

  镜像构建完成后,可以很容易的在当前宿主上运行,但是,?如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。

  一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。所以说:镜像仓库是Docker用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。

  通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

  用户可以使用Docker Registry公开服务和本地搭建私有 Docker Registry免费上传、下载公开的镜像,可能提供收费服务供用户管理私有镜像及足以支持 docker 命令 Docker Registry API 的服务端等。

  这是Docker中非常重要的三个基本概念,理解了这三个概念,我们就对 Docker 的整个生命周期有了比较深的了解了。

  四、渗透测试中docker的使用

  4.1 渗透工具

  很多安全工具的部署,用 Docker 可以一键安装,非常方便,比如 Kali 可以这样去安装:

  

  Metasploit 可以这样去安装:

  

  是不是非常方便?随时随地,用后即删,还有很多渗透工具就不一一列举了,同学们可以自行去发现。

  4.2 搭建靶机环境

  Docker 是近两年来十分流行的开源容器引擎,因此也出现了很多使用 Docker 容器搭建的靶机环境供新手学习和使用。

  以Vulhub为例:

  

  这里以 struts 环境为例,打开 struts2 下的 s2-016 目录

  

  这时访问 就可以看到环境已经搭建好了。

  

  真的是节省了我们大把时间!

  测试结束后,我们结束部署

  

  五、最后聊聊docker的安全性

  打算入坑 Docker 的同学可以关注这份 Docker 安全部署指南:

  GitHub - GDSSecurity/Docker-Secure-Deployment-Guid...

  (

  这份指南罗列了 Docker 在部署上如果不注意可能会出现的严重安全问题。对这块攻击感兴趣的也可以了解下。

  Docker 是非常棒的轻量级虚拟化隔离解决方案,但还不是真正的虚拟机,所以安全上会有不少特别的学问

  Docker 本身在部署上如果没做好,是可以黑掉实体机的,还可以恶意操作 Docker 的一些部署行为。

  比如之前研究过 Docker 集群管理里的 2375/2376 端口,如果可以被外网访问到,就糟糕了,如列出所有 images:

  

  之后就可以执行ssh pub key 注入等等一系列 Docker 的操作指令,邪恶点可以写个 Docker 蠕虫传播起来。

  也许会有那么一天,Docker 蠕虫 / 勒索事件爆发。Docker安全,从安全部署习惯开始!

  SSRF漏洞攻击原理及防御方案

  揭秘|让企业55%的潜藏数据「分类」呈现,需几步?

  从Gartner报告探究数字化转型破局之道

  医疗行业数据安全的主要风险和应对分析

  Web中间件漏洞之Apache篇

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/106363.html

分享给朋友:

“Docker 给你不一样的渗透体验” 的相关文章

约茶app约茶APP

最新约茶app都是哪些?整理了30本这篇文章主要介绍了约茶app,包括约茶app ios下载,下面小编整理了约茶app的图文教程,看看约茶app苹果版详细步骤吧! 觉得网上的一些答 据新快网2021年10月20日03:31:27的新闻报道,微博网友@R卜傲晴 爆料。 平安夜来临之际,事件,在网上...

贾秀东个人资料简介(简历及图片)

贾秀东人物概况 本页面提供了贾秀东个人资料简介(简历及图片),贾秀东是谁?贾秀东个人简介资料完整设计了网页求职找工作编辑个人简历作品所需要的贾秀东网站常用模板元素,不保证贾秀东人物数据真实,任何问题请联系管理员调整。 贾秀东图片 贾秀东个人资料简介 贾秀东,中国国际问题研究所特聘研究员。1...

吃鸡鸭的屁股会有病吗?我非常爱吃鸡鸭的屁股,但经常吃会有病吗?另

吃鸡鸭的屁股会有病吗?我非常爱吃鸡鸭的屁股,但经常吃会有病吗?另 鸡鸭的肛门附近组织,布满大大小小的腺体,各类秽物与毒素都在这些腺体囤积;鸡鸭的肛门也有非常高密度的大肠杆菌,所以鸡鸭的屁股不是少吃的问题,而是不能吃.吃得少可能没觉出怎样,多了问题就显出来了.而且鸡鸭屁股的大肠杆菌会随着蛋生出来的时...

身份证信息被黑客盗取(黑客能把手机内身份证信息盗取吗)

一、身份证信息被黑客盗取(黑客能把手机内身份证信息盗取吗)方法总结 1、黑客通过手身份姓名能否窃取别人银行卡里。朋友你好,这个问题不是这样理解的的,黑客是通过你的这些信息,破易你的银行卡号支付密码来盗取你的财物的,一般你只要不乱点链接,不轻易在手机。黑客控制了手机,窃取了身份证号码手机号姓名等所有...

铁盖子可以放入高压锅蒸吗?装酱料的铁盖子,外面的涂层有些剥落,好

铁盖子可以放入高压锅蒸吗?装酱料的铁盖子,外面的涂层有些剥落,好 铁盖子可以放入高压锅蒸吗? 装酱料的铁盖子,外面的涂层有些剥落,好象也没锈,可以拿它盖严瓶子入高压锅蒸吗? 绝对不行!既危险又不卫生。盖住的瓶子在高压锅中加热,很容易形成压力差而爆炸;铁在高压锅中的水蒸汽作用下极易变成四氧化三...

图说兰州清真寺之兰州水上清真寺

圖說蘭州清真寺之蘭州水上清真寺讀書啊,我信赖但有朗朗書聲出破廬,遲早有一日有萬鯉躍龍門之奇象。 圖說蘭州清真寺是本人在2011年開始走訪,並在中穆網蘭州社區陸續發佈的走訪蘭州清真寺之系列。不知不覺六七年過去瞭,有的清真寺有瞭很大的變化,以是在此基礎上本人再次整理發佈,希望大傢足不出戶瞭解蘭州的...

评论列表

笙沉嵶邸
3年前 (2022-06-07)

le 使镜像构建透明化,不仅仅开发团队可以理解应用运行环 境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。  更轻松的迁移  由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在很多平台上运行,无

鸽吻葵袖
3年前 (2022-06-07)

e)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。  容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。前面讲过

孤鱼未芩
3年前 (2022-06-07)

中存放镜像文件的地方类似于我们之前常用的代码仓库。  通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过<仓库名>:<标签>的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest

竹祭旧竹
3年前 (2022-06-07)

led containers.——Wikipedia,所以想要搞懂Docker我们必须先从container(容器)开始说起。  一 、认识容器  1.1 什么是容器?  容器镜像是轻量的、可执行的独立软件包?,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。  容器化软件

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。