远程分析win2003 IIS安全设置第2/2页
2024-08-29 03:07:56
供稿:网友
要确定NTLM选项是否开启则可以向IIS发送如下请求
GET / HTTP/1.1
Host: iis-server
Authorization: NegotiateTlRMTVNTUAABAAAAB4IAoAAAAAAAAAAAAAAAAAAAAAA=
同样,如果返回401消息,则说明支持NTLM,返回200说明不NTLM认证选项没有开启。
对于大多数网站来说,这两种认证方式都是不需要开起来的,他们有可能泄露一些服务器的重要信息。
泄露内部IP地址信息
如果IIS服务器在一个使用NAT的防火墙里面的话,通常都有个内部地址如10.x.x.x。
如果IIS开启了基本认证选项,那么发送如下一个简单的请求就可以得到服务器的内部IP:
GET / HTTP/1.1
Host:
Authorization: Basic c3lzdGVtOm1hbmFnZXIA
服务器将返回一个如下响应:
HTTP/1.1 401 Access Denied
Server: Microsoft-IIS/5.0
Date: Fri, 01 Mar 2002 15:45:32 GMT
WWW-Authenticate: Basic realm="10.1.1.2"
Connection: close
Content-Length: 3245
Content-Type: text/html
那个10.1.1.2就是机器的内部ip地址,本来realm的值是客户端提供给的一个主机头,但这里它是空的,所以IIS就选择了本机的IP地址来代替。同样的,利用PROPFIND,WRITE,MKCOL等请求的返回信息,也能泄露主机的一些信息,如我们向服务器提请下面这样一个请求:
PROPFIND / HTTP/1.1
Host:
Content-Length: 0
在IIS配置成使用主机名(见后)的情况下,则不会暴露主机的IP地址,但是会暴露NetBIOS名。事实上我们可以利用IIS的认证获得更多的信息,如所在域的名字,方法是向服务器发送如下带NTLM认证的请求:
GET / HTTP/1.1
Host: iis-server
Authorization: NegotiateTlRMTVNTUAABAAAAB4IAoAAAAAAAAAAAAAAAAAAAAAA
服务器会返回一个信息:
HTTP/1.1 401 Access Denied
Server: Microsoft-IIS/5.0
Date: Fri, 01 Mar 2002 16:24:58 GMT
WWW-Authenticate: Negotiate TlRMTVNTUAACAAAADAAMADAAAAAFgoKgeGvyVuvy67U
AAAAAAAAAAEQARAA8AAAAUwBDAFkATABMAEEAAgAMAFMAQwBZAEwATABBAAEA
DABTAEMAWQBMAEwAQQAEAAwAUwBDAFkATABMAEEAAwAMAFMAQwBZAEwATABB
AAAAAAA=
Content-Length: 3245
Content-Type: text/html
那一长串字符就包含了主机名和NT所在域的名字的base 64 编码。
临时解决方法:在cmd下进入c:/inetpub/adminscripts或者是adminiscript所在目录执行一下命令
adsutil set w3svc/UseHostName True
net stop iisadmin /y
net start w3svc
默认应用程序映射判断
判断默认映射是否存在比较简单,这里只简单的给出了在映射存在的情况下对于相应请求的响应:
扩展名: .printer
请求: http://iis-server/foo.printer
响应: HTTP 500 - 内部服务器错误
扩展名:.idc
请求: http://iis-server/foo.idc
响应: code 500 Internal Server Error
扩展名:.idq
请求: http://iis-server/foo.idq