Skip to content

Commit 8645a51

Browse files
committed
add mettle support for custom headers
1 parent a7932ff commit 8645a51

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+62
-50
lines changed

Gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ PATH
1919
metasploit-model
2020
metasploit-payloads (= 1.3.15)
2121
metasploit_data_models
22-
metasploit_payloads-mettle (= 0.2.5)
22+
metasploit_payloads-mettle (= 0.2.8)
2323
msgpack
2424
nessus_rest
2525
net-ssh
@@ -189,7 +189,7 @@ GEM
189189
postgres_ext
190190
railties (~> 4.2.6)
191191
recog (~> 2.0)
192-
metasploit_payloads-mettle (0.2.5)
192+
metasploit_payloads-mettle (0.2.8)
193193
method_source (0.9.0)
194194
mini_portile2 (2.3.0)
195195
minitest (5.10.3)

lib/msf/base/sessions/mettle_config.rb

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ def generate_uri(opts={})
2727
generate_uri_uuid_mode(:init_connect, uri_req_len, uuid: opts[:uuid])
2828
end
2929

30+
def generate_uri_option(opts, opt)
31+
opts[opt] ? "--#{opt} '#{opts[opt].gsub(/'/, "\\'")}' " : ''
32+
end
33+
3034
def generate_http_uri(opts)
3135
if Rex::Socket.is_ipv6?(opts[:lhost])
3236
target_uri = "#{opts[:scheme]}://[#{opts[:lhost]}]"
@@ -38,7 +42,15 @@ def generate_http_uri(opts)
3842
target_uri << opts[:lport].to_s
3943
target_uri << luri
4044
target_uri << generate_uri(opts)
41-
target_uri
45+
target_uri << '|'
46+
target_uri << generate_uri_option(opts, :ua)
47+
target_uri << generate_uri_option(opts, :host)
48+
target_uri << generate_uri_option(opts, :referer)
49+
if opts[:cookie]
50+
opts[:header] = "Cookie: #{opts[:cookie]}"
51+
target_uri << generate_uri_option(opts, :header)
52+
end
53+
target_uri.strip
4254
end
4355

4456
def generate_tcp_uri(opts)
@@ -57,14 +69,11 @@ def generate_config(opts={})
5769

5870
case opts[:scheme]
5971
when 'http'
60-
transport = transport_config_reverse_http(opts)
61-
opts[:uri] = generate_http_uri(transport)
72+
opts[:uri] = generate_http_uri(transport_config_reverse_http(opts))
6273
when 'https'
63-
transport = transport_config_reverse_https(opts)
64-
opts[:uri] = generate_http_uri(transport)
74+
opts[:uri] = generate_http_uri(transport_config_reverse_https(opts))
6575
when 'tcp'
66-
transport = transport_config_reverse_tcp(opts)
67-
opts[:uri] = generate_tcp_uri(transport)
76+
opts[:uri] = generate_tcp_uri(transport_config_reverse_tcp(opts))
6877
else
6978
raise ArgumentError, "Unknown scheme: #{opts[:scheme]}"
7079
end
@@ -74,7 +83,7 @@ def generate_config(opts={})
7483
unless opts[:stageless] == true
7584
guid = [SecureRandom.uuid.gsub(/-/, '')].pack('H*')
7685
end
77-
opts[:session_guid] = Base64.encode64(guid)
86+
opts[:session_guid] = Base64.encode64(guid).strip
7887

7988
opts.slice(:uuid, :session_guid, :uri, :debug, :log_file)
8089
end

lib/msf/core/payload/transport_config.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ def transport_config_reverse_http(opts={})
6666
proxy_type: ds['HttpProxyType'],
6767
proxy_user: ds['HttpProxyUser'],
6868
proxy_pass: ds['HttpProxyPass'],
69+
host: ds['HttpHostHeader'],
70+
cookie: ds['HttpCookie'],
71+
referer: ds['HttpReferer'],
6972
custom_headers: get_custom_headers(ds)
7073
}.merge(timeout_config(opts))
7174
end

metasploit-framework.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ Gem::Specification.new do |spec|
7272
# Needed for Meterpreter
7373
spec.add_runtime_dependency 'metasploit-payloads', '1.3.15'
7474
# Needed for the next-generation POSIX Meterpreter
75-
spec.add_runtime_dependency 'metasploit_payloads-mettle', '0.2.5'
75+
spec.add_runtime_dependency 'metasploit_payloads-mettle', '0.2.8'
7676
# Needed by msfgui and other rpc components
7777
spec.add_runtime_dependency 'msgpack'
7878
# get list of network interfaces, like eth* from OS.

modules/payloads/singles/linux/aarch64/meterpreter_reverse_http.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
module MetasploitModule
1212

13-
CachedSize = 692384
13+
CachedSize = 693880
1414

1515
include Msf::Payload::Single
1616
include Msf::Sessions::MeterpreterOptions

modules/payloads/singles/linux/aarch64/meterpreter_reverse_https.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
module MetasploitModule
1212

13-
CachedSize = 692384
13+
CachedSize = 693880
1414

1515
include Msf::Payload::Single
1616
include Msf::Sessions::MeterpreterOptions

modules/payloads/singles/linux/aarch64/meterpreter_reverse_tcp.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
module MetasploitModule
1212

13-
CachedSize = 692384
13+
CachedSize = 693880
1414

1515
include Msf::Payload::Single
1616
include Msf::Sessions::MeterpreterOptions

modules/payloads/singles/linux/armbe/meterpreter_reverse_http.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
module MetasploitModule
1212

13-
CachedSize = 678568
13+
CachedSize = 682608
1414

1515
include Msf::Payload::Single
1616
include Msf::Sessions::MeterpreterOptions

modules/payloads/singles/linux/armbe/meterpreter_reverse_https.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
module MetasploitModule
1212

13-
CachedSize = 678568
13+
CachedSize = 682608
1414

1515
include Msf::Payload::Single
1616
include Msf::Sessions::MeterpreterOptions

modules/payloads/singles/linux/armbe/meterpreter_reverse_tcp.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
module MetasploitModule
1212

13-
CachedSize = 678568
13+
CachedSize = 682608
1414

1515
include Msf::Payload::Single
1616
include Msf::Sessions::MeterpreterOptions

0 commit comments

Comments
 (0)