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

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

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

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

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

Категории

Все категории
Loading categories
vuln4japi — Уязвимый REST API на Java для демонстрации CVE-2021-44228 (log4shell). | Kitploit
Инструменты/GitHubGitHub/nix-xin/vuln4japi
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubnix-xin/vuln4japi

vuln4japi

Уязвимый REST API на Java для демонстрации CVE-2021-44228 (log4shell).

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

Популярное

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

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

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

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

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

vuln4japi

Уязвимый REST API на Java для демонстрации CVE-2021-44228 (log4shell).

Мотивация

Log4Shell потряс интернет в начале декабря 2021 года. Уязвимость нулевого дня в библиотеке логирования Apache Log4j, способная на удалённое выполнение кода (RCE), заставила организации по всему миру в спешке исправлять, патчить и смягчать последствия для своих публичных Java-приложений. Пока сообщество InfoSec объединялось, чтобы предоставлять командам безопасности непрерывный анализ и решения, сообщество Log4j активно разрабатывало патчи для устранения этой уязвимости.

Я разработал этот простой уязвимый REST API, который демонстрирует путь к удалённому выполнению кода (RCE) путём эксплуатации этой уязвимости с использованием сервера приложений Apache Tomcat. Надеюсь, эта proof of concept может быть использована для обучения ваших команд SecOps или для образования текущих и будущих разработчиков приложений. Обучайте свои команды и улучшайте свою защиту, включая, но не ограничиваясь, правила/оповещения SIEM, EDR, SOAR.

Чтобы понять рабочий процесс этой атаки, взгляните на эту графику, предоставленную Швейцарской правительственной командой реагирования на компьютерные инциденты GovCERT.ch: https://www.govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/assets/log4j_attack.png

Отказ от ответственности

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

Давайте начнём.

Что вам понадобится

  • Тестовая среда (ВМ или оборудование, желательно Linux для сборки и тестирования. Я использовал ВМ с Ubuntu Server)
  • Java JDK (я использовал OpenJDK 1.8.0_312)
  • Maven (инструмент сборки и управления Java-проектами; я использовал версию 3.6.3)
  • Marshalsec (Java Unmarshaller для перенаправления JNDI: https://github.com/mbechler/marshalsec)
  • Apache Tomcat 8 (я использовал версию 8.0.32: https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.32/bin/)
  • Установленный Python3 (мы можем использовать модуль http.server для запуска простого локального веб-сервера для размещения нашего .class файла)
  • Вредоносный Java-класс (исходный код предоставлен в каталоге xploitz)
  • Наконец, клонируйте этот репозиторий!

Процесс - Уязвимое веб-приложение

После установки Java JDK и Maven, предполагая, что вы используете дистрибутив Linux, перейдите в каталог вашего vuln4japi и соберите проект.

Примечание: Возможно, вы захотите изменить некоторые компоненты приложения перед сборкой. Например, вы можете изменить путь к журналам log4j в файле log4j2.xml. Или вы можете захотеть изменить имя результирующего war-файла в файле pom.xml. Это полностью на ваше усмотрение.

cd /path/to/vuln4japi
mvn clean package -DskipTests

Если вы не видите ошибок сборки, у вас должен появиться новый каталог target с вашим файлом vuln4japi.war. Хорошо, мы вернёмся к этому файлу чуть позже. Давайте кратко рассмотрим Tomcat.

В зависимости от вашей версии Java 8, в более поздних версиях 8 этот конкретный параметр (com.sun.jndi.ldap.object.trustURLCodebase) может быть установлен в false. Это фактически запрещает JNDI загружать удалённую кодовую базу через LDAP. А именно это эксплуатирует данная уязвимость. Поэтому нам нужно изменить файл catalina.properties в Tomcat, чтобы установить этот системный параметр в True, сделав Tomcat намеренно уязвимым.

После загрузки apache-tomcat-8.0.32.tar.gz для Linux распакуйте его куда-нибудь, например, в каталог /opt.

tar -xvf apache-tomcat-8.0.32.tar.gz -C /opt

Перейдите в каталог /conf и измените catalina.properties в нижней части файла.

Примечание: Используйте ваш предпочитаемый текстовый редактор. В этом примере я использую vim.

cd /opt/apache-tomcat-8.0.32/conf

vim catalina.properties

# добавьте следующие системные свойства в самый конец
com.sun.jndi.ldap.object.trustURLCodebase=true
com.sun.jndi.rmi.object.trustURLCodebase=true
com.sun.jndi.cosnaming.object.trustURLCodebase=true

Выйдите из текстового редактора и запустите Tomcat с помощью скрипта catalina.sh в каталоге /bin.

cd /opt/apache-tomcat-8.0.32/bin
./catalina.sh start

Проверьте ваш экземпляр Apache Tomcat, перейдя на http://localhost:8080/ или с помощью простой команды cURL из интерфейса командной строки.

curl -vv http://localhost:8080/

Если вы видите страницу приветствия в браузере или терминале, значит, всё работает. Теперь мы можем развернуть наше уязвимое приложение.

Скопируйте ваш .war файл в каталог /webapps Tomcat. Tomcat развернёт ваше приложение в горячем режиме в течение нескольких секунд.

cp /vuln4jpi/target/vuln4japi.war /opt/apache-tomcat-8.0.32/webapps

Проверьте ваше уязвимое приложение, перейдя по URL приложения или снова используя cURL из командной строки. В браузере: http://localhost:8080/vuln4japi/api

curl -vv http://localhost:8080/vuln4japi/api

Вы должны увидеть следующее сообщение: Hi, this is a Vulnerable App!!

Теперь, когда у нас есть некоторые работающие компоненты, давайте эксплуатировать эту штуку...

Процесс - Инструменты атакующего

Marshalsec

Проект marshalsec — это отличный ресурс для детального понимания этого типа атаки. По сути, он действует как вредоносный LDAP-сервер, который затем перенаправляет любой запрос на вредоносный веб-сервер, размещающий .class файл. Я настоятельно рекомендую ознакомиться с некоторой документацией, размещённой в репозитории mbechler на Github, перед использованием marshalsec: https://github.com/mbechler/marshalsec

Если вы решите пропустить технические детали и документацию, клонируйте этот репозиторий и перейдите в его каталог. Теперь, перед сборкой этого Java-проекта, я рекомендую добавить одну строку отладки в файл LDAPRefServer.java. Этот оператор печати будет полезен при захвате LDAP-запроса от уязвимого сервера.

Используя ваш любимый текстовый редактор, отредактируйте следующий файл и добавьте строку, как показано в блоке кода ниже, в метод processSearchResult().

vim marshalsec/src/main/java/marshalsec/jndi/LDAPRefServer.java
@Override
        public void processSearchResult ( InMemoryInterceptedSearchResult result ) {
            String base = result.getRequest().getBaseDN();
            Entry e = new Entry(base);
            try {
                sendResult(result, base, e);
                // добавьте эту строку, чтобы показать полную информацию о запросе
                System.out.println("Request: " + result.getRequest());
            }
            catch ( Exception e1 ) {
                e1.printStackTrace();
            }

        }

После изменения файла сохраните и выйдите из текстового редактора. Теперь вы должны иметь возможность собрать проект marshalsec с помощью Maven. Вернитесь в корневой каталог папки marshalsec и выполните maven.

mvn clean package -DskipTests

Если ошибок сборки нет, вы должны увидеть новый каталог /marshalsec/target с включённым файлом marshalsec-0.0.3-SNAPSHOT-all.jar.

Давайте настроим остальные инструменты атакующего, прежде чем запускать наш вредоносный LDAP-сервер marshalsec.

Вредоносный .class файл

Перейдите в каталог exploitz и скомпилируйте включённый файл Exploit.java.

javac Exploit.java

Если вы не получили ошибок, у вас должен появиться файл Exploit.class.

На этом всё. У вас должно быть всё скомпилировано и запущен веб-сервер. Опять же, предполагая, что вы запускаете этот тест на Linux-сервере, вам нужно будет открыть как минимум 5 окон терминала.

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