
Этот скрипт проверяет уязвимость перечисления имен пользователей в OpenSSH 7.7 (и более ранних версиях) (CVE-2018-15473). Он отправляет искаженный пакет аутентификации и интерпретирует ответ SSH-сервера для определения действительных имен пользователей.
Этот скрипт проверяет уязвимость перечисления имен пользователей OpenSSH 7.7 и более ранних версий (CVE-2018-15473). Он отправляет поврежденный пакет аутентификации и интерпретирует ответ SSH-сервера для определения действительных имен пользователей.
https://www.exploit-db.com/download/45233
Совместимость с Python
Все операторы print преобразованы в синтаксис Python 3 (print("...")).
map(str.strip, f.readlines()) заменено на списочное выражение для ясности и совместимости.
Совместимость с Paramiko 3.x+ Заменено:
paramiko.auth_handler.AuthHandler._handler_table[...]
на:
from paramiko.auth_handler import AuthHandler
client_table = AuthHandler._client_handler_table.fget(AuthHandler)
Это позволяет избежать TypeError: 'property' object is not subscriptable.
Замена прямого патчинга:
handler_table[MSG_SERVICE_ACCEPT] = malform_packet
на
client_table[paramiko.common.MSG_SERVICE_ACCEPT] = malform_packet
Оптимизация генерации RSA-ключей Избегается повторная генерация 1024-битных RSA-ключей (медленно и небезопасно). Введен кэшированный 2048-битный RSAKey для тестирования.
Исправления логирования и вывода Устранена зависимость от обязательности args.outputFile. Добавлен запасной вариант на sys.stdout, если --outputFile не указан.
Незначительные исправления
Установка зависимостей:
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: IP-адрес или домен целевого SSH-сервера.--port: Порт SSH (по умолчанию 22)--threads: Количество одновременных потоков (по умолчанию 5)--userList: Путь к файлу со списком имен пользователей (одно имя на строку)--username: Проверить одно имя пользователя--outputFile: Путь для сохранения результатов (необязательно; выводит в терминал если не указан)--outputFormat: Формат вывода: list, json или csv (по умолчанию: list)list: Простой текст для каждого имени пользователяjson: Структурированный список действительных/недействительных именcsv: Значения, разделенные запятымиИспользуйте этот инструмент только в системах, которыми вы владеете или на тестирование которых имеете явное разрешение. Несанкционированное использование незаконно и неэтично.