
Удаленный эксплойт для перечисления имен пользователей OpenSSH для CVE-2018-15473, включающий скрипты с деформированными пакетами и атаками по времени с многопоточным сканированием.
OpenSSH до версии 7.7 позволяет удаленным злоумышленникам перебирать действительные имена пользователей, отправляя некорректные запросы аутентификации и анализируя различные ответы сервера.
| Поле | Значение |
|---|---|
| Затронутое ПО | OpenSSH 2.3 – 7.7 |
| CVSS v3.1 | 5.3 (Средний) |
| Вектор атаки | Сеть (удаленный, аутентификация не требуется) |
| Коренная причина | Сервер не задерживает выход для недействительных пользователей до полного анализа пакета (auth2-gss.c, auth2-hostbased.c, auth2-pubkey.c) |
| Воздействие | Раскрытие информации — перебор действительных имен пользователей |
exploit.py — Некорректный пакет (быстрый, многопоточный)Отправляет усеченный SSH_MSG_USERAUTH_REQUEST (логическое поле удалено). Недействительные пользователи вызывают ранний выход (USERAUTH_FAILURE), действительные пользователи приводят к отключению сервера.
exploit_timing.py — Атака по времени (медленнее, работает на пропатченных серверах)Отправляет очень длинный пароль (~100 КБ) через аутентификацию по паролю. Действительные пользователи занимают больше времени, потому что сервер хэширует пароль перед отклонением, тогда как недействительные пользователи отклоняются сразу. Выполняется последовательно и автоматически калибрует порог.
Используйте это, когда exploit.py выдает ложные срабатывания (пропатченные серверы).
git clone <this-repo-url>
cd cve-2018-15473
pip install -r requirements.txt
# Malformed packet (try this first)
python3 exploit.py <target_ip> 22 <lhost> <lport> -u root
python3 exploit.py <target_ip> 22 <lhost> <lport> -w usernames.txt -t 8
# Timing attack (fallback for patched servers)
python3 exploit_timing.py <target_ip> 22 <lhost> <lport> -u root
python3 exploit_timing.py <target_ip> 22 <lhost> <lport> -w usernames.txt
| Аргумент | Описание |
|---|
target_ip | IP-адрес целевого SSH-сервера |
target_port | Порт целевого SSH-сервера (обычно 22) |
lhost | IP-адрес атакующего (не используется, сохранен для соответствия шаблону) |
lport | Порт атакующего (не используется, сохранен для соответствия шаблону) |
-u, --username | Одно имя пользователя для проверки |
-w, --wordlist | Путь к файлу со словарем (одно имя пользователя на строку) |
-t, --threads | Количество потоков (по умолчанию: 4, только для exploit.py) |