本文简述的是当我们拿到docker可视化管理工具的权限后如何拿到宿主节点shell
docker可视化管理产品各种各样,本文以portainer这款产品为例
我们拿到portainer的账号密码,然后登陆进来,首页如下
看下具体资产,有三个镜像,一个容器,一个数据卷
然后看下具体镜像,选择任意一个镜像来创建容器,这里以vulhub/rails:5.0.7为例
先把一些信息填好,name可以随便命名,image为我们之前选择的vulhub/rails:5.0.7,把Always pull the image关掉
然后往下拉,开启特权模式(开启原因:特权模式下的容器可以管理宿主机的块设备)
点击上面的deploy按钮创建容器,可以看到已经创建完成,点击划线部分进入容器的console界面
查看可操作的块设备,在真实环境下可能有很多块设备,可以一一挂载分析,这里只有一块
随便创建一个目录,然后挂载上
进入该目录查看,可看到宿主机磁盘挂载成功
接下来我们来到攻击机,监听一个端口,如:8888
然后写计划任务反弹shell
这里我的遇到一个坑,就是写完计划任务后不生效,排查日志后发现是mode不对,被忽略掉了,所以写完后记得改下文件mode,改成0600
然后呢,遇到另一个坑,shell反弹不过来,看下日志已经执行,但是收不到shell
因为宿主机有nc,所以用nc把shell弹过来
可以看到已经收到shell
然后再反弹到另个端口,可以看到更多命令的执行结果
成功拿到宿主机的shell,并且为root权限
接下来再介绍通过非特权模式下来逃逸的方法,还是以vulhub/rails:5.0.7为例
在不开启特权模式下呢,主要是把宿主机的根目录挂载到容器上,如下,模式为bind,选择可读可写
挂载的容器目录随便,主机目录为根目录,然后点击创建
创建完成后进入挂载的容器目录,可以看到已经把主机的根目录挂载上去了
接下来的操作如上就行了。
其实除了写反弹shell之外,也可以写cs马,然后放到计划任务定时执行,或者有网站的话写web马,开了ssh的话写公钥等等。一般打红队的话,打的就是漏洞,计算机知识面,思路等等。
本人一般喜欢蓝队,不卷,躺得比较舒服。
另外,如果对docker感兴趣的话,可以看下这个,个人觉得这个讲的不错
尚硅谷Docker实战教程