Be-a-Docker-Escaper-4 & Be-a-Cloud-Hacker
题目来自2024年第六届RWCTF体验赛
一道关于容器逃逸的题目
Be-a-Docker-Escaper-4
ssh连上后可以通过ps -aux
命令看到这个容器的启动命令
1 |
|
这里介绍下--pid=host
这个参数,指定为host后会使用宿主机的pid namespace。可以通过ps命令看到容器外的进程
1 |
|
因为容器共享了pid
,并且关闭了apparmor,所以可以利用某些进程的/proc/[pid]/root
符号链接实现容器逃逸
先找到宿主机上以非 root 用户运行的进程
很明显有个sleep进程
然后在容器中创建一个 UID 和 GID 与目标进程 UID 和 GID 相同的用户
这里的uid很明显是1000,gid则需要猜测(基本从1000开始,这一题中是1001)
最后用 su 命令切换到该用户,就有权限访问目标进程的 /proc/[pid]/root 了
非预期解法
1 |
|
Be-a-Cloud-Hacker
先提升权限
创建特权容器
1 |
|
在特权容器中逃逸
1 |
|
最后找cloud-init的配置文件中的密码就行了(默认在/var/lib/cloud)
参考文章:一个未公开的容器逃逸方式
Be-a-Docker-Escaper-4 & Be-a-Cloud-Hacker
https://www.dr0n.top/posts/90615d01/