Sploitus

Exploit for open-ssh-user-enumeration

kitploit · 2026-08-25

Exploit Code

MARKDOWN127 lines
## 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