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

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

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

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

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

Категории

Все категории
Loading categories
hka-seminar-log4shell — Практическая демонстрация уязвимости Log4Shell (CVE-2021-44228) | Kitploit
Инструменты/GitHubGitHub/fabioeletto/hka-seminar-log4shell
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubfabioeletto/hka-seminar-log4shell

hka-seminar-log4shell

Практическая демонстрация уязвимости Log4Shell (CVE-2021-44228)

Репозиторий
11 год назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

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

Предупреждение о безопасности

Этот репозиторий предназначен исключительно для образовательных и демонстрационных целей в рамках курсовой работы по безопасности. Не используйте этот код в производственных средах или против систем без явного разрешения. Данная демонстрация призвана повысить осведомленность о безопасности и показать, как могут возникать сложные уязвимости, когда, казалось бы, безобидные функции, такие как логирование, разрешение имен и динамическая загрузка классов, комбинируются друг с другом.

Содержание

  • 1. Описание проекта

    • 1.1 Цель курсовой работы
    • 1.2 Обзор демонстрации
  • 2. Что такое Log4Shell?

  • 3. Технические компоненты в деталях

    • 3.1 Log4j — принцип работы
    • 3.2 JNDI — механизм поиска
    • 3.3 LDAP — структура и роль
    • 3.4 Общий ход атаки Log4Shell
  • 4. Структура проекта и настройка

    • 4.1 Обзор каталогов
    • 4.2 Предварительные требования
    • 4.3 Настройка
  • 5. Демонстрация проекта

  • 6. Меры защиты

  • 7. Заключение

  • 8. Источники

1. Описание проекта

1.1 Цель курсовой работы

Цель этой курсовой работы — дать глубокое понимание уязвимости Log4Shell (CVE-2021-44228), которая стала известна в декабре 2021 года и была признана одной из самых критических уязвимостей за последние годы. В работе объясняются как теоретические основы, так и проводится практическая демонстрация уязвимости.

1.2 Обзор демонстрации

Для практической иллюстрации уязвимости Log4Shell в этом репозитории создана изолированная и контейнеризованная среда, которая воспроизводит полный ход атаки. Демонстрация основана на трех основных компонентах:

  • vulnerable-app: Намеренно уязвимое приложение Spring Boot с Log4j версии 2.14.1. Оно логирует заголовок User-Agent из HTTP-запроса, который злоумышленники могут манипулировать, чтобы использовать уязвимость.
  • ldap-server: Форк известного инструмента marshalsec, который действует как LDAP-сервер. Этот сервер находится под контролем злоумышленника и предоставляет ссылку на вредоносный Java-класс, который впоследствии выполняется.
  • payload-server: Простой HTTP-сервер, который доставляет вредоносный Java-класс (Exploit.class). Как и LDAP-сервер, этот сервер находится под контролем злоумышленника.

Примечание: Дополнительная информация о настройке и запуске демонстрации находится в разделах 4. Структура проекта и настройка и 5. Демонстрация проекта.

2. Что такое Log4Shell?

Log4Shell — это название критической уязвимости в Java-библиотеке Log4j с идентификатором CVE-2021-44228. Она позволяет злоумышленнику с минимальными усилиями выполнить произвольный код на удаленном сервере (Remote Code Execution, сокращенно RCE).

Уязвимость затрагивает Log4j версий 2.0–2.14.1 и настолько серьезна, что многие органы безопасности, включая BSI (Федеральное ведомство по безопасности в информационной технологии), присвоили ей наивысший уровень опасности.

Log4Shell особенно опасна, потому что ...

  • Log4j чрезвычайно распространен. Он используется от игровых серверов до корпоративных приложений.
  • не требуется аутентификация, любой анонимный внешний злоумышленник потенциально может нанести ущерб.
  • вектор атаки тривиален, часто достаточно отправить приложению манипулированную строку.
  • функциональность Log4j, используемая для эксплуатации этой уязвимости, включена по умолчанию.

Основная причина заключается в функциональности Log4j, которая позволяет загружать динамическое содержимое в сообщения журнала с помощью так называемых Lookups. В сочетании с JNDI (Java Naming and Directory Interface) и протоколом LDAP (Lightweight Directory Access Protocol) это позволяет загружать и выполнять удаленные вредоносные Java-классы.

Обнаружение и публикация уязвимости вызвала волну безопасности по всему миру. Многие системы пришлось срочно патчить или отключать. Впоследствии стали известны другие связанные уязвимости (например, CVE-2021-45046), что показывает, насколько глубокой и опасной была проблема.

Далее подробно описываются задействованные технологии и их взаимодействие, чтобы глубже понять уязвимость.

3. Технические компоненты в деталях

3.1 Log4j — принцип работы

Log4j — это библиотека, созданная Apache для регистрации событий в Java-приложениях. Логирование является центральным инструментом в разработке программного обеспечения для мониторинга систем или анализа ошибок. Log4j — одна из самых известных и широко используемых платформ ведения журналов в экосистеме Java, применяемая как в небольших приложениях, так и в крупных корпоративных системах.

Зачем нужно логирование?

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

  • запросы пользователей
  • внутренние изменения состояния
  • сообщения об ошибках

Эти события можно документировать с помощью журналов (логов), обычно в виде текстового вывода на консоль, в файлы или по сетевым протоколам на центральные серверы журналов. Благодаря разумному логированию можно понять, что приложение когда сделало.

Что предлагает Log4j?

Log4j предоставляет гибкую, высоконастраиваемую инфраструктуру для создания и обработки сообщений журнала. К основным функциям относятся:

  • Log-Level: Существуют различные уровни важности (например, DEBUG, INFO, WARN, ERROR), с помощью которых можно управлять детализацией журнала.
  • Appenders: Вывод журнала может направляться в различные места назначения (например, консоль, файл или удаленные серверы).
  • Layouts: С помощью макетов можно определить формат сообщения журнала (например, временная метка, поток, сообщение).

Другие функции, актуальные для данной курсовой работы, будут рассмотрены в последующих разделах, в частности функциональность заполнителей и функциональность поиска (Lookup).

Простой пример```java

import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;

public class Example { private static final Logger logger = LogManager.getLogger();

public static void main(String[] args) {
    logger.info("Starte Anwendung...");
}

}

В этом простом примере создается или извлекается экземпляр логгера, если он уже существует. Затем выводится сообщение журнала на уровне `INFO`. Log4j занимается форматированием и выводом сообщения на основе конфигурации. Пример конфигурации может выглядеть следующим образом:```xml
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

Эта конфигурация определяет Appender, который выводит лог-сообщения в формате Datum Uhrzeit Log-Level Loggername - Nachricht на консоль. Затем этот Appender назначается Root-Logger, который обрабатывает все лог-сообщения, начиная с уровня INFO.

Вывод может выглядеть так:``` 2023-10-01 12:00:00 INFO Example - Starte Anwendung...

Теперь перейдем к конкретным функциям Log4j, которые наиболее актуальны для уязвимости Log4Shell.

#### Заполнители в сообщениях лога
Скачать инструмент