
Docker-Images und k8s-YAMLs für Log4j-Schwachstellen-POC (Log4j (CVE-2021-44228 RCE-Schwachstelle)
Dieses Repo enthält die Docker- und k8s-YAMLs, die benötigt werden, um die Log4j-Schwachstelle nachzubilden (siehe unten).
Folgen Sie diesem Blog, um zu verstehen, wie alles zusammenhängt.
Falls Sie die Docker-Images anpassen müssen
cd <Git-Repo>/web-server
make build push
cd <Git-Repo>/marshalsec
make build push
cd <Git-Repo>/attack-server
make build push
Stellen Sie sicher, dass Sie DockerHub aktualisieren, damit Ihre Benutzer-ID berücksichtigt wird, bevor Sie versuchen, zu pushen.
Für den POC müssen Sie die Docker-Images nicht anpassen.
Sie können die YAMLs im k8s-Ordner in einem beliebigen Kubernetes-Cluster bereitstellen.
cd <Git-Repo>/k8s
kubectl create -f .
Dadurch werden 3 PODs im Cluster bereitgestellt, die jeweils einen „Akteur" darstellen, der seine Rolle spielt, damit wir verstehen, wie die Log4j-Schwachstelle funktioniert.
Zusätzlich zu den hier enthaltenen YAMLs müssen Sie einen Ingress im Kubernetes-Cluster bereitstellen, um das Testen der verwundbaren Web-App über öffentliche Endpunkte zu ermöglichen.
Hier ist ein Beispiel, das für Ngnix-Ingress funktioniert.
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