Files
metasploit-gs/lib/msf/core/exploit/java_deserialization.rb
T

45 lines
1.4 KiB
Ruby

# -*- coding: binary -*-
module Msf
module Exploit::JavaDeserialization
include Msf::Exploit::Powershell
def generate_java_deserialization_for_command(name, shell, command)
# here we force usage of a modified type to avoid compatibility issues with command characters thar are present in
# some ysoserial payloads
unless %w{ bash cmd powershell }.include? shell
raise RuntimeError, 'Invalid shell for Java Deserialization payload generation'
end
Msf::Util::JavaDeserialization.ysoserial_payload(name, command, modified_type: shell)
end
def generate_java_deserialization_for_payload(name, payload)
command = nil
if payload.platform.platforms == [Msf::Module::Platform::Windows]
if [ Rex::Arch::ARCH_X86, Rex::Arch::ARCH_X64 ].include? payload.arch.first
command = cmd_psh_payload(payload.encoded, payload.arch.first, { remove_comspec: true, encode_final_payload: true })
elsif payload.arch.first == Rex::Arch::ARCH_CMD
command = payload.encoded
end
modified_type = 'cmd'
else
if payload.arch.first == Rex::Arch::ARCH_CMD
command = payload.encoded
end
modified_type = 'bash'
end
if command.nil?
raise RuntimeError, 'Could not generate the payload for the platform/architecture combination'
end
Msf::Util::JavaDeserialization.ysoserial_payload(name, command, modified_type: modified_type)
end
end
end