CORRECTION: Remote IIS 5.x and IIS 6.0 Server Name Spoof
I just wanted to clarify some issues here. First of all, this is by no means a
new discovery. Others have mentioned it and I even used it as an example in my
book "Hacking the Code". It is not a flaw in the handling of the server
variable, but a bug in the 500-100.asp script. It is also important to note
that this issue does not affect IIS 6 as Inge claims.
The original code in IIS 5 used the SERVER_NAME variable to see if the user was
local with this code:
If (strServername = "localhost" or strServerIP = strRemoteIP)
And .....
In IIS 6 they updated the code to this:
If (strServerIP = strRemoteIP) And...
A quick fix for this is to pull the 500-100.asp script from IIS 6 and use it
for IIS 5. A better fix is to simply replace that error with a static html page.
So if you maintain a vulnerability database, write vulnerability scanners,
assign vulnerability ID numbers, or if you somehow document this, you should
correct this so we all don't have to explain this every time in the next 10
years that someone runs vulnerability scanner on IIS 6 and this shows up in the
report.
Incidently, you do not need to use telnet to manually enter the URL to exploit
this. An easier solution is to change your HOSTS file so that localhost points
to the remote IP address of the target IIS server. Then you can use your
browser to hammer away at it.
Mark Burnett