一次未授权的访问到获取系统shell的过程

VSole2021-12-21 05:33:53

本文记录了从一次未授权的访问到获取系统shell的渗透测试过程,文中主要阐述了攻击方法、漏洞成因以及防御思路。在进行攻防过程阶段,最重要的工作莫过于信息收集,本文不想记录对信息收集中的数据反复甄别的过程,而是想对一次重大的发现进行过程记录,通过对收集的数据进行反复的筛选发现了2375端口,相信很多在做云原生或者做容器化部署的朋友,应该对这个端口不陌生,没错这个就是docker swarm。从官方的文档可以看出swarm是用来管理docker集群的,本次获取shell权限的过程就与此有着莫大的关系。

起因

有一位运维同学在部署docker swarm的时候,在管理的docker 节点上会开放一个TCP端口2375,绑定在0.0.0.0上,相信很多有经验的运维大牛应该知道swarm是用来管理docker集群的,应该放在内网才对。但是不知道出于什么原因,他是在公网上的几台机器上安装swarm的,并且2375端口的访问策略是开放的,所以可以直接访问,那么这就造成了可以远程执行docker命令。

漏洞利用过程

当发现2375端口是开放的,所以肯定要访问一下该服务,发现是可以直接访问。

现在可以确定存在一个未授权的访问漏洞,难道渗透测试就此结束了嘛!恐怕也才是开始,既然这个端口可以远程执行docker指令所以肯定要好好利用一番,首先要看一下所有镜像。

已经获取到了镜像ID,这个在后续的过程中会有利用的,所以先记录一下,接着查看一下容器内部。

又是简单的收集了一波信息,现在要做的就是要获得宿主机的权限了,毕竟现在一直在容器里。首先要做的就是启动一个容器,挂载宿主机的var/spool/cron/目录,之后将反弹shell的脚本写入到/var/spool/cron/root中做一个执行计划,攻击机nc -vv -l -p Port进行监听,这个时候会得到一个反弹的shell。

通过执行命令,我们获得了宿主机的反弹shell。现在你会发现docker逃逸成功了,拿下了该服务器。

就这样,我们不仅拿下了服务器,甚至还是获得了root权限,总体来说还是获得了不错的成果。从一次未受权的访问漏洞到获取的系统shell,是对一个漏洞的深入挖掘,达到攻击的目的,其实后果造成的危害还是很大的,但其实修复这个漏洞是比较容易的。企业在信息安全建设中,如果只是修复漏洞,那会变得疲于奔命,所以对这种问题还是要构建完整的防御体系,从未授权的访问到获取到系统root权限,需要经过很长的攻击链,如果能及时的阻断攻击链,也是对漏洞攻击面的缩小。

防御思路

1.简单的方法就是对2375端口做网络访问控制,如ACL控制,或者访问规则等;

2.修改docker swarm的认证方式,使用TLS认证,Docker CLI 在发送命令到docker daemon之前,会首先发送它的证书,如果证书是由daemon信任的CA所签名的,才可以继续执行。

写在最后

在企业安全体系的建设过程中,是离不开渗透测试或者说安全攻防的,安全的生命周期链路比较长,从安全需求再到安全的持续运营阶段,其实渗透测试已经在安全生命周期的末端了,发现漏洞的情况已经是产品的末期。其实还是要在产品的初期,引入安全自动化平台对产品的安全质量进行阈门控制。并且建设整体的安全架构,及时的阻断攻击链,把漏洞对环境的影响面降到最低。

漏洞挖掘shell
本作品采用《CC 协议》,转载必须注明作者和本文链接
这里建议doc文档,图片可以贴的详细一些。爆破完好了,一样的6。想给它一个清晰完整的定义其实是非常困难的。
一、漏洞挖掘的前期–信息收集 虽然是前期,但是却是我认为最重要的一部分; 很多人挖洞的时候说不知道如何入手,其实挖洞就是信息收集+常规owasp top 10+逻辑漏洞(重要的可能就是思路猥琐一点),这些漏洞的测试方法本身不是特别复杂,一般混迹在安全圈子的人都能复现漏洞。接下来我就着重说一下我在信息收集方面的心得。
最近在学习Android APP客户端漏洞挖掘过程中,对Android APP端漏洞挖掘做了一个基本的梳理总结本节主要是在介绍Android APP漏洞挖掘过程中,使用常见的Android漏洞挖掘工具的安装和使用办法,帮助Android漏洞挖掘人员提供便利。本文里面一部分的介绍采摘与网络博客,大家可以点击对应的网址进行查看。
记录一次本人CVE漏洞挖掘的过程,此漏洞已被分配编号:CVE-2023-36078
业务漏洞挖掘笔记
2022-04-03 21:16:10
业务漏洞挖掘笔记多年的实战业务漏洞挖掘经验,为了让今后的业务漏洞挖掘工作更清晰,以及尽可能的把重复性的工作自
在学习漏洞的时候,按照0Day2书中第24章第1节的内容进行学习的,这章本来是远程拒绝服务的漏洞(CVE-2009-3103),但是当我在网上搜索这个漏洞的EXP时,意外的发现了Srv2.sys模块中的另一个漏洞(CVE-2009-2532),而这个漏洞竟然可以实现远程任意代码执行,诶,这我就不困了,然后顺手两个漏洞一起分析了,把Srv2.sys模块对数据包的接收处理过程逆向了一遍,了解了其中的漏
涉及系统命令调用和执行的函数在接收用户的参数输入时未做检查过滤,或者攻击者可以通过编码及其他替换手段绕过安全限制注入命令串,导致执行攻击指定的命令。
VSole
网络安全专家