Es Java... ¡no aceptes proyectos de extraños para Ghidra!

Hace unos días veíamos en el blog una pequeña peculiaridad (no diría vulnerabilidad) en Ghidra que permitía ejecutar código remotamente si lanzábamos el programa en modo debug. Pues bien, hoy os traemos una vulnerabilidad XXE (entidad externa XML) identificada por @sghctoma y Tecent Security que se puede provocar al cargar un proyecto en la versión 9.0 de la popular herramienta de reversing de la NSA.

La PoC de la siguiente imagen muestra cómo un atacante puede crear un proyecto GHIDRA completamente nuevo editando el archivo project.prp e insertar el exploit XXE para recibir una simple shell reversa escuchando con netcat:


Otra aplicación interesante es la posibilidad de recibir el hash NTLM explotando esta vulnerabilidad. Java en Windows habilita la autenticación NTLM transparente de forma predeterminada y trata todas las URL como confiables, así que sólo basta con levantar un servidor HTTP con la autenticación NTLM habilitada y usar la vulnerabilidad XXE/SSRF para forzar una autenticación NTLM de la víctima.

Cuando se autentica con NTLMv1, el atacante puede transmitir directamente el Hash Net-NTLM al servicio SMB de la víctima.
En el caso de SMBv2, primero debemos modificar las flags de negociación en el mensaje de tipo 2: 'Negotiate Always Sign' y 'Negotiate 0x00004000'. Esto pasará de autenticación local a autenticación de red, y también eliminará la firma.

La gente de Tecent Security ha publicado además una herramienta llamada UltraRelay basada en Responder e Impack para el envenenamiento LLMNR y reenvío de credenciales NTLM: https://github.com/5alt/ultrarelay

El resultado como puede verse en el siguiente vídeo es bastante autoexplicativo:


- Ghidra From XXE to RCE
- GHIDRA is NSA’s reverse engineering tool released earlier this month.
- Experts found a critical vulnerability in the NSA Ghidra tool

Comentarios