Skip to content

Commit 1a313ad

Browse files
committed
Fix up the proxy patching
Patching of the proxy details was failing, so this commit fixes that. Also, added code that makes the proxy type check case-insensitive.
1 parent df15892 commit 1a313ad

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
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

0 commit comments

Comments
 (0)