
Un escáner de prueba de concepto para comprobar un servidor RDG Gateway en busca de las vulnerabilidades CVE-2020-0609 y CVE-2020-0610.
Un escáner de prueba de concepto para comprobar si un servidor de puerta de enlace RDP tiene las vulnerabilidades CVE-2020-0609 y CVE-2020-0610.
El escaneo en busca de vulnerabilidades de corrupción de memoria es peligroso y puede potencialmente bloquear sistemas. Aunque esta herramienta ha sido diseñada para evitar causar un bloqueo, la estabilidad no se puede garantizar al 100%. Úsela bajo su propio riesgo y solo escanee sistemas para los que tenga permiso de prueba.
python3 RDGScanner.py <ip> <port>
Para entender las vulnerabilidades, puede leer mi artículo aquí: https://www.kryptoslogic.com/blog/2020/01/rdp-to-rce-when-fragmentation-goes-wrong/
El mensaje CONNECT_PKT_FRAGMENT permite que un mensaje de conexión se fragmente en múltiples paquetes. Cada paquete tiene un campo que especifica la posición del paquete en la secuencia (fragment_id) y el número total de paquetes en la secuencia (num_fragments).
CVE-2020-0610 es una vulnerabilidad de escritura fuera de los límites (OOB) que ocurre cuando fragment_id es mayor que 64. Para mitigar la vulnerabilidad, se han añadido comprobaciones para fallar si fragment_id o num_packets es mayor que 64.
Al establecer num_fragments (pero no fragment_id) a un valor mayor que 64, fallamos la comprobación de seguridad sin arriesgarnos a explotar el error. En un sistema parcheado seremos desconectados con un código de error 0x8000ffff, mientras que en un sistema sin parchear no pasará nada.