Skip to content

Commit 24171a1

Browse files
committed
Land rapid7#5045 : Convert stageless proxy to new format
2 parents e5cd88a + be575bb commit 24171a1

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

lib/rex/payloads/meterpreter/patch.rb

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def self.patch_proxy!(blob, proxyhost, proxyport, proxy_type)
6363
if proxyport == "80"
6464
proxyinfo = proxyhost
6565
end
66-
if proxy_type.to_s == 'HTTP'
66+
if proxy_type.to_s.upcase == 'HTTP'
6767
proxyinfo = 'http://' + proxyinfo
6868
else #socks
6969
proxyinfo = 'socks=' + proxyinfo
@@ -76,17 +76,21 @@ def self.patch_proxy!(blob, proxyhost, proxyport, proxy_type)
7676
# Proxy authentification
7777
def self.patch_proxy_auth!(blob, proxy_username, proxy_password, proxy_type)
7878

79-
unless (proxy_username.nil? or proxy_username.empty?) or
80-
(proxy_password.nil? or proxy_password.empty?) or
81-
proxy_type == 'SOCKS'
79+
return if proxy_type.nil? || proxy_type.upcase == 'SOCKS'
8280

83-
patch_string!(blob, "METERPRETER_USERNAME_PROXY#{"\x00" * 10}",
81+
if proxy_username && !proxy_username.empty?
82+
unless patch_string!(blob, "METERPRETER_USERNAME_PROXY#{"\x00" * 10}",
8483
proxy_username + "\x00")
84+
raise ArgumentError, "Unable to patch Proxy Username"
85+
end
86+
end
8587

86-
patch_string!(blob, "METERPRETER_PASSWORD_PROXY#{"\x00" * 10}",
88+
if proxy_password && !proxy_password.empty?
89+
unless patch_string!(blob, "METERPRETER_PASSWORD_PROXY#{"\x00" * 10}",
8790
proxy_password + "\x00")
91+
raise ArgumentError, "Unable to patch Proxy Password"
92+
end
8893
end
89-
9094
end
9195

9296
# Patch the ssl cert hash

modules/payloads/singles/windows/meterpreter_reverse_https.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,11 @@ def generate
6666
:expiration => datastore['SessionExpirationTimeout'].to_i,
6767
:comm_timeout => datastore['SessionCommunicationTimeout'].to_i,
6868
:ua => datastore['MeterpreterUserAgent'],
69-
:proxyhost => datastore['PROXYHOST'],
70-
:proxyport => datastore['PROXYPORT'],
71-
:proxy_type => datastore['PROXY_TYPE'],
72-
:proxy_username => datastore['PROXY_USERNAME'],
73-
:proxy_password => datastore['PROXY_PASSWORD'])
69+
:proxy_host => datastore['PayloadProxyHost'],
70+
:proxy_port => datastore['PayloadProxyPort'],
71+
:proxy_type => datastore['PayloadProxyType'],
72+
:proxy_user => datastore['PayloadProxyUser'],
73+
:proxy_pass => datastore['PayloadProxyPass'])
7474
end
7575

7676
end

0 commit comments

Comments
 (0)