Explotando CVE-2017-8759: inyección de código en el parser WSDL SOAP (sólo haciendo clic en un RTF y sin necesidad de habilitar macros)

Recientemente FireEye descubrió una vulnerabilidad de inyección de código que se produce en el marco .NET al analizar un WSDL utilizando el moniker SOAP. Bautizada como CVE-2017-8759, ya se estaba explotando en Internet mediante un documento de Microsoft Word en ruso “Проект.doc” con el que los atacantes conseguían ejecución de comandos y descargaban y ejecutaban un script en Visual Basic que contenía también comandos en Powershell. Se trataba del malware FINSPY también conocido como FinFisher o WingBird.

Posteriormente, la gente de MDSec publicó un interesante artículo donde explican cómo explotar esta vulnerabilidad pero además sin la interacción del usuario en el RTF, es decir, solo con hacer clic ya se obtiene la ejecución de comandos, sin necesidad de habilitar las macros.

En primer lugar, hay que crear un documento con un nuevo objeto OLE (nuevo documento, insertar objeto y crear desde archivo):


A continuación, guardamos el archivo como RTF y volvemos a abrirlo usando un editor hexadecimal. Después localizamos el parámetro "objdata" para identificar dónde está el OLE blob. Cuando encontremos el parámetro, debemos agregar la directiva "\objupdate". Por ejemplo:

{\object\objautlink\objupdate\rsltpict\objw9027\objh450{\*\objclass Word.Document.8}{\*\objdata

Una vez editado, descargamos "blob.bin" de este repositorio GitHub, lo abrimos de nuevo con un editor hexadecimal y actualizamos la URL del archivo WSDL que contiene la inyección de comandos. El OLE blob debe ser utilizado para reemplazar el del documento RTF existente.

En este punto, al abrir el documento RTF, el exploit debería ejecutar el archivo HTA señalado en el WSDL, sin interacción del usuario.

A continuación se muestra un vídeo sobre cómo explotar esta vulnerabilidad:

Fuente: Exploiting CVE-2017-8759: SOAP WSDL Parser Code Injection

Comentarios