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

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

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

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

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

Категории

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

log4j-log4shell-playground

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

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

Популярное

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

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

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

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

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

О проекте

Песочница для проверки мер защиты от критической уязвимости log4j (также известной как Log4Shell) (CVE-2021-44228).

Конкретная проблема заключается в функции JndiLookup и в способности log4j интерпретировать ВСЕ аргументы вызова журналирования.

Можно было бы ожидать, что будет интерпретироваться только форматируемое сообщение (первый аргумент вызова журналирования), например, Hello {} в log.info("Hello {}", "${jndi:ldap://127.0.0.1:8081}"), но интерпретируются все аргументы.

Меры защиты не позволят log4j запускать поиски jndi, но по-прежнему разрешат другие поиски, например ${java:version}.

NB: Начиная с log4j 2.16.0 (LOG4J2-3211; diff) форматируемое сообщение больше не интерпретируется.

Эта уязвимость может быть активирована удалённо, когда целевое приложение журналирует любые данные, предоставленные пользователем, например, из этих распространённых HTTP-заголовков:

  • Accept
  • Cookie
  • Location
  • Origin
  • Referer
  • User-Agent
  • X-Api-Version
  • X-Forwarded-For
  • X-Forwarded-Host
  • X-Requested-With

Запуск (Ubuntu 20.04)

Сборка:

root@kitploit:~
sudo apt-get install -y openjdk-11-jdk-headless
wget https://archive.apache.org/dist/logging/log4j/2.10.0/apache-log4j-2.10.0-bin.tar.gz
wget https://archive.apache.org/dist/logging/log4j/2.16.0/apache-log4j-2.16.0-bin.tar.gz
tar xf apache-log4j-2.10.0-bin.tar.gz
tar xf apache-log4j-2.16.0-bin.tar.gz
javac -Werror -cp apache-log4j-2.10.0-bin/log4j-api-2.10.0.jar Server.java

Попробуйте уязвимую версию log4j:

root@kitploit:~
java \
    -cp apache-log4j-2.10.0-bin/log4j-api-2.10.0.jar:apache-log4j-2.10.0-bin/log4j-core-2.10.0.jar:. \
    Server
curl -H 'X-Api-Version:${jndi:ldap://127.0.0.1:8081}' http://localhost:8080
curl -H 'X-Api-Version:${java:version}' http://localhost:8080

Попробуйте меру защиты с удалением класса JndiLookup из classpath:

root@kitploit:~
cp apache-log4j-2.10.0-bin/log4j-core-2.10.0.jar log4j-core-2.10.0-without-jndi-lookup.jar
zip -q -d log4j-core-2.10.0-without-jndi-lookup.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
java \
    -cp apache-log4j-2.10.0-bin/log4j-api-2.10.0.jar:log4j-core-2.10.0-without-jndi-lookup.jar:. \
    Server
curl -H 'X-Api-Version:${jndi:ldap://127.0.0.1:8081}' http://localhost:8080
curl -H 'X-Api-Version:${java:version}' http://localhost:8080

Попробуйте меру защиты через переменную окружения:

NB Начиная с 2021-12-15 (примерно дата выпуска log4j 2.16.0 / CVE-2021-45046) это больше не рекомендуется.

root@kitploit:~
LOG4J_FORMAT_MSG_NO_LOOKUPS=true \
    java \
    -cp apache-log4j-2.10.0-bin/log4j-api-2.10.0.jar:apache-log4j-2.10.0-bin/log4j-core-2.10.0.jar:. \
    Server
curl -H 'X-Api-Version:${jndi:ldap://127.0.0.1:8081}' http://localhost:8080
curl -H 'X-Api-Version:${java:version}' http://localhost:8080

Попробуйте неуязвимую версию log4j:

root@kitploit:~
java \
    -cp apache-log4j-2.16.0-bin/log4j-api-2.16.0.jar:apache-log4j-2.16.0-bin/log4j-core-2.16.0.jar:. \
    Server
curl -H 'X-Api-Version:${jndi:ldap://127.0.0.1:8081}' http://localhost:8080
curl -H 'X-Api-Version:${java:version}' http://localhost:8080

Попробуйте grype, чтобы проверить, обнаруживает ли он эту уязвимость:

root@kitploit:~
wget https://github.com/anchore/grype/releases/download/v0.27.2/grype_0.27.2_linux_amd64.tar.gz
tar xf grype_0.27.2_linux_amd64.tar.gz grype
./grype dir:.

Попробуйте trivy, чтобы проверить, обнаруживает ли он эту уязвимость:

root@kitploit:~
wget https://github.com/aquasecurity/trivy/releases/download/v0.21.2/trivy_0.21.2_Linux-64bit.tar.gz
tar xf trivy_0.21.2_Linux-64bit.tar.gz trivy
./trivy fs --security-checks vuln .

Ссылки

  • https://www.lunasec.io/docs/blog/log4j-zero-day-mitigation-guide/
  • https://blog.cloudflare.com/inside-the-log4j2-vulnerability-cve-2021-44228/
  • https://logging.apache.org/log4j/2.x/security.html
  • https://logging.apache.org/log4j/2.x/manual/lookups.html#JndiLookup
Скачать инструмент