
Este script verifica la vulnerabilidad de enumeración de nombres de usuario en OpenSSH 7.7 (y anteriores) (CVE-2018-15473). Envía un paquete de autenticación malformado e interpreta la respuesta del servidor SSH para identificar nombres de usuario válidos.
Este script verifica la vulnerabilidad de enumeración de nombres de usuario en OpenSSH 7.7 (y anteriores) (CVE-2018-15473). Envía un paquete de autenticación malformado e interpreta la respuesta del servidor SSH para identificar nombres de usuario válidos.
https://www.exploit-db.com/download/45233
Compatibilidad con Python
Se convirtieron todas las sentencias print a la sintaxis de Python 3 (print("...")).
Se reemplazó map(str.strip, f.readlines()) con una comprensión de lista para mayor claridad y compatibilidad.
Compatibilidad con Paramiko 3.x+ Se reemplazó:
paramiko.auth_handler.AuthHandler._handler_table[...]
con:
from paramiko.auth_handler import AuthHandler
client_table = AuthHandler._client_handler_table.fget(AuthHandler)
Esto evita TypeError: 'property' object is not subscriptable.
Se reemplazó el parche directo:
handler_table[MSG_SERVICE_ACCEPT] = malform_packet
con
client_table[paramiko.common.MSG_SERVICE_ACCEPT] = malform_packet
Optimización de generación de claves RSA Se evitó la generación repetida de claves RSA de 1024 bits (lenta e insegura). Se introdujo una clave RSAKey de 2048 bits en caché para pruebas.
Correcciones en el registro y salida
Se eliminó la dependencia de que args.outputFile sea obligatorio.
Se agregó un fallback a sys.stdout si no se proporciona --outputFile.
Correcciones menores Se deshabilitó el registro interno ruidoso de Paramiko. Se reemplazaron patrones obsoletos o redundantes de manejo de excepciones. Se aplicó espaciado/sangría consistente (se convirtieron todas las tabulaciones a 4 espacios).
Instalar dependencias:
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: La IP o dominio del servidor SSH objetivo.--port: Puerto SSH (por defecto es 22)--threads: Número de hilos concurrentes (por defecto es 5)--userList: Ruta a un archivo de lista de nombres de usuario (un nombre de usuario por línea)--username: Probar un solo nombre de usuario--outputFile: Ruta para guardar resultados (opcional; imprime en terminal si se omite)--outputFormat: Formato de salida: list, json o csv (por defecto: list)list: Resultado de texto plano por nombre de usuariojson: Lista estructurada de nombres de usuario válidos/inválidoscsv: Valores separados por comasUse esta herramienta solo en sistemas que posea o para los que tenga permiso explícito de prueba. El uso no autorizado es ilegal y poco ético.