
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










Autor





En línea

.


