Jugando con las colas (de mensajes) MS07-065 exploit
Y así se lió todo y mario y yo empezamos a mirar la vulnerabilidad MS07-065 reportada hace unos días por la gente de ZDI
Tras un vistazo rápido con bindiff se confirmaba lo que el advisory indicaba, que una llamada a wcscat, en la funcion 0x06 de la interfaz rpc fdb3a030-065f-11d1-bb9b-00a024ea5525, provocaba un desbordamiento de buffer que podria permitir la ejecución de código.
wchar_t *__stdcall ReplaceDNSNameWithNetBiosName(wchar_t *a1,wchar_t *a2)
{
wchar_t *v3; // esi@1
v3 = _wcschr(a1, 92u);
_wcscpy(a2, g_szMachineName);
return _wcscat(a2, v3);
}
Mirando un poco mas en detalle, observamos que para que se llegue a esa funcion, se tiene que dar la condición de que la llamada a QMCreateObjectInternal() contenga un «.» en el nombre dns, es decir, que se especifique el fqdn del sistema.
A continuación el prototipo de la función:
long QMCreateObjectInternal(
/* [in] */ long parama,
/* [string][in] */ wchar_t *paramb,
/* [in] */ long paramc,
/* [in] */ long paramd,
/* [in] */ long parame,
/* [in] */ long paramf,
/* [in] */ long paramg);
La llamada vulnerable debería especificar como segundo parámetro el nombre de una cola con el siguiente formato: hostname.domain\AAAAAAAAAAAAAAAA
Una llamada con un string de mas de 139 bytes provocará un desbordamiento de buffer.
Explotar la vulnerabilidad es realmente sencillo, pero como siempre que hacen falta maquinas virtuales no estan donde se supone, únicamente hemos podido probar el exploit en un Windows 2000 advanced server en español.
Desde aqui queremos desear una feliz navidad a todos los administradores de sistemas. Sin su esfuerzo, nosotros no tendríamos trabajo xDDDD
Podeis descargar el exploit aqui