From eaead1d2f3570096d906fa7a6de6fda8dc34c81a Mon Sep 17 00:00:00 2001 From: dledda-r7 Date: Wed, 17 Dec 2025 12:09:35 -0500 Subject: [PATCH] fix: remove zarch inmemory_loader from stageless meterpreter --- .../singles/linux/zarch/meterpreter_reverse_http.rb | 7 +------ .../singles/linux/zarch/meterpreter_reverse_https.rb | 7 +------ .../singles/linux/zarch/meterpreter_reverse_tcp.rb | 7 +------ tools/modules/meterpreter_reverse.erb | 2 +- 4 files changed, 4 insertions(+), 19 deletions(-) diff --git a/modules/payloads/singles/linux/zarch/meterpreter_reverse_http.rb b/modules/payloads/singles/linux/zarch/meterpreter_reverse_http.rb index ed35a280ba..f0055442e3 100644 --- a/modules/payloads/singles/linux/zarch/meterpreter_reverse_http.rb +++ b/modules/payloads/singles/linux/zarch/meterpreter_reverse_http.rb @@ -12,7 +12,6 @@ module MetasploitModule include Msf::Payload::Single include Msf::Sessions::MeterpreterOptions::Linux include Msf::Sessions::MettleConfig - include Msf::Payload::Linux::Zarch::ElfLoader include Msf::Payload::Linux::Zarch::Prepends def initialize(info = {}) @@ -41,10 +40,6 @@ module MetasploitModule stageless: true }.merge(mettle_logging_config) payload = MetasploitPayloads::Mettle.new('s390x-linux-musl', generate_config(opts)).to_binary :exec - ds = opts[:datastore] || datastore - if Rex::Version.new(ds['PayloadLinuxMinKernel']) < Rex::Version.new('3.17') - return payload - end - in_memory_load(payload) + payload + payload end end diff --git a/modules/payloads/singles/linux/zarch/meterpreter_reverse_https.rb b/modules/payloads/singles/linux/zarch/meterpreter_reverse_https.rb index 2703da1350..678c2c642a 100644 --- a/modules/payloads/singles/linux/zarch/meterpreter_reverse_https.rb +++ b/modules/payloads/singles/linux/zarch/meterpreter_reverse_https.rb @@ -12,7 +12,6 @@ module MetasploitModule include Msf::Payload::Single include Msf::Sessions::MeterpreterOptions::Linux include Msf::Sessions::MettleConfig - include Msf::Payload::Linux::Zarch::ElfLoader include Msf::Payload::Linux::Zarch::Prepends def initialize(info = {}) @@ -41,10 +40,6 @@ module MetasploitModule stageless: true }.merge(mettle_logging_config) payload = MetasploitPayloads::Mettle.new('s390x-linux-musl', generate_config(opts)).to_binary :exec - ds = opts[:datastore] || datastore - if Rex::Version.new(ds['PayloadLinuxMinKernel']) < Rex::Version.new('3.17') - return payload - end - in_memory_load(payload) + payload + payload end end diff --git a/modules/payloads/singles/linux/zarch/meterpreter_reverse_tcp.rb b/modules/payloads/singles/linux/zarch/meterpreter_reverse_tcp.rb index 6d5d57df13..6cdf898c74 100644 --- a/modules/payloads/singles/linux/zarch/meterpreter_reverse_tcp.rb +++ b/modules/payloads/singles/linux/zarch/meterpreter_reverse_tcp.rb @@ -12,7 +12,6 @@ module MetasploitModule include Msf::Payload::Single include Msf::Sessions::MeterpreterOptions::Linux include Msf::Sessions::MettleConfig - include Msf::Payload::Linux::Zarch::ElfLoader include Msf::Payload::Linux::Zarch::Prepends def initialize(info = {}) @@ -41,10 +40,6 @@ module MetasploitModule stageless: true }.merge(mettle_logging_config) payload = MetasploitPayloads::Mettle.new('s390x-linux-musl', generate_config(opts)).to_binary :exec - ds = opts[:datastore] || datastore - if Rex::Version.new(ds['PayloadLinuxMinKernel']) < Rex::Version.new('3.17') - return payload - end - in_memory_load(payload) + payload + payload end end diff --git a/tools/modules/meterpreter_reverse.erb b/tools/modules/meterpreter_reverse.erb index 1a277a714e..b8a17748ec 100644 --- a/tools/modules/meterpreter_reverse.erb +++ b/tools/modules/meterpreter_reverse.erb @@ -38,7 +38,7 @@ module MetasploitModule stageless: true }.merge(mettle_logging_config) payload = MetasploitPayloads::Mettle.new('<%= payload %>', generate_config(opts)).to_binary :exec - <% if platform.downcase == 'linux' && !['armbe', 'ppc64le', 'ppc', 'ppce500v2'].include?(arch.downcase) %>ds = opts[:datastore] || datastore + <% if platform.downcase == 'linux' && !['armbe', 'ppc64le', 'ppc', 'ppce500v2', 'zarch'].include?(arch.downcase) %>ds = opts[:datastore] || datastore if Rex::Version.new(ds['PayloadLinuxMinKernel']) < Rex::Version.new('3.17') return payload end