NUEVAS VULNERABILIDADES EN mIRC v. 5.9 Y ANTERIORES
[ Ambas pueden combinarse ]
>mIRC NICKNAME buffer overflow<
[:::Descubrimiento:::]
eSDee descubrio un overflow en el mensaje "001", James Martin (uuuppz); quien descubrio el overflow relacionado con el "NICK", investigo el exploit con dos bugs parecidos.
[:::Vulnerable:::]
mIRC V5.91, V5.9 y todas las versiones anteriores.
[:::Impacto:::]
mIRC asume qe el nick usado por el cliente es menor a 100 caracteres de largo. mIRC guarda el nick que esta siendo utilizado, y el nick alternativo como otra posibilidad. Enviando un nick con mas de 200 caracteres de largo permite sobreescribir una variable de pila del nick que esta siendo utilizado.
En codigo C seria algo asi:
char nicks[2][100];
int currentnick;
//blah blah
void setnick(char *newnick) {
strcpy(nicks[currentnick], newnick);
}
Asi como se pueda sobreescribir el [currentnick] podes causar que strcpy escriba en cualquier parte de la memoria con 100 bytes de precision. Y como mIRC permita que enviemos cerca de 1000 bytes al buffer, tendremos mucho espacio para explotar.
El atacante hace lo siguiente:
-Hace que la victima se conecte al servidor
-Le envia un mensaje cambiando el nick de la victima a otro nick sobreescribiendo "currentnick" y hace sobrecargar la pila del buffer.
-Envia un mensaje cambiando el nick de la victima, ahora sobre el EIP en la pila.
El atacante incluye el codigo shell en cualquiera de los mensajes.
Hay dos modos que se conocen para sobre cargar este buffer, la primera es enviar:
NICK oldnick longlongnewnick
Pero esta tiene el problema que una vez que es ejecutado, el currentnick hace que se llene la pila del buffer y por ende el currentnick es deconocido. Para resolver este problema se podria hacer un kill a la conexion, entonces mIRC automaticamente se reconectaria entonces dispararia el exploit ( mIRC colocaria automaticamente el nuevo nick largo). Pero esto es confiando en una reconexion automatica. Debe haber otras soluciones pero no se conocen todavia.
El otro metodo fue descubierto por esDee of Hoepelkoe:
:anything 001 longlongnick :anything
Es todo.
[:::Exploit:::]
>mircexploit-v591.c<