A vulnerability exists in Microsoft Information Server (IIS) in which a crafted HTTP GET request may return the contents of a file on the affected server. A possible target of such a request might be a script that should only be executable (not readable) by unauthenticated remote users. The contents of such a file might contain sensitive information such as user credentials for access to a back-end database.
IIS contains a technology called ISAPI (Internet Services Application Programming Interface) which is designed to allow programmers to write custom applications which run on IIS. One ISAPI extension uses .HTR scripts to provide a password management interface via IIS. The .HTR ISAPI extension is implemented in the file
ISM.DLL. When IIS receives a request for a file ending in .HTR it performs some pre-processing of the request then passes it off to
ISM.DLL. If a malicious user crafts an HTTP request for an existing non-.HTR file and appends "%3F+.HTR" to the request then the requested file will be processed as if it were an .HTR file. Note that "%3F" is a unicode representation of the character "?". If the requested file is not an .HTR file, then the contents of the file will be returned to the requestor, with the exception of text enclosed in script delimiters "<% %>".
In order for this vulnerability to be exploited, specific locations in memory must contain zeros. Memory is zeroed as part of the initialization process, so the server would be most vulnerable soon after the IIS service was started and possibly up to the point at which the .HTR ISAPI code was first loaded into memory. Once the .HTR ISAPI code has been loaded and memory has been "dirtied," the chances that an exploit attempt will succeed are notably reduced.
The contents of files may be disclosed to unauthenticated remote users. Target files may be CGI scripts that contain sensitive configuration information such as database access credentials. This specific vulnerability does not allow an attacker to access files located outside the root directory of the web server.
Disable .HTR script mapping if not needed, as described in Microsoft Security Bulletin MS01-004:
1. Open the Internet Services Manager
2. Right-click the web server, then choose Properties, then Master Properties, then WWW Service.
3. Choose Edit, then HomeDirectory, then Configuration
4. Remove the .HTR entry
It’s worth noting that, in addition to .HTR, Microsoft also recommends removing several other so-called script mappings.
Apply the appropriate vendor patch:
IIS 4.0: <http://www.microsoft.com/Downloads/Release.asp?ReleaseID=27492>
IIS 5.0: <http://www.microsoft.com/Downloads/Release.asp?ReleaseID=27491>
Note that these are the most recent patches as referenced in MS01-004.
CERT/CC also recommends the following documents on the secure configuration of Windows NT/2000 and IIS.
Windows NT Configuration Guidelines
Windows NT Security and Configuration Resources
IIS 4.0 Security Checklist
Secure Internet Information Services 5 Checklist
Vendor| Status| Date Notified| Date Updated
Microsoft| | -| 15 Jun 2001
If you are a vendor and your product is affected, let us know.
Group | Score | Vector
Base | N/A | N/A
Temporal | N/A | N/A
Environmental | N/A | N/A
The CERT Coordination Center thanks Georgi Guninski and Microsoft Product Security for information used in this document.
This document was written by Art Manion.