
صور Docker وملفات YAML الخاصة بـk8s لـPOC ثغرة Log4j (Log4j (ثغرة RCE CVE-2021-44228))
يحتوي هذا المستودع على ملفات YAML الخاصة بـ Docker و k8s اللازمة لإعادة إنشاء ثغرة log4j (انظر أدناه).
اتبع هذه المقالة لفهم كيفية ربط كل هذا ببعضه.
في حال احتجت إلى تخصيص صور Docker
cd <Git-Repo>/web-server
make build push
cd <Git-Repo>/marshalsec
make build push
cd <Git-Repo>/attack-server
make build push
تأكد من تحديث DockerHub ليعكس معرف المستخدم الخاص بك قبل محاولة الدفع.
بالنسبة لإثبات المفهوم، لا تحتاج إلى تخصيص صور Docker.
يمكنك نشر ملفات YAML الموجودة داخل مجلد k8s على أي مجموعة Kubernetes.
cd <Git-Repo>/k8s
kubectl create -f .
سيؤدي هذا إلى نشر 3 PODs على المجموعة، كل منها يمثل "ممثلاً" يلعب دوره لمساعدتنا في فهم كيفية عمل ثغرة log4j.
بالإضافة إلى ملفات YAML المضمنة هنا، ستحتاج إلى نشر Ingress على مجموعة Kubernetes للسماح باختبار تطبيق الويب الضعيف من نقاط نهاية عامة.
إليك عينة تعمل مع Nginx-Ingress.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: log4j-ingress
labels:
app: log4j
env: dev
namespace: log4j
annotations:
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
#nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- <YOUR-DOMAIN-NAME-HERE>
#secretName: tls-java-secret
rules:
- host: <YOUR-DOMAIN-NAME-HERE>
http:
paths:
- path: /
backend:
serviceName: log4j-webserver
servicePort: 8080