Articles

Metasploit Framework Windows Tutorial
Remote Desktop Connection
Windows Processes That May Be Dangerous
How-To use NetCat a Tutorial
Common Linux Commands
Common Ports
Netcat Commands
HTTP Response Codes
War-Google Hack Terms
Wardriving
Avoiding Social Engineering and Phishing Attacks
Intrusion Detection on Linux
Linux Intrusion Detection
Penetration Testing Guide
Penetration Testing Tools
Social Engineering Fundamentals, Part I: Hacker Tactics
Social engineering (computer security)
The Psychology of Social Engineering

The Archives

General GSO
GovernmentSecurity.org News & Suggestions
In The News
Open Topic
General Security Information
Trash Can
Exploit & Vulnerability Mailing List Archives
Trial Member Forum
Product and Program Reviews GSO Tutorials
System Security
Windows Systems
Beginners Section
Linux & Unix Systems
File Downloads
Exploit Research & Discussion Trojan & Virus Errata
Networking Security / Firewall / IDS / VPN / Routers
System Hardening
E-Mail Security
Wifi Security
Trial Member Uploads
Upload discovered Trojans & Mal ware
GSO Programming Section
C , C++ , VC++
Visual Basic.NET
Perl /CGI
Java/Javascript
PHP/XML/ASP/HTML
Assembly + Other
The Cork Board
Network Security Consultant Directory
Network Security Jobs
The Archives
Encryption Information
General Network Security
Internet Anonymity
HTTP Protocol Security
Linux Security
MS IIS Information
Exploit Articles
Programming / Tool Design
GSO Software Projects
Public Downloads
Microsoft Security Questions and Papers

myth
QUOTE
Winamp is vulnerable to a buffer overflow vulnerability when processing ID3v2 tags of mp3 files. To exploit this vulnerability, a user has to add malformed mp3 file to the Winamp playlist, and play it.
When playing mp3 file is finished, playlist is updated, and if some part of the ID3v2 tag (e.g. ARTIST or TITLE) is too long, it is possible to overflow value that is later used as the source address in the strcpy() function. The strcpy() call can overflow a value (in the DATA segment) that will later, in jump instruction, point code execution to some attacker-supplied buffer, where malicious code can be executed.


Looking into it more atm - hopefully will be able to decode the provided PoC to give more detailed information on the exploit and where they went wrong - untill then their website gives alot of great information, more than a typical security advisory would

Credits for this vulnerability goes to Leon Juranic ljuranic@lss.hr.

hxxp://security.lss.hr/en/index.php?page=details&ID=LSS-2005-07-14

(its not a fake link though tongue.gif)
BuzzDee
yea also wanted to look at it. but winamp didnt crash here. did it work for u?
haz
i tried the poc mp3 file on windows xp sp2. winamp doesn't crash, it behaves more like a dos.
BuzzDee
since it is a bof winamp should actually crash...
satknis
this exploit does work for me, i tested it yesterday but i can't
remember wich version i have. i think it is 5.08 or 5.09.
it first plays the song, then it crashes.
myth
Ive only tried it in XMMS in linux, CPU 100% - the current song kept playing, then when the playlist couldnt see the PoC MP3, CPU returned to normal, moved the playlist so i could see the PoC MP3 - then CPU 100% again - until the song had finished...
z0mbi3
Hey
I'm using 5.091 and the poc mp3 file crashes winamp.
AS the advisory says we seem to have control of the eax and edx

user posted image

EAX=79797979 and EDX=70707070

QUOTE
00437202  8B88 B4090000    MOV ECX,DWORD PTR DS:[EAX+9B4]
00437208  3B4C24 08        CMP ECX,DWORD PTR SS:[ESP+8]


we find an address (eax+9b4) which has the value 0x00000001 so when it compares the value in ecx with [ESP+8](which is 0x00000001) the jmp is taken. sounded simply in my head

(found that if you have 00 it is changed to 20 ) ohmy.gif

I found a 0x00000001 as ws2help's .data
QUOTE
71AA5008  01 00 00 00

now 71aa5008-9b4=71aa4654

So i placed this where 79797979 is on the picture( 5446aa71 has to be backwords)

QUOTE
004371FA  /$ 8B4424 04      MOV EAX,DWORD PTR SS:[ESP+4]            ;  EAX becomes 71AA4654
004371FE  |> 85C0          /TEST EAX,EAX
00437200  |. 74 14          |JE SHORT Winamp.00437216                ;  Jmp not taken
00437202  |. 8B88 B4090000  |MOV ECX,DWORD PTR DS:[EAX+9B4]          ;  DS:[71AA5008]=00000001
00437208  |. 3B4C24 08      |CMP ECX,DWORD PTR SS:[ESP+8]            ;  Stack SS:[0012943C]=00000001 ECX=00000001
0043720C  |. 74 0D          |JE SHORT Winamp.0043721B                ;  jump is taken smile.gif
0043720E  |. 8B80 B8090000  |MOV EAX,DWORD PTR DS:[EAX+9B8]
00437214  |.^EB E8          \JMP SHORT Winamp.004371FE
00437216  |> B8 DC124600    MOV EAX,Winamp.004612DC                  ;  ASCII "No Entry"
0043721B  \> C3            RETN



sanity check is bypassed, strcpy follows, after strcpy it comes to this code

QUOTE
0041D440  /$ A1 580E4700    MOV EAX,DWORD PTR DS:[470E58] ;470E58= 1378F978
0041D445  |. 85C0          TEST EAX,EAX                         
0041D447  |. 74 03          JE SHORT Winamp.0041D44C
0041D449  |. FF60 48        JMP DWORD PTR DS:[EAX+48]
0041D44C  \> C3            RETN


heres where i'm stuck

Looks like i need to use strcpy to overwrite 470E58 with a something. i'm using winxp sp0 but that shouldn't be a problem

need to tryout on winxp sp1 or win2000 sp0...to if it the same thing

I don't know asm much, but playing with it is great. If anyone finds a solution or can see something wrong tell me smile.gif
x1`
so is there a remote port that we can scan to try and find vun hosts..
Cheraz
QUOTE(x1` @ Jul 17 2005, 11:01 AM)
so is there a remote port that we can scan to try and find vun hosts..
*


I don't think because user must interacte.
tibbar
QUOTE(x1` @ Jul 17 2005, 10:01 AM)
so is there a remote port that we can scan to try and find vun hosts..
*



you realise this is winamp right? so the user must open a dodgy mp3 file for this to happen.

i predict p2p nets getting filled with crafted mp3 files with a webdownloader payload to a botnet binary.

horrible...
Reaper527
QUOTE(tibbar @ Jul 17 2005, 07:39 PM)
QUOTE(x1` @ Jul 17 2005, 10:01 AM)
so is there a remote port that we can scan to try and find vun hosts..
*



you realise this is winamp right? so the user must open a dodgy mp3 file for this to happen.

i predict p2p nets getting filled with crafted mp3 files with a webdownloader payload to a botnet binary.

horrible...
*




most people won't even know what happened since it plays the song before the BOF executes ohmy.gif
BuzzDee
hey nice work zombi3 (or should i say yamaraj?) ! i'll have a look as soon as it worx for me lol.
seems to be a nice bof to play with. maybe we manage to write an exploit =)
z0mbi3
z0mbi3 is fine buzzdee smile.gif

This bof looks great, never done stuff like this manipulating registers, so would be great to pull it off

on winxp sp0 \x00 is changing to \x20 so if i try to use an address like 0x00123445(e.g for .data section where the buffer is)

I'm going to install win2000 and see whether its the same thingor \x00 stays as \x00.

stuff like this keeps me busy specially in the boring summer holidays smile.gif
haz
i also installed win2k and i hope it works fine, so i could play a little bit with it smile.gif

there is nothing to do next week in school or at home so i can waste my time with this poc laugh.gif
BinaryHero
if you guys get anywhere with it holla back at us
haz
on my box is no buffer overflow sad.gif
tried it on 2 different systems with vulnerable winamp versions
z0mbi3
did you check the version?

u need to add acouple of other songs as well with the vulnerble one
nolimit
QUOTE(z0mbi3 @ Jul 18 2005, 11:13 AM)
z0mbi3 is fine buzzdee smile.gif

This bof looks great, never done stuff like this manipulating registers, so would be great to pull it off

on winxp sp0 \x00 is changing to \x20 so if i try to use an address like 0x00123445(e.g for .data section where the buffer is)

I'm going to install win2000 and see whether its the same thingor \x00 stays as \x00.

stuff like this keeps me busy specially in the boring summer holidays smile.gif
*


It's fun stuff eh? The tough ones are always the most rewarding. Let me know if you need any help or get stuck ;>
z0mbi3
i am stuck smile.gif

on the advisory,
the eax must be in the .data section of winamp to be able to strcpy the data we sent to overflow the address 0x00470E58

the .data section has a lot of 0x00000001 so we could make use of them but
winamp changes the \x00 to \x20
so i can't make eax have the address 0x00XXXXXX.

i was able to find a non \x00 one, on page1 which was some ws32 thingee and it worked as it bypassed the sanity check, but when it came to the strcpy, EAX is still the one in ws32 and won't copy my buffer to overflow the address 0x00470E58.

00438D59 |. 50 PUSH EAX ;
00438D5A |. FF75 08 PUSH DWORD PTR SS:[EBP+8] ; |dest
00438D5D |. E8 60D20100 CALL <JMP.&MSVCRT.strcpy> ; \strcpy

i installed win2000 and checked what happens, the 0x00 is still changed to 0x20.

the advisory did say it was a not so easy exploit
but they go on to say "Beside, there are few possible exploitation vectors for this vulnerability"
Is that a clue or am i reading into much smile.gif

later
slynx
try to find an address with no nulls that will do a relative jmp to you're code instead of a direct overwrite.... 0x00 is a commonly filtered character. sorry i don't have much time to go in-depth right now but i'm still supposed to be working :-p
haz
z0mbi3 i'm sitting here since hm 6 hours and have the same problem.

bypassing the sanity check is very easy with a 0x00000001 of a module
but i haven't found a way until now to overflow the address 0x00470E58
with our characters. mad.gif

perhaps it takes another day to find a solution. rolleyes.gif
z0mbi3
EAx must be set so that EAX+9b4 is 0x00000001
and EAX must be in .data section of winamp and point to the data we put in
so when strcpy is run our buffer overwrites 0x00470E58

for this to happen EAX must be set to 0x0047XXXX and we can't use nulls.
tricky one wonder what the people who relased the advisory did here
haz
QUOTE
Beside, there are few possible exploitation vectors for this vulnerability, depending on what actions are performed by user on malformed mp3 file.
For example - in version 5.03a, if the malformed mp3 file is added to the playlist with 'add-folder' option, it isn't needed to bypass the previously mentioned "sanity check".


someone tried this already?
perhaps it could open some new ways ... dry.gif
Dr.Network
hey hey, stop... blink.gif biggrin.gif

How you want make a mp3 file that goes in Winamp and modify there any Registers? sry I´m a newbie? Can you explain what you want do exactly with details? PLZ

THX
brOmstar
Winamp looks into the mp3 file to read the idv2 tag, if that tag is too long winamp copies it without a check into a buffer and the buffer is overflown. The rest is a 'normal' Buffer overflow.

Hope that helps you.
haz
as the advisory ( http://security.lss.hr/en/index.php?page=d...=LSS-2005-07-14 ) tells, winamp is vulnerable to a buffer overflow vulnerability.

read the advisory and this thread and you shold understand where the vulnerability lies and what problems exist.

QUOTE
sry I´m a newbie?


? or ! ... ?
Dr.Network
QUOTE(brOmstar @ Aug 9 2005, 07:56 PM)
Winamp looks into the mp3 file to read the idv2 tag, if that tag is too long winamp copies it without a check into a buffer and the buffer is overflown. The rest is a 'normal' Buffer overflow.

Hope that helps you.
*



It copies it into the Buffer. The Buffer Overflows and then? what can you do then what is written into the mp3 file that you can use it...?
haz
... you can controle the eip. read some paperes about buffer overflows.
buffer overflows are always controlling the eip, writting shellcode into
the buffer and executing it.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2005 Invision Power Services, Inc.