diff --git a/lib/msf/core/handler/reverse_http.rb b/lib/msf/core/handler/reverse_http.rb index 5b0db244b5..025e127608 100644 --- a/lib/msf/core/handler/reverse_http.rb +++ b/lib/msf/core/handler/reverse_http.rb @@ -52,16 +52,38 @@ module ReverseHttp register_advanced_options( [ - - OptString.new('MeterpreterUserAgent', [false, 'The user-agent that the payload should use for communication', Rex::UserAgent.shortest]), - OptString.new('MeterpreterServerName', [false, 'The server header that the handler will send in response to requests', 'Apache']), - OptAddress.new('ReverseListenerBindAddress', [false, 'The specific IP address to bind to on the local system']), - OptBool.new('OverrideRequestHost', [false, 'Forces a specific host and port instead of using what the client requests, defaults to LHOST:LPORT', false]), - OptString.new('OverrideLHOST', [false, 'When OverrideRequestHost is set, use this value as the host name for secondary requests']), - OptPort.new('OverrideLPORT', [false, 'When OverrideRequestHost is set, use this value as the port number for secondary requests']), - OptString.new('OverrideScheme', [false, 'When OverrideRequestHost is set, use this value as the scheme for secondary requests, e.g http or https']), - OptString.new('HttpUnknownRequestResponse', [false, 'The returned HTML response body when the handler receives a request that is not from a payload', '

It works!

']), - OptBool.new('IgnoreUnknownPayloads', [false, 'Whether to drop connections from payloads using unknown UUIDs', false]) + OptAddress.new('ReverseListenerBindAddress', + 'The specific IP address to bind to on the local system' + ), + OptBool.new('OverrideRequestHost', + 'Forces a specific host and port instead of using what the client requests, defaults to LHOST:LPORT', + ), + OptString.new('OverrideLHOST', + 'When OverrideRequestHost is set, use this value as the host name for secondary requests' + ), + OptPort.new('OverrideLPORT', + 'When OverrideRequestHost is set, use this value as the port number for secondary requests' + ), + OptString.new('OverrideScheme', + 'When OverrideRequestHost is set, use this value as the scheme for secondary requests, e.g http or https' + ), + OptString.new('HttpUserAgent', + 'The user-agent that the payload should use for communication', + default: Rex::UserAgent.shortest, + aliases: ['MeterpreterUserAgent'] + ), + OptString.new('HttpServerName', + 'The server header that the handler will send in response to requests', + default: 'Apache', + aliases: ['MeterpreterServerName'] + ), + OptString.new('HttpUnknownRequestResponse', + 'The returned HTML response body when the handler receives a request that is not from a payload', + default: '

It works!

' + ), + OptBool.new('IgnoreUnknownPayloads', + 'Whether to drop connections from payloads using unknown UUIDs' + ) ], Msf::Handler::ReverseHttp) end @@ -204,7 +226,7 @@ module ReverseHttp raise ex if (ex) - self.service.server_name = datastore['MeterpreterServerName'] + self.service.server_name = datastore['HttpServerName'] # Add the new resource service.add_resource((luri + "/").gsub("//", "/"), @@ -245,14 +267,14 @@ protected info = {} return @proxy_settings if @proxy_settings - if datastore['PayloadProxyHost'].to_s == '' + if datastore['HttpProxyHost'].to_s == '' @proxy_settings = info return @proxy_settings end - info[:host] = datastore['PayloadProxyHost'].to_s - info[:port] = (datastore['PayloadProxyPort'] || 8080).to_i - info[:type] = datastore['PayloadProxyType'].to_s + info[:host] = datastore['HttpProxyHost'].to_s + info[:port] = (datastore['HttpProxyPort'] || 8080).to_i + info[:type] = datastore['HttpProxyType'].to_s uri_host = info[:host] @@ -266,11 +288,11 @@ protected info[:info] = "socks=#{info[:info]}" else info[:info] = "http://#{info[:info]}" - if datastore['PayloadProxyUser'].to_s != '' - info[:username] = datastore['PayloadProxyUser'].to_s + if datastore['HttpProxyUser'].to_s != '' + info[:username] = datastore['HttpProxyUser'].to_s end - if datastore['PayloadProxyPass'].to_s != '' - info[:password] = datastore['PayloadProxyPass'].to_s + if datastore['HttpProxyPass'].to_s != '' + info[:password] = datastore['HttpProxyPass'].to_s end end diff --git a/lib/msf/core/handler/reverse_https_proxy.rb b/lib/msf/core/handler/reverse_https_proxy.rb index 997316f688..1642460ad5 100644 --- a/lib/msf/core/handler/reverse_https_proxy.rb +++ b/lib/msf/core/handler/reverse_https_proxy.rb @@ -38,13 +38,13 @@ module ReverseHttpsProxy register_options( [ - OptAddressLocal.new('LHOST', [ true, "The local listener hostname" ,"127.0.0.1"]), - OptPort.new('LPORT', [ true, "The local listener port", 8443 ]), - OptString.new('PayloadProxyHost', [true, "The proxy server's IP address", "127.0.0.1"]), - OptPort.new('PayloadProxyPort', [true, "The proxy port to connect to", 8080 ]), - OptEnum.new('PayloadProxyType', [true, 'The proxy type, HTTP or SOCKS', 'HTTP', ['HTTP', 'SOCKS']]), - OptString.new('PayloadProxyUser', [ false, "An optional username for HTTP proxy authentication"]), - OptString.new('PayloadProxyPass', [ false, "An optional password for HTTP proxy authentication"]) + OptAddressLocal.new('LHOST', "The local listener hostname", default: "127.0.0.1"), + OptPort.new('LPORT', "The local listener port", default: 8443), + OptString.new('HttpProxyHost', "The proxy server's IP address", required: true, default: "127.0.0.1", aliases: ['PayloadProxyHost']), + OptPort.new('HttpProxyPort', "The proxy port to connect to", required: true, default: 8080, aliases: ['PayloadProxyPort']), + OptEnum.new('HttpProxyType', 'The proxy type, HTTP or SOCKS', enums: ['HTTP', 'SOCKS'], aliases: ['PayloadProxyType']), + OptString.new('HttpProxyUser', "An optional username for HTTP proxy authentication", aliases: ['PayloadProxyUser']), + OptString.new('HttpProxyPass', "An optional password for HTTP proxy authentication", aliases: ['PayloadProxyPass']) ], Msf::Handler::ReverseHttpsProxy) register_advanced_options( diff --git a/lib/msf/core/payload/java/reverse_http.rb b/lib/msf/core/payload/java/reverse_http.rb index 3e6cb675c8..b0c1fc0d66 100644 --- a/lib/msf/core/payload/java/reverse_http.rb +++ b/lib/msf/core/payload/java/reverse_http.rb @@ -67,7 +67,7 @@ module Payload::Java::ReverseHttp c = '' c << "Spawn=#{ds["Spawn"] || 2}\n" - c << "HeaderUser-Agent=#{ds["MeterpreterUserAgent"]}\n" if ds["MeterpreterUserAgent"] + c << "HeaderUser-Agent=#{ds["HttpUserAgent"]}\n" if ds["HttpUserAgent"] c << "HeaderHost=#{ds["HttpHeaderHost"]}\n" if ds["HttpHeaderHost"] c << "HeaderReferer=#{ds["HttpHeaderReferer"]}\n" if ds["HttpHeaderReferer"] c << "HeaderCookie=#{ds["HttpHeaderCookie"]}\n" if ds["HttpHeaderCookie"] diff --git a/lib/msf/core/payload/multi/reverse_http.rb b/lib/msf/core/payload/multi/reverse_http.rb index 008f99f5a0..9d9f45de1c 100644 --- a/lib/msf/core/payload/multi/reverse_http.rb +++ b/lib/msf/core/payload/multi/reverse_http.rb @@ -23,14 +23,13 @@ module Payload::Multi::ReverseHttp def initialize(*args) super register_advanced_options([ - OptInt.new('StagerURILength', [false, 'The URI length for the stager (at least 5 bytes)']), - OptInt.new('StagerRetryCount', [false, 'The number of times the stager should retry if the first connect fails', 10], - aliases: ['ReverseConnectRetries']), - OptString.new('PayloadProxyHost', [false, 'An optional proxy server IP address or hostname']), - OptPort.new('PayloadProxyPort', [false, 'An optional proxy server port']), - OptString.new('PayloadProxyUser', [false, 'An optional proxy server username']), - OptString.new('PayloadProxyPass', [false, 'An optional proxy server password']), - OptEnum.new('PayloadProxyType', [false, 'The type of HTTP proxy (HTTP or SOCKS)', 'HTTP', ['HTTP', 'SOCKS']]) + OptInt.new('StagerURILength', 'The URI length for the stager (at least 5 bytes)'), + OptInt.new('StagerRetryCount', 'The number of times the stager should retry if the first connect fails', default: 10, aliases: ['ReverseConnectRetries']), + OptString.new('HttpProxyHost', 'An optional proxy server IP address or hostname', aliases: ['PayloadProxyHost']), + OptPort.new('HttpProxyPort', 'An optional proxy server port', aliases: ['PayloadProxyPort']), + OptString.new('HttpProxyUser', 'An optional proxy server username', aliases: ['PayloadProxyUser']), + OptString.new('HttpProxyPass', 'An optional proxy server password', aliases: ['PayloadProxyPass']), + OptEnum.new('HttpProxyType', 'The type of HTTP proxy (HTTP or SOCKS)', enums: ['HTTP', 'SOCKS'], aliases: ['PayloadProxyType']) ]) end @@ -67,4 +66,3 @@ module Payload::Multi::ReverseHttp end end - diff --git a/lib/msf/core/payload/python/meterpreter_loader.rb b/lib/msf/core/payload/python/meterpreter_loader.rb index 370e28dc51..0b8c97210b 100644 --- a/lib/msf/core/payload/python/meterpreter_loader.rb +++ b/lib/msf/core/payload/python/meterpreter_loader.rb @@ -88,9 +88,9 @@ module Payload::Python::MeterpreterLoader end met.sub!("SESSION_GUID = \'\'", "SESSION_GUID = \'#{session_guid}\'") - http_user_agent = opts[:http_user_agent] || ds['MeterpreterUserAgent'] - http_proxy_host = opts[:http_proxy_host] || ds['PayloadProxyHost'] || ds['PROXYHOST'] - http_proxy_port = opts[:http_proxy_port] || ds['PayloadProxyPort'] || ds['PROXYPORT'] + http_user_agent = opts[:http_user_agent] || ds['HttpUserAgent'] + http_proxy_host = opts[:http_proxy_host] || ds['HttpProxyHost'] || ds['PROXYHOST'] + http_proxy_port = opts[:http_proxy_port] || ds['HttpProxyPort'] || ds['PROXYPORT'] http_header_host = opts[:header_host] || ds['HttpHeaderHost'] http_header_cookie = opts[:header_cookie] || ds['HttpHeaderCookie'] http_header_referer = opts[:header_referer] || ds['HttpHeaderReferer'] diff --git a/lib/msf/core/payload/python/reverse_http.rb b/lib/msf/core/payload/python/reverse_http.rb index 8f133d034d..9dac5a71cd 100644 --- a/lib/msf/core/payload/python/reverse_http.rb +++ b/lib/msf/core/payload/python/reverse_http.rb @@ -13,8 +13,8 @@ module Payload::Python::ReverseHttp super(info) register_options( [ - OptString.new('PayloadProxyHost', [ false, "The proxy server's IP address" ]), - OptPort.new('PayloadProxyPort', [ true, "The proxy port to connect to", 8080 ]), + OptString.new('HttpProxyHost', [ false, "The proxy server's IP address" ], aliases: ['PayloadProxyHost']), + OptPort.new('HttpProxyPort', [ true, "The proxy port to connect to", 8080 ], aliases: ['PayloadProxyHost']), OptString.new('HttpHeaderHost', [false, 'An optional value to use for the Host HTTP header']), OptString.new('HttpHeaderCookie', [false, 'An optional value to use for the Cookie HTTP header']), OptString.new('HttpHeaderReferer', [false, 'An optional value to use for the Referer HTTP header']) @@ -29,9 +29,9 @@ module Payload::Python::ReverseHttp opts.merge!({ host: ds['LHOST'] || '127.127.127.127', port: ds['LPORT'], - proxy_host: ds['PayloadProxyHost'], - proxy_port: ds['PayloadProxyPort'], - user_agent: ds['MeterpreterUserAgent'], + proxy_host: ds['HttpProxyHost'], + proxy_port: ds['HttpProxyPort'], + user_agent: ds['HttpUserAgent'], header_host: ds['HttpHeaderHost'], header_cookie: ds['HttpHeaderCookie'], header_referer: ds['HttpHeaderReferer'] diff --git a/lib/msf/core/payload/transport_config.rb b/lib/msf/core/payload/transport_config.rb index 3c9972c0cf..284347e1cb 100644 --- a/lib/msf/core/payload/transport_config.rb +++ b/lib/msf/core/payload/transport_config.rb @@ -60,12 +60,12 @@ module Msf::Payload::TransportConfig lhost: opts[:lhost] || ds['LHOST'], lport: (opts[:lport] || ds['LPORT']).to_i, uri: uri, - ua: ds['MeterpreterUserAgent'], - proxy_host: ds['PayloadProxyHost'], - proxy_port: ds['PayloadProxyPort'], - proxy_type: ds['PayloadProxyType'], - proxy_user: ds['PayloadProxyUser'], - proxy_pass: ds['PayloadProxyPass'], + ua: ds['HttpUserAgent'], + proxy_host: ds['HttpProxyHost'], + proxy_port: ds['HttpProxyPort'], + proxy_type: ds['HttpProxyType'], + proxy_user: ds['HttpProxyUser'], + proxy_pass: ds['HttpProxyPass'], custom_headers: get_custom_headers(ds) }.merge(timeout_config(opts)) end diff --git a/lib/msf/core/payload/windows/reverse_http.rb b/lib/msf/core/payload/windows/reverse_http.rb index 5ee674b3ac..3d6729b199 100644 --- a/lib/msf/core/payload/windows/reverse_http.rb +++ b/lib/msf/core/payload/windows/reverse_http.rb @@ -32,14 +32,14 @@ module Payload::Windows::ReverseHttp OptInt.new('StagerRetryCount', [false, 'The number of times the stager should retry if the first connect fails', 10], aliases: ['ReverseConnectRetries']), OptInt.new('StagerRetryWait', [false, 'Number of seconds to wait for the stager between reconnect attempts', 5]), - OptString.new('PayloadProxyHost', [false, 'An optional proxy server IP address or hostname']), - OptPort.new('PayloadProxyPort', [false, 'An optional proxy server port']), - OptString.new('PayloadProxyUser', [false, 'An optional proxy server username']), - OptString.new('PayloadProxyPass', [false, 'An optional proxy server password']), - OptEnum.new('PayloadProxyType', [false, 'The type of HTTP proxy (HTTP or SOCKS)', 'HTTP', ['HTTP', 'SOCKS']]), - OptString.new('HttpHeaderHost', [false, 'An optional value to use for the Host HTTP header']), - OptString.new('HttpHeaderCookie', [false, 'An optional value to use for the Cookie HTTP header']), - OptString.new('HttpHeaderReferer', [false, 'An optional value to use for the Referer HTTP header']) + OptString.new('HttpProxyHost', 'An optional proxy server IP address or hostname', aliases: ['PayloadProxyHost']), + OptPort.new('HttpProxyPort', 'An optional proxy server port', aliases: ['PayloadProxyPort']), + OptString.new('HttpProxyUser', 'An optional proxy server username', aliases: ['PayloadProxyUser']), + OptString.new('HttpProxyPass', 'An optional proxy server password', aliases: ['PayloadProxyPass']), + OptEnum.new('HttpProxyType', 'The type of HTTP proxy (HTTP or SOCKS)', enums: ['HTTP', 'SOCKS'], aliases: ['PayloadProxyType']), + OptString.new('HttpHeaderHost', 'An optional value to use for the Host HTTP header'), + OptString.new('HttpHeaderCookie', 'An optional value to use for the Cookie HTTP header'), + OptString.new('HttpHeaderReferer', 'An optional value to use for the Referer HTTP header') ], self.class) end @@ -60,12 +60,12 @@ module Payload::Windows::ReverseHttp if self.available_space.nil? || required_space <= self.available_space conf[:url] = luri + generate_uri(opts) conf[:exitfunk] = ds['EXITFUNC'] - conf[:ua] = ds['MeterpreterUserAgent'] - conf[:proxy_host] = ds['PayloadProxyHost'] - conf[:proxy_port] = ds['PayloadProxyPort'] - conf[:proxy_user] = ds['PayloadProxyUser'] - conf[:proxy_pass] = ds['PayloadProxyPass'] - conf[:proxy_type] = ds['PayloadProxyType'] + conf[:ua] = ds['HttpUserAgent'] + conf[:proxy_host] = ds['HttpProxyHost'] + conf[:proxy_port] = ds['HttpProxyPort'] + conf[:proxy_user] = ds['HttpProxyUser'] + conf[:proxy_pass] = ds['HttpProxyPass'] + conf[:proxy_type] = ds['HttpProxyType'] conf[:custom_headers] = get_custom_headers(ds) else # Otherwise default to small URIs diff --git a/lib/msf/core/payload/windows/reverse_winhttp.rb b/lib/msf/core/payload/windows/reverse_winhttp.rb index f30dbefa15..380a3141da 100644 --- a/lib/msf/core/payload/windows/reverse_winhttp.rb +++ b/lib/msf/core/payload/windows/reverse_winhttp.rb @@ -21,7 +21,7 @@ module Payload::Windows::ReverseWinHttp def initialize(*args) super register_advanced_options([ - OptBool.new('PayloadProxyIE', [false, 'Enable use of IE proxy settings', true]) + OptBool.new('HttpProxyIE', 'Enable use of IE proxy settings', default: true, aliases: ['PayloadProxyIE']) ], self.class) end @@ -41,13 +41,13 @@ module Payload::Windows::ReverseWinHttp conf[:uri] = luri + generate_uri conf[:exitfunk] = ds['EXITFUNC'] conf[:verify_cert_hash] = opts[:verify_cert_hash] - conf[:proxy_host] = ds['PayloadProxyHost'] - conf[:proxy_port] = ds['PayloadProxyPort'] - conf[:proxy_user] = ds['PayloadProxyUser'] - conf[:proxy_pass] = ds['PayloadProxyPass'] - conf[:proxy_type] = ds['PayloadProxyType'] + conf[:proxy_host] = ds['HttpProxyHost'] + conf[:proxy_port] = ds['HttpProxyPort'] + conf[:proxy_user] = ds['HttpProxyUser'] + conf[:proxy_pass] = ds['HttpProxyPass'] + conf[:proxy_type] = ds['HttpProxyType'] conf[:retry_count] = ds['StagerRetryCount'] - conf[:proxy_ie] = ds['PayloadProxyIE'] + conf[:proxy_ie] = ds['HttpProxyIE'] conf[:custom_headers] = get_custom_headers(ds) else # Otherwise default to small URIs diff --git a/lib/msf/core/payload/windows/x64/reverse_http.rb b/lib/msf/core/payload/windows/x64/reverse_http.rb index 4821709236..4182e80e31 100644 --- a/lib/msf/core/payload/windows/x64/reverse_http.rb +++ b/lib/msf/core/payload/windows/x64/reverse_http.rb @@ -32,14 +32,14 @@ module Payload::Windows::ReverseHttp_x64 OptInt.new('StagerRetryCount', [false, 'The number of times the stager should retry if the first connect fails', 10], aliases: ['ReverseConnectRetries']), OptInt.new('StagerRetryWait', [false, 'Number of seconds to wait for the stager between reconnect attempts', 5]), - OptString.new('PayloadProxyHost', [false, 'An optional proxy server IP address or hostname']), - OptPort.new('PayloadProxyPort', [false, 'An optional proxy server port']), - OptString.new('PayloadProxyUser', [false, 'An optional proxy server username']), - OptString.new('PayloadProxyPass', [false, 'An optional proxy server password']), - OptEnum.new('PayloadProxyType', [false, 'The type of HTTP proxy (HTTP or SOCKS)', 'HTTP', ['HTTP', 'SOCKS']]), - OptString.new('HttpHeaderHost', [false, 'An optional value to use for the Host HTTP header']), - OptString.new('HttpHeaderCookie', [false, 'An optional value to use for the Cookie HTTP header']), - OptString.new('HttpHeaderReferer', [false, 'An optional value to use for the Referer HTTP header']) + OptString.new('HttpProxyHost', 'An optional proxy server IP address or hostname', aliases: ['PayloadProxyHost']), + OptPort.new('HttpProxyPort', 'An optional proxy server port', aliases: ['PayloadProxyPort']), + OptString.new('HttpProxyUser', 'An optional proxy server username', aliases: ['PayloadProxyUser']), + OptString.new('HttpProxyPass', 'An optional proxy server password', aliases: ['PayloadProxyPass']), + OptEnum.new('HttpProxyType', 'The type of HTTP proxy (HTTP or SOCKS)', enums: ['HTTP', 'SOCKS'], aliases: ['PayloadProxyType']), + OptString.new('HttpHeaderHost', 'An optional value to use for the Host HTTP header'), + OptString.new('HttpHeaderCookie', 'An optional value to use for the Cookie HTTP header'), + OptString.new('HttpHeaderReferer', 'An optional value to use for the Referer HTTP header') ], self.class) end @@ -65,12 +65,12 @@ module Payload::Windows::ReverseHttp_x64 if self.available_space.nil? || required_space <= self.available_space conf[:url] = luri + generate_uri(opts) conf[:exitfunk] = ds['EXITFUNC'] - conf[:ua] = ds['MeterpreterUserAgent'] - conf[:proxy_host] = ds['PayloadProxyHost'] - conf[:proxy_port] = ds['PayloadProxyPort'] - conf[:proxy_user] = ds['PayloadProxyUser'] - conf[:proxy_pass] = ds['PayloadProxyPass'] - conf[:proxy_type] = ds['PayloadProxyType'] + conf[:ua] = ds['HttpUserAgent'] + conf[:proxy_host] = ds['HttpProxyHost'] + conf[:proxy_port] = ds['HttpProxyPort'] + conf[:proxy_user] = ds['HttpProxyUser'] + conf[:proxy_pass] = ds['HttpProxyPass'] + conf[:proxy_type] = ds['HttpProxyType'] conf[:custom_headers] = get_custom_headers(ds) else # Otherwise default to small URIs diff --git a/lib/msf/core/payload/windows/x64/reverse_winhttp.rb b/lib/msf/core/payload/windows/x64/reverse_winhttp.rb index 358115e464..419946be1e 100644 --- a/lib/msf/core/payload/windows/x64/reverse_winhttp.rb +++ b/lib/msf/core/payload/windows/x64/reverse_winhttp.rb @@ -22,7 +22,7 @@ module Payload::Windows::ReverseWinHttp_x64 def initialize(*args) super register_advanced_options([ - OptBool.new('PayloadProxyIE', [false, 'Enable use of IE proxy settings', true]) + OptBool.new('HttpProxyIE', 'Enable use of IE proxy settings', default: true, aliases: ['PayloadProxyIE']) ], self.class) end @@ -42,13 +42,13 @@ module Payload::Windows::ReverseWinHttp_x64 conf[:uri] = luri + generate_uri conf[:exitfunk] = ds['EXITFUNC'] conf[:verify_cert_hash] = opts[:verify_cert_hash] - conf[:proxy_host] = ds['PayloadProxyHost'] - conf[:proxy_port] = ds['PayloadProxyPort'] - conf[:proxy_user] = ds['PayloadProxyUser'] - conf[:proxy_pass] = ds['PayloadProxyPass'] - conf[:proxy_type] = ds['PayloadProxyType'] + conf[:proxy_host] = ds['HttpProxyHost'] + conf[:proxy_port] = ds['HttpProxyPort'] + conf[:proxy_user] = ds['HttpProxyUser'] + conf[:proxy_pass] = ds['HttpProxyPass'] + conf[:proxy_type] = ds['HttpProxyType'] conf[:retry_count] = ds['StagerRetryCount'] - conf[:proxy_ie] = ds['PayloadProxyIE'] + conf[:proxy_ie] = ds['HttpProxyIE'] conf[:custom_headers] = get_custom_headers(ds) else # Otherwise default to small URIs diff --git a/modules/payloads/stagers/windows/reverse_https_proxy.rb b/modules/payloads/stagers/windows/reverse_https_proxy.rb index 766c741332..ba77689d2a 100644 --- a/modules/payloads/stagers/windows/reverse_https_proxy.rb +++ b/modules/payloads/stagers/windows/reverse_https_proxy.rb @@ -80,8 +80,8 @@ module MetasploitModule p[i, u.length] = u # patch proxy info - proxyhost = datastore['PayloadProxyHost'].to_s - proxyport = datastore['PayloadProxyPort'].to_s || "8080" + proxyhost = datastore['HttpProxyHost'].to_s + proxyport = datastore['HttpProxyPort'].to_s || "8080" if Rex::Socket.is_ipv6?(proxyhost) proxyhost = "[#{proxyhost}]" @@ -91,7 +91,7 @@ module MetasploitModule if proxyport == "80" proxyinfo = proxyhost end - if datastore['PayloadProxyType'].to_s == 'HTTP' + if datastore['HttpProxyType'].to_s == 'HTTP' proxyinfo = 'http://' + proxyinfo else #socks proxyinfo = 'socks=' + proxyinfo @@ -105,22 +105,22 @@ module MetasploitModule p[proxyloc-4] = [calloffset].pack('V')[0] # Authentication credentials have not been specified - if datastore['PayloadProxyUser'].to_s == '' or - datastore['PayloadProxyPass'].to_s == '' or - datastore['PayloadProxyType'].to_s == 'SOCKS' + if datastore['HttpProxyUser'].to_s == '' || + datastore['HttpProxyPass'].to_s == '' || + datastore['HttpProxyType'].to_s == 'SOCKS' jmp_offset = p.index("PROXY_AUTH_STOP") + 15 - p.index("PROXY_AUTH_START") # Remove the authentication code p = p.gsub(/PROXY_AUTH_START(.)*PROXY_AUTH_STOP/i, "") else - username_size_diff = 14 - datastore['PayloadProxyUser'].to_s.length - password_size_diff = 14 - datastore['PayloadProxyPass'].to_s.length + username_size_diff = 14 - datastore['HttpProxyUser'].to_s.length + password_size_diff = 14 - datastore['HttpProxyPass'].to_s.length jmp_offset = 16 + # PROXY_AUTH_START length 15 + # PROXY_AUTH_STOP length - username_size_diff + # Difference between datastore PayloadProxyUser length and db "PayloadProxyUser length" - password_size_diff # Same with PayloadProxyPass + username_size_diff + # Difference between datastore HttpProxyUser length and db "HttpProxyUser length" + password_size_diff # Same with HttpProxyPass # Patch call offset username_loc = p.index("PROXY_USERNAME") @@ -131,8 +131,8 @@ module MetasploitModule # Remove markers & change login/password p = p.gsub("PROXY_AUTH_START","") p = p.gsub("PROXY_AUTH_STOP","") - p = p.gsub("PROXY_USERNAME", datastore['PayloadProxyUser'].to_s) - p = p.gsub("PROXY_PASSWORD", datastore['PayloadProxyPass'].to_s) + p = p.gsub("PROXY_USERNAME", datastore['HttpProxyUser'].to_s) + p = p.gsub("PROXY_PASSWORD", datastore['HttpProxyPass'].to_s) end # Patch jmp dbl_get_server_host