Closed sky305 closed 6 years ago
Hi, there is a PR that addresses this issue in #9246, making RHOSTS the preferred way to do it with all modules. Can you give it a try and see how it works for you? More eyes are definitely appreciated.
@busterb so there are no docs for metasploit that indicate which method should be called by a thridparty application? What if the thirdparty is using msfrpc?
It's always been RHOST
for exploits and RHOSTS
for scanners (exceptions notwithstanding). It's only recently as of #9246 that we've experimented with globally supporting RHOSTS
beyond writing a resource script. Setting both is usually not a problem, but only one will be used presently. Hope this helps.
Currently, for 'exploit' modules, you need to set RHOST and set it to one IP address. For all other modules, set 'RHOSTS' instead, and you can specify a range, subnet, or file. When #9724 lands the same code will work transparently.
Earlier discussion: https://github.com/rapid7/metasploit-framework/issues/7614
@wvu-r7 so if I set RHOST 127.0.0.1 RHOSTS 127.0.0.1
via CMD are they called in order received or by relevance to the module?
They aren't called in order because the architecture dictates modules use one or the other. If it's an exploit, RHOST
is used. If it's a scanner, RHOSTS
is used. If you're seeing any shells now, it's because some scanners can pop shells. You'll actually get a warning in the console now when you set the wrong option.
Setting RHOST
for a scanner:
msf5 > use auxiliary/scanner/ssh/ssh_login
msf5 auxiliary(scanner/ssh/ssh_login) > set rhost 127.0.0.1
[!] RHOST is not a valid option for this module. Did you mean RHOSTS?
rhost => 127.0.0.1
msf5 auxiliary(scanner/ssh/ssh_login) > run
[-] Auxiliary failed: Msf::OptionValidateError The following options failed to validate: RHOSTS.
msf5 auxiliary(scanner/ssh/ssh_login) >
Setting RHOSTS
for an exploit (soon to be supported):
msf5 > use exploit/windows/smb/ms17_010_eternalblue
msf5 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 127.0.0.1
rhosts => 127.0.0.1
msf5 exploit(windows/smb/ms17_010_eternalblue) > run
[-] Exploit failed: The following options failed to validate: RHOST.
[*] Exploit completed, but no session was created.
msf5 exploit(windows/smb/ms17_010_eternalblue) >
For exploits, this isn't so much a warning as an option validation error.
@wvu-r7 awesome thanks man, much appreciated
And to actually answer your question, I'm afraid there's no solid documentation on this, since Metasploit was architected around single-host exploits from the very beginning. It's sort of become de facto. We're hoping to change that. :)
It’s all good, you’ve defiantly answered my question I very much appreciate your time
No problem. Thanks for the question! Feel free to test #9246 as time goes on. Closing this now.
Here are the positive test cases showing you can set both (don't mind the errors):
msf5 > use auxiliary/scanner/ssh/ssh_login
msf5 auxiliary(scanner/ssh/ssh_login) > set rhost 127.0.0.1
[!] RHOST is not a valid option for this module. Did you mean RHOSTS?
rhost => 127.0.0.1
msf5 auxiliary(scanner/ssh/ssh_login) > set rhosts 127.0.0.1
rhosts => 127.0.0.1
msf5 auxiliary(scanner/ssh/ssh_login) > run
[*] Error: 127.0.0.1: Metasploit::Framework::LoginScanner::Invalid Cred details can't be blank, Cred details can't be blank (Metasploit::Framework::LoginScanner::SSH)
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/ssh/ssh_login) >
msf5 > use exploit/windows/smb/ms17_010_eternalblue
msf5 exploit(windows/smb/ms17_010_eternalblue) > set rhost 127.0.0.1
rhost => 127.0.0.1
msf5 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 127.0.0.1
rhosts => 127.0.0.1
msf5 exploit(windows/smb/ms17_010_eternalblue) > run
[!] You are binding to a loopback address by setting LHOST to 127.0.0.1. Did you want ReverseListenerBindAddress?
[*] Started reverse TCP handler on 127.0.0.1:4444
[*] 127.0.0.1:445 - Connecting to target for exploitation.
[-] 127.0.0.1:445 - Rex::ConnectionRefused: The connection was refused by the remote host (127.0.0.1:445).
[*] Exploit completed, but no session was created.
The modules do run.
And FWIW, the run
command can specify options, too:
msf5 > use auxiliary/scanner/smb/smb_login
msf5 auxiliary(scanner/smb/smb_login) > run -o RHOST=192.168.212.129,RHOSTS=192.168.212.129,SMBUser=msfadmin,SMBPass=msfadmin
[*] 192.168.212.129:445 - 192.168.212.129:445 - Starting SMB login bruteforce
[*] 192.168.212.129:445 - 192.168.212.129:445 - This system does not accept authentication with any credentials, proceeding with brute force
[+] 192.168.212.129:445 - 192.168.212.129:445 - Success: '.\msfadmin:msfadmin' Administrator
[*] 192.168.212.129:445 - 192.168.212.129:445 - Domain is ignored for user msfadmin
[*] 192.168.212.129:445 - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/smb/smb_login) >
No need to run set
, but you'll need to run use
.
@wvu-r7 thank you for the help!
@Ekultek: No problem! I'm glad it worked. :)
how to solve this error Started reverse TCP handler on 192.168.43.124:4444 [-] 192.168.43.124:135 - Exploit failed [unreachable]: Rex::ConnectionRefused The connection was refused by the remote host (192.168.43.124:135). [*] Exploit completed, but no session was created.
how to solve this error Started reverse TCP handler on 192.168.43.124:4444 [-] 192.168.43.124:135 - Exploit failed [unreachable]: Rex::ConnectionRefused The connection was refused by the remote host (192.168.43.124:135). [*] Exploit completed, but no session was created.
The connection was refused by the remote host
means the connection was refused. Ensure that port 135
is open on 192.168.43.124
.
Hi, I'm working with https://github.com/NullArray/AutoSploit/ ..
They set RHOSTS by default for a host, in my experience it does not work with most modules as it is not a range of IPs, I have recommended to set the variables for RHOST and RHOSTS to the same address, that way whichever module uses either would work. Am I correct here? Is there any documentation on this ?