I. Description
URIs may be encoded according to RFC 2396. Among other
things, this RFC provides an encoding for arbitrary octets using the
percent sign (%) and hexadecimal characters.
Quoting from RFC 2396:
An escaped octet is encoded as a character triplet, consisting of the
percent character "%" followed by the two hexadecimal digits
representing the octet code. For example, "%20" is the escaped
encoding for the US-ASCII space character.
escaped = "%" hex hex
hex = digit | "A" | "B" | "C" | "D" | "E" | "F"
Like all web servers, Microsoft IIS decodes input URIs to a
canonical format. Thus, the following encoded string:
-
A%20Filename%20With%20Spaces
will get decoded to
-
A Filename With Spaces
Unfortunately, IIS decodes some of the input twice. The
second decoding is superfluous. Security checks are applied to the
results of the first decoding, but IIS utilizes the results of the
second decoding. If the results of the first decoding pass the
security checks and the results of the second decoding refer to a
valid file, access will be granted to the file even if it should not
be. More information is available at
- http://www.microsoft.com/technet/security/bulletin/MS01-026.asp
- http://www.nsfocus.com/english/homepage/sa01-02.htm
- http://www.kb.cert.org/vuls/id/789543
Note that this does not permit intruders to bypass ACLs enforced by
the filesystem, only security checks performed by IIS. We encourage
you to configure your web server according to the guidelines provided
in
-
http://www.microsoft.com/technet/security/iis5chk.asp
- http://www.microsoft.com/technet/security/iischk.asp
- http://www.microsoft.com/technet/security/tools.asp
Theses guidelines can help you reduce your exposure to this
problem, and possibly to problems that have not yet been discovered.
This issue was discovered by NSFocus.
The CVE Project has assigned the following identifier to this
vulnerability:
-
http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2001-0333
This vulnerability has many similarities to the Web Server Folder
Directory Traversal Vulnerability, which has been widely exploited. For more
information on that vulnerability, see
-
http://www.kb.cert.org/vuls/id/111677