elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
14 Febrero 2012, 11:09  


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  Winamp <= 5.541, libsndfile <= 1.0.17 AIFF buffer unverified
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Winamp <= 5.541, libsndfile <= 1.0.17 AIFF buffer unverified  (Leído 4,740 veces)
||•?¤?- SeCurity-?¤?•||

Desconectado Desconectado

Mensajes: 9



Ver Perfil
Winamp <= 5.541, libsndfile <= 1.0.17 AIFF buffer unverified
« en: 19 Enero 2009, 22:36 »

ALguien sabe explotar Ejecución remota de código en Winamp

http://milw0rm.com/exploits/7742

me pueden decir cuales son mis primeros paso !!

se compila en perl

y como lo ejecuto para mandarlo a la victima !

« Última modificación: 23 Febrero 2009, 20:33 por Anon » En línea
AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Re: ALguien sabe explotar Ejecución remota de código en Winamp
« Respuesta #1 en: 19 Enero 2009, 22:42 »

Pues solo tienes que crear los archivos que con el payload que muestra el exploit, y cargarlos desde el winamp.

Saludos.


Los exploits son unos PoC, solo les va a tirar el winamp pero no te va a ejecutar nada, eso tu lo tienes que modificar para que ejecute el código que tu quieras, por ahi vi uno que era un heap overflow tal vez ese sirva mas.

Sobre como compilar con perl espero que alguien también nos diga como crear el ejecutable apartir de un archivo .pl  :laugh:

« Última modificación: 19 Enero 2009, 22:46 por Anon » En línea

Bien Super Divertido
@wifigdlmx
||•?¤?- SeCurity-?¤?•||

Desconectado Desconectado

Mensajes: 9



Ver Perfil
Re: ALguien sabe explotar Ejecución remota de código en Winamp
« Respuesta #2 en: 19 Enero 2009, 22:43 »

no te entendi y puedes ser mas especifico un favor !
En línea
||•?¤?- SeCurity-?¤?•||

Desconectado Desconectado

Mensajes: 9



Ver Perfil
Re: ALguien sabe explotar Ejecución remota de código en Winamp
« Respuesta #3 en: 19 Enero 2009, 22:50 »


 pero se supone con esta vulnaverilidad obtenemos la shell remota ?
En línea
AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Re: ALguien sabe explotar Ejecución remota de código en Winamp
« Respuesta #4 en: 19 Enero 2009, 22:53 »

Con la mayoría de las vulnerabilidades en las que puedes escribir código en la memoria es posible controlar el flujo del programa.

Saludos.
En línea

Bien Super Divertido
@wifigdlmx
Ivanchuk


Desconectado Desconectado

Mensajes: 458


LLVM


Ver Perfil WWW
Re: ALguien sabe explotar Ejecución remota de código en Winamp
« Respuesta #5 en: 20 Enero 2009, 14:37 »

che no seas mala leche anon  ;D, que estan buenos esos exploits, probe el del heap overflow y mi winamp se planta, capaz que se pueda lograr algo mas con eso, controlas EDI solamente, pero todavia no se de donde viene.

PD: y guarda que perlcc existe!!! :o
En línea

Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org
AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Re: ALguien sabe explotar Ejecución remota de código en Winamp
« Respuesta #6 en: 20 Enero 2009, 16:44 »

A valla, no sabia sobre el perlcc, como mi sistema ya tiene el interprete al instalar alguna dependencia de algún otro programa.

Sinceramente, luego lo analizo.

Saludos.
En línea

Bien Super Divertido
@wifigdlmx
AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Winamp <= 5.541 multiples Denial of Services (MP3/AIFF)
« Respuesta #7 en: 22 Enero 2009, 19:15 »

Pues ya realice pruebas con el primer PoC y nada:

versión del winamp



Imagen del Payload en hexedit



No se tal vez el header mp3 esta mal, leere un poco mas al respecto.

Saludos.
« Última modificación: 22 Enero 2009, 19:22 por Anon » En línea

Bien Super Divertido
@wifigdlmx
EvilGoblin


Desconectado Desconectado

Mensajes: 2.320


YO NO LA VOTE!


Ver Perfil
Re: Winamp <= 5.541 multiples Denial of Services (MP3/AIFF)
« Respuesta #8 en: 22 Enero 2009, 20:59 »

pero... se cierra? lo toma como invalido?.. o da error?...


PD: hago un fuzzer en perl.. para eso. .y ir probando distintas medidas hasta llegar al heap.... y asi poder hacer un jmp 
En línea

Experimental Serial Lain [Linux User]
AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Re: Winamp <= 5.541 multiples Denial of Services (MP3/AIFF)
« Respuesta #9 en: 23 Enero 2009, 03:17 »

Con el primero no me marca nada raro, no se traba ni se cierra ni tira error simplemente no reproduce el archivo mp3. lo marca como 0 Segundos.

El segundo (AIFF) ya lo probé y si da error, ya lo he estado depurando y no doy con nada que sirva.

Sinceramente estoy muy frio con los bugs en windows.

Saludos.
En línea

Bien Super Divertido
@wifigdlmx
jpmo4


Desconectado Desconectado

Mensajes: 1.537


Aproximadamente en........................


Ver Perfil
Re: Winamp <= 5.541 multiples Denial of Services (MP3/AIFF)
« Respuesta #10 en: 23 Enero 2009, 03:30 »

Pero es Winamp Full xD?, porque segun KAV el Winamp 5.541 Lite es seguro a a un control Remote. Salu2
En línea

Podras llevarme a mi novia, incluso hasta a mi perro, pero a mi computadora... jamas

   
AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Re: Winamp <= 5.541 multiples Denial of Services (MP3/AIFF)
« Respuesta #11 en: 23 Enero 2009, 03:54 »

Si es el Full, sin embargo no se por que no me marque error, voy a probar lo de los fuzzers sin embargo me gustaría informarme mas a cerca de donde esta el fallo, para no estar dando a ciegas.

Saludos.
En línea

Bien Super Divertido
@wifigdlmx
Ivanchuk


Desconectado Desconectado

Mensajes: 458


LLVM


Ver Perfil WWW
Re: Winamp <= 5.541 multiples Denial of Services (MP3/AIFF)
« Respuesta #12 en: 23 Enero 2009, 11:15 »

Yo probe con el segundo, el formato aiff. Aca esta el call stack,
Código:
Call stack of thread 00000E78
Address    Stack      Procedure / arguments                 Called from                   Frame
04C3F844   012610B4   <JMP.&NSCRT.memset>                   libsndfi.012610AF             04C3F874
04C3F848   02628008     s = 02628008
04C3F84C   00000000     c = 00
04C3F850   41414142     n = 41414142 (1094795586.)
04C3F878   01261AA2   libsndfi.01261022                     libsndfi.01261A9D             04C3F874
04C3F8FC   0126292E   libsndfi.012614EA                     libsndfi.01262929             04C3F8F8
04C3F934   012874B8   libsndfi.012628D6                     libsndfi.012874B3             04C3F930
04C3F94C   01287767   libsndfi.0128716D                     libsndfi.01287762
04C3F964   134015C1   <JMP.&libsndfile.#2>                  in_wav_1.134015BC
04C3F984   7C82C124   Includes in_wav_1.134015C1            kernel32.7C82C121
Esta dentro del modulo libsndfi, que es una lib para manejar archivos de audio que usa winamp. Ahi se ve que se controlan los parametros a memset(), hay un access violation en,
Código:
7C34126B   F3:AB            REP STOS DWORD PTR ES:[EDI]
Con EDI=02636000, o sea que escribe la mem con ceros desde s=02628008 hasta que llega a esa dir y tira un access violation. Estoy viendo como es que el parametro s toma ese valor, puede ser que no sea controlable :(....

Edit: Yo probe con el primero y tampoco me funciona.
« Última modificación: 23 Enero 2009, 12:52 por Ivanchuk » En línea

Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org
AlbertoBSD
Estudiante y
Colaborador
***
Desconectado Desconectado

Mensajes: 1.955


Anonymous & Paranoid


Ver Perfil WWW
Re: Winamp <= 5.541 multiples Denial of Services (MP3/AIFF)
« Respuesta #13 en: 23 Enero 2009, 16:15 »

A va, bueno no se que depurador estas usando, yo estoy usando el Olly y el IDA Pro

Por lo visto ya entendí que es lo que hace, yo no había visto los llamados a memset.

Bueno por lo visto lo que hace es algo así.

Según la documentación sobre el formato de los archivos AIFF

:http://es.wikipedia.org/wiki/Audio_Interchange_File_Format
:http://multimedia.cx/mirror/AudioIFF1_2_1.htm

Código
typedef struct { 
ID ckID;
long ckSize;
 
short numChannels;
unsigned long numSampleFrames;
short sampleSize;
extended sampleRate;
} CommonChunk;
 

Código
long ckSize; /* chunk Size <<=======*/ 

Algo similar a estructura es leída tal y cual en formato binario desde el archivo, por decir algo, los headers del archivo son volcados directamente en la memoria, después de eso, al tratar de iniciar la memoria con ceros, los programadores hicieron algo asi:

Código
memset(s,0x0,ckLikeC.ckSize + 1);

Tal vez si sea controlable, sin embargo hay que probar un ckSize pequeño solo de unos cuantos MB, y tal vez poner un payload de audio correcto (Si llegamos a sobre escribir alguna función adecuada o algún retorno o variable), sin embargo es muy remota la posibilidad.

Saludos.
« Última modificación: 23 Enero 2009, 16:39 por Anon » En línea

Bien Super Divertido
@wifigdlmx
Ivanchuk


Desconectado Desconectado

Mensajes: 458


LLVM


Ver Perfil WWW
Re: Winamp <= 5.541 multiples Denial of Services (MP3/AIFF)
« Respuesta #14 en: 23 Enero 2009, 22:20 »

Anon, yo uso olly, ahi mire la doc que pusiste y encontre los chunks. En principio es tal como dijiste.. meto algo mas de info como para que sea mas claro el tema y veamos si podemos llegar a algo.
Al principio
Código:
\x46\x4f\x52\x4d
"FORM", la struct de este chunk:
Código:
typedef struct {

ID ckID;
long ckSize;

ID formType;
char chunks [];

} Chunk;
el chunk FORM es el que contiene todos los demas, o sea que despues le sigue el chunk COMM
Código:
\x43\x4f\x4d\x4d = "COMM"
repito su struct
Código:
typedef struct {

ID ckID;
long ckSize;

short numChannels;
unsigned long numSampleFrames;
short sampleSize;
extended sampleRate;

} CommonChunk;
El problema esta en la verificacion del ckSize(=comm_fmt->size) como bien dijiste, me baje la lib (libsndfile-1.0.17) y encontre esto en aiff_read_comm_chunk() (src/aiff.c),
Código:
        if (comm_fmt->size == SIZEOF_AIFF_COMM)
                comm_fmt->encoding = NONE_MARKER ;
        else if (comm_fmt->size == SIZEOF_AIFC_COMM_MIN)
                bytesread += psf_binheader_readf (psf, "Em", &(comm_fmt->encoding)) ;
        else if (comm_fmt->size >= SIZEOF_AIFC_COMM)
        {       unsigned char encoding_len ;

                bytesread += psf_binheader_readf (psf, "Em1", &(comm_fmt->encoding), &encoding_len) ;

                memset (psf->u.scbuf, 0, comm_fmt->size) ;
Se ve que se han equivocado en
Código:
if (comm_fmt->size >= SIZEOF_AIFC_COMM)
checkea si es mayor o igual unicamente, por lo que puede ser tan grande como queramos, de ahi que se buggea el memset, rompiendo el heap. Ahi marque entre llaves donde esta comm_fmt->size en el payload,
Código:
my $aiff =
"\x46\x4f\x52\x4d\x00\x04\xcd\xec\x41\x49\x46\x46\x43\x4f\x4d\x4d{\x41\x41\x41\x41}".
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41".
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41".
"\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x20\x5e\x01\x18\x0f\x3c\x0e\xe4".
"\x00";
O sea que en realidad todos los programas que usen esta lib serian vulnerables. Revise el code de la lib y no encontre checkeo de comm_fmt->size. En cuanto a winamp, en resumen escribi 0xFD00 y hay un access violation mas adelante, hasta ahora no encontre nada realmente util  :-\....
En línea

Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines