Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
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-2023-25136-PoC — Entorno de reproducción mínimo basado en Docker para la vulnerabilidad de doble liberación previa a la autenticación en OpenSSH 9.1p1 (CVE-2023-25136), que demuestra corrupción de memoria y denegación de servicio mediante un cliente PoC en Python. | Kitploit
Herramientas/GitHubGitHub/lane0218/cve-2023-25136-poc
Análisis de VulnerabilidadesExplotaciónPruebas de PenetraciónAprendizaje y EducaciónExplotación de Binarios
GitHublane0218/cve-2023-25136-poc

CVE-2023-25136-PoC

Entorno de reproducción mínimo basado en Docker para la vulnerabilidad de doble liberación previa a la autenticación en OpenSSH 9.1p1 (CVE-2023-25136), que demuestra corrupción de memoria y denegación de servicio mediante un cliente PoC en Python.

Ver Repositorio
hace 10 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

Reproducción de la vulnerabilidad CVE-2023-25136

Este proyecto proporciona un entorno experimental mínimo local para reproducir la vulnerabilidad de corrupción de memoria double free antes de la autenticación en OpenSSH 9.1p1 (CVE-2023-25136) y observar el efecto de caída del proceso del servidor (DoS).

Nota: Tanto los análisis oficiales como los principales consideran que esta vulnerabilidad es "difícil de explotar prácticamente para ejecución remota de código" bajo la configuración de seguridad predeterminada. Este entorno se utiliza principalmente para demostrar el error de memoria y el efecto de denegación de servicio.

Descripción del entorno

  • Máquina objetivo:

    • Servidor OpenSSH 9.1p1 ejecutándose en un contenedor Docker
    • Configurado con un usuario sshd de separación de privilegios
    • Para facilitar la observación del fallo por double free, se compiló con --with-sandbox=no para desactivar la jaula seccomp
    • El contenedor escucha en el puerto 22 y lo mapea al puerto 2222 del host (WSL)
  • Máquina atacante:

    • Se encuentra en el mismo host / WSL que la máquina objetivo
    • Utiliza Python3 + paramiko para ejecutar el PoC, construyendo un identificador de cliente SSH específico e iniciando un handshake previo a la autenticación

Estructura de directorios:

  • Dockerfile: Imagen para construir el entorno vulnerable de OpenSSH 9.1p1
  • poc.py: PoC de cliente mínimo para desencadenar el double free en la fase previa a la autenticación

Requisitos previos

Antes de realizar las siguientes operaciones en este directorio, asegúrese de:

  • Tener instalado Docker (en WSL2 se recomienda usar Docker Desktop o instalar Docker directamente en WSL)
  • Tener instalados Python 3 y pip

1. Configuración de la máquina objetivo (OpenSSH 9.1p1 en Docker)

  1. Construir la imagen

Ejecute en este directorio:

docker build -t sshd-9.1p1-vuln .
  1. Iniciar el contenedor
docker run --rm -d --name sshd-vuln -p 2222:22 sshd-9.1p1-vuln

Explicación:

  • --rm: elimina automáticamente el contenedor al salir
  • --name sshd-vuln: nombre del contenedor
  • -p 2222:22: mapea el puerto 22 del contenedor al puerto 2222 del host
  1. Confirmar el estado de sshd
docker ps

Debería ver algo como:

CONTAINER ID   IMAGE              COMMAND               STATUS          PORTS
xxxxxx         sshd-9.1p1-vuln    "/usr/sbin/sshd -D…"  Up ...          0.0.0.0:2222->22/tcp

2. Uso del PoC en la máquina atacante

1. Instalar dependencias del PoC

Ejecute en este directorio:

pip install paramiko

2. Explicación del script PoC (poc.py)

poc.py utiliza paramiko.Transport para establecer activamente una conexión con el servidor SSH objetivo y falsifica el identificador del cliente en la fase previa a la autenticación, intentando desencadenar el double free.

Características clave:

  • Objetivo predeterminado: 127.0.0.1:2222 (el contenedor Docker local)
  • Identificador de cliente predeterminado: SSH-2.0-PuTTY_Release_0.64
  • Proporciona parámetros de línea de comandos simples:
    • -t/--target: IP del objetivo (por defecto 127.0.0.1)
    • -p/--port: puerto del objetivo (por defecto 2222)
    • -c/--client-id: identificador SSH de cliente falsificado
    • --timeout: tiempo de espera (segundos)
    • -v/--verbose: muestra información detallada de errores

3. Ejecutar el PoC

Asegurándose de que el contenedor sshd-vuln esté en ejecución, ejecute en este directorio:

python3 poc.py

O especifique explícitamente los parámetros:

python3 poc.py -t 127.0.0.1 -p 2222 -v

Ejemplo de salida esperada del cliente:

==============================================
   CVE-2023-25136 OpenSSH Pre-Auth Double Free
              Minimal PoC Client
==============================================
[2024-xx-xx xx:xx:xx] Target: 127.0.0.1:2222, ClientID: SSH-2.0-PuTTY_Release_0.64
[+] Sending crafted pre-auth handshake...
[-] Authentication failed or connection closed early.
     Por favor, revise los registros de sshd del servidor para ver si aparece 'free(): double free detected' u otra información, para confirmar si se ha desencadenado CVE-2023-25136.

Explicación:

  • Que el cliente muestre Authentication failed o connection closed es un comportamiento esperado, ya que el subproceso de pre-autenticación del servidor puede fallar o cerrar la conexión activamente durante el procesamiento.

3. Resultados esperados y método de verificación

1. Registros del servidor (contenedor)

Después de ejecutar el PoC, revise los registros del contenedor en el host:

docker logs sshd-vuln

Se espera ver una salida similar a:

Server listening on 0.0.0.0 port 22.
Server listening on :: port 22.
Invalid user  from 172.17.0.1 port xxxxx
free(): double free detected in tcache 2

Donde:

  • Invalid user: debido a que el PoC utiliza un nombre de usuario vacío, OpenSSH registra un intento de usuario no válido
  • free(): double free detected in tcache 2: glibc detecta un double free y termina el subproceso sshd actual. Este es el fenómeno de corrupción de memoria/DoS que este experimento pretende observar.

Nota: Para poder ver esta línea, al compilar OpenSSH desactivamos la jaula seccomp (--with-sandbox=no); de lo contrario, la jaula podría interceptar el comportamiento anómalo antes del double free y terminar directamente el subproceso.

2. Naturaleza del efecto

  • En este entorno experimental, el PoC puede desencadenar de forma estable la caída del subproceso de pre-autenticación (DoS), lo que provoca el fallo de la conexión SSH actual. El proceso principal sshd continuará generando nuevos subprocesos para conexiones posteriores.
  • Dado que el subproceso de pre-autenticación se ejecuta en un entorno de bajos privilegios + chroot y cuenta con múltiples mecanismos de seguridad por defecto, los investigadores consideran que es extremadamente difícil lograr la ejecución remota de código basándose únicamente en este double free.
Descargar herramienta