
Dieses Skript prüft auf die OpenSSH 7.7 (und älter) Benutzername-Enumeration-Schwachstelle (CVE-2018-15473). Es sendet ein fehlerhaftes Authentifizierungspaket und interpretiert die Antwort des SSH-Servers, um gültige Benutzernamen zu identifizieren.
Dieses Skript prüft auf die Schwachstelle zur Aufzählung von Benutzernamen in OpenSSH 7.7 (und früher) (CVE-2018-15473). Es sendet ein fehlerhaftes Authentifizierungspaket und interpretiert die Antwort des SSH-Servers, um gültige Benutzernamen zu identifizieren.
https://www.exploit-db.com/download/45233
Python-Kompatibilität
Alle print-Anweisungen in Python-3-Syntax (print("...")) umgewandelt.
map(str.strip, f.readlines()) durch eine List-Comprehension für Klarheit und Kompatibilität ersetzt.
Paramiko 3.x+-Kompatibilität Ersetzte:
paramiko.auth_handler.AuthHandler._handler_table[...]
mit:
from paramiko.auth_handler import AuthHandler
client_table = AuthHandler._client_handler_table.fget(AuthHandler)
Dies vermeidet TypeError: 'property' object is not subscriptable.
Direktes Patchen ersetzt:
handler_table[MSG_SERVICE_ACCEPT] = malform_packet
mit
client_table[paramiko.common.MSG_SERVICE_ACCEPT] = malform_packet
Optimierung der RSA-Schlüsselgenerierung Vermied wiederholte Generierung von 1024-Bit-RSA-Schlüsseln (langsam und unsicher). Eingeführter gecachter 2048-Bit-RSAKey zum Testen.
Protokollierungs- und Ausgabekorrekturen Abhängigkeit von args.outputFile als obligatorisch entfernt. Fallback auf sys.stdout hinzugefügt, falls --outputFile nicht angegeben wird.
Kleinere Korrekturen Paramikos laute interne Protokollierung deaktiviert. Veraltete oder redundante Ausnahmebehandlungsmuster ersetzt. Einheitliche Abstände/Einrückungen angewendet (alle Tabs in 4 Leerzeichen umgewandelt).
Abhängigkeiten installieren:
pip3 install -r requirements.txt
python3 open-ssh-ue.py <hostname> --userList wordlist.txt
python3 open-ssh-ue.py hostname \
--userList wordlist.txt \
--threads 10 \
--outputFile results.json \
--outputFormat json
hostname: Die Ziel-IP oder Domain des SSH-Servers.--port: SSH-Port (Standard ist 22)--threads: Anzahl gleichzeitiger Threads (Standard ist 5)--userList: Pfad zur Datei mit Benutzernamen (ein Benutzername pro Zeile)--username: Teste einen einzelnen Benutzernamen--outputFile: Pfad zum Speichern der Ergebnisse (optional; gibt auf Terminal aus, falls ausgelassen)--outputFormat: Ausgabeformat: list, json oder csv (Standard: list)list: Klartext-Ergebnis pro Benutzernamejson: Strukturierte Liste gültiger/ungültiger Benutzernamencsv: Kommagetrennte WerteVerwenden Sie dieses Tool nur auf Systemen, die Ihnen gehören oder für die Sie ausdrückliche Erlaubnis zum Testen haben. Unbefugte Nutzung ist illegal und unethisch.