对远程分析IIS设置的简单概述(1) |
| 发布时间: 2012/7/4 15:17:30 |
|
以下的文章主要是阐述远程分析IIS设置,提及微软公司IIS web服务器的安全问题,大多数人立刻就会联想到那些为人们致命的称颂,kidding的最爱了,利用他们可以很轻松的拿到较高的系统权限。
但是这篇文章并非是讨论这些致命的漏洞的,只是比较详细的介绍了如何远程判断IIS 服务器的各种设置,如目录权限,认证方法等等,文中有些东西已经很老了,但是新的东西还是值得一看的。希望本文能够起到一个抛砖引玉的作用。好了,废话少说,Go~! 远程确定目录权限 让我们打开一个IIS服务器来看看。在IIS 服务管理器中,选择一个目录,看他的属性 在目录属性项有有这么一些选项(日志访问和索引此资源不计): 脚本资源访问: 对网站的脚本可以读取原文件。 读取 读取目录里面的静态资源。 写入 用户可以建立以及删除资源 目录浏览 用户可以浏览目录内容。 应用程序设置的执行许可中有三个选项: 无 只能访问静态页面 纯脚本只允许允许脚本 如ASP脚本 脚本和可执行程序 可以访问和执行各种文件类型 那么,如何确定服务器上面的这些开关设置呢?别着急,一个一个来。 执行权限 如何确定某个目录是否开了执行权限呢?很简单,向服务器发送一个下面得请求: http://iis-server/dir/no-such-file.dll /dir/为要判断得目录,no-such-file.dll是随便取得一个名字,服务器上面没有这个文件。 服务器对我们得请求会返回一个信息。如果返回的是一个500错误: HTTP 500 - 内部服务器错误 (Internal Server error) 那么就说明这个目录的执行权限是开着的。对于服务器,能不开执行权限的就不要开。特别是虚拟目录的执行权限,大家想一想UNICODE和二次解码漏洞的利用过程就明白了。 如果服务器返回的是一个 404 错误: HTTP 404 - 未找到文件 那么就说明这个目录的执行权限没有开。 写权限 测试一个目录对于web用户是否具有写权限,采用如下方法: telnet 到服务器的web端口(80)并发送一个如下请求: PUT /dir/my_file.txt HTTP/1.1 Host: iis-server Content-Length: 10 这时服务器会返回一个100( 继续)的信息: HTTP/1.1 100 Continue Server: Microsoft-IIS/5.0 Date: Thu, 28 Feb 2002 15:56:00 GMT 接着,我们输入10个字母: AAAAAAAAAA 送出这个请求后,看服务器的返回信息,如果是一个 201 Created响应: HTTP/1.1 201 Created Server: Microsoft-IIS/5.0 Date: Thu, 28 Feb 2002 15:56:08 GMT Location: http://iis-server/dir/my_file.txt Content-Length: 0 Allow: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, LOCK, UNLOCK 那么就说明这个目录的写权限是开着的,反之,如果返回的是一个 403 错误,那么写权限就是 没有开起来,如果需要你认证,并且返回一个 401(权限禁止) 的响应的话,说明是开了写权限,但是匿名用户不允许。如果一个目录同时开了”写”和“脚本和可执行程序”的话,那么web用户就可以上传一个程序并且执行它,恐怖哦%^#$!~ 纯脚本执行权限 这样的目录就太多了。很多不需要给执行权限的目录也被管理员给了脚本执行权限,我记得在shotgun的一篇文章里面他说过:最小的权限+最少的服务= 最大的安全 ;一点也没有错。给目录任何多余的权限都是没有必要的。判断一个目录是否可以执行纯脚本文件也很简单,发送一个如下一个请求: http://iis-server/dir/no-such-file.asp 返回404文件不存在说明有执行权限,返回403则是没有开。 本文出自:亿恩科技【www.enkj.com】 |
京公网安备41019702002023号