## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-MAKMOUR-OPEN-SSH-USER-ENUMERATION
# Сценарий перечисления имен пользователей OpenSSH (CVE-2018-15473)
Этот скрипт проверяет уязвимость перечисления имен пользователей OpenSSH 7.7 и более ранних версий (CVE-2018-15473). Он отправляет поврежденный пакет аутентификации и интерпретирует ответ SSH-сервера для определения действительных имен пользователей.
* * *
## Исходный код:
https://www.exploit-db.com/download/45233
## Обновления
1. Совместимость с Python Все операторы print преобразованы в синтаксис Python 3 `(print("..."))`. `map(str.strip, f.readlines())` заменено на списочное выражение для ясности и совместимости.
2. Совместимость с Paramiko 3.x+ Заменено:
root@kitploit:~
paramiko.auth_handler.AuthHandler._handler_table[...]
на:
root@kitploit:~
from paramiko.auth_handler import AuthHandler
client_table = AuthHandler._client_handler_table.fget(AuthHandler)
Это позволяет избежать `TypeError: 'property' object is not subscriptable`.
3. Замена прямого патчинга: `handler_table[MSG_SERVICE_ACCEPT] = malform_packet` на `client_table[paramiko.common.MSG_SERVICE_ACCEPT] = malform_packet`
4. Оптимизация генерации RSA-ключей Избегается повторная генерация 1024-битных RSA-ключей (медленно и небезопасно). Введен кэшированный 2048-битный RSAKey для тестирования.
5. Исправления логирования и вывода Устранена зависимость от обязательности args.outputFile. Добавлен запасной вариант на sys.stdout, если --outputFile не указан.
6. Незначительные исправления
* Отключено шумное внутреннее логирование Paramiko.
* Заменены устаревшие или избыточные шаблоны обработки исключений.
* Применены согласованные отступы/пробелы (все табуляции заменены на 4 пробела).
## Требования
* Python 3.6+
* Paramiko (проверено с v3.4.0+)
Установка зависимостей:
root@kitploit:~
pip3 install -r requirements.txt
* * *
## Использование
### Базовое
root@kitploit:~
python3 open-ssh-ue.py <hostname> --userList wordlist.txt
### Полный пример
root@kitploit:~
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`: Значения, разделенные запятыми
* * *
## Правовое предупреждение
Используйте этот инструмент **только в системах, которыми вы владеете или на тестирование которых имеете явное разрешение**. Несанкционированное использование незаконно и неэтично.
* * *
## Ссылка
* CVE-2018-15473 – Перечисление имен пользователей OpenSSH