This commit adds a new option to all reverse handlers: ReverseListenerBindAddress. This setting determines exactly what address is bound on the local system
git-svn-id: file:///home/svn/framework3/trunk@10472 4d416f70-5f16-0410-b530-b9f4589650daunstable
parent
3ee6117219
commit
3b31f56894
|
@ -49,7 +49,8 @@ module ReverseTcp
|
||||||
# XXX: Not supported by all modules
|
# XXX: Not supported by all modules
|
||||||
register_advanced_options(
|
register_advanced_options(
|
||||||
[
|
[
|
||||||
OptInt.new('ReverseConnectRetries', [ true, 'The number of connection attempts to try before exiting the process', 5 ])
|
OptInt.new('ReverseConnectRetries', [ true, 'The number of connection attempts to try before exiting the process', 5 ]),
|
||||||
|
OptAddress.new('ReverseListenerBindAddress', [ false, 'The specific IP address to bind to on the local system'])
|
||||||
], Msf::Handler::ReverseTcp)
|
], Msf::Handler::ReverseTcp)
|
||||||
|
|
||||||
|
|
||||||
|
@ -72,7 +73,14 @@ module ReverseTcp
|
||||||
# First attempt to bind LHOST. If that fails, the user probably has
|
# First attempt to bind LHOST. If that fails, the user probably has
|
||||||
# something else listening on that interface. Try again with ANY_ADDR.
|
# something else listening on that interface. Try again with ANY_ADDR.
|
||||||
any = (addr.length == 4) ? "0.0.0.0" : "::0"
|
any = (addr.length == 4) ? "0.0.0.0" : "::0"
|
||||||
[ Rex::Socket.addr_ntoa(addr), any ].each { |ip|
|
|
||||||
|
addrs = [ Rex::Socket.addr_ntoa(addr), any ]
|
||||||
|
|
||||||
|
if not datastore['ReverseListenerBindAddress'].to_s.empty?
|
||||||
|
addrs = [ datastore['ReverseListenerBindAddress'] ]
|
||||||
|
end
|
||||||
|
|
||||||
|
addrs.each { |ip|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
self.listener_sock = Rex::Socket::TcpServer.create(
|
self.listener_sock = Rex::Socket::TcpServer.create(
|
||||||
|
|
Loading…
Reference in New Issue