设为首页 收藏本站
查看: 925|回复: 0

[经验分享] 远程分析IIS设置

[复制链接]

尚未签到

发表于 2015-8-15 11:54:15 | 显示全部楼层 |阅读模式
远程分析IIS设置
相关网站:
点击进入与“远程分析IIS设置”相关的网站
作者:佚名 文章来源:网海之贝 点击数:49 更新时间:2004-9-1

  提起微软公司IIS web服务器的安全问题,很多人立刻就会联想到那些为人们所称颂的致命  
漏洞: UNICODE , CGI 解析, .ida,idq, .Printer远程溢出等. 这些伟大的漏洞恐怕是我等scripts
 
远程确定目录权限
让我们打开一个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 <enter><enter>
  
  这时服务器会返回一个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(权限禁止) 的响应的话,说明是开了写权限,但是匿名用户不允许。如果一个目录同时开了&#8221;写&#8221;和&#8220;脚本和可执行程序&#8221;的话,那么web用户就可以上传一个程序并且执行它,恐怖哦%^#$!~
 
纯脚本执行权限
 这样的目录就太多了。很多不需要给执行权限的目录也被管理员给了脚本执行权限,我记得在
shotgun的一篇文章里面他说过:最小的权限+最少的服务= 最大的安全 ;一点也没有错。给目录任何多余的权限都是没有必要的。判断一个目录是否可以执行纯脚本文件也很简单,发送一个如下一个请求:
  
  http://iis-server/dir/no-such-file.asp ;
  
  返回404文件不存在说明有执行权限,返回403则是没有开。
  
  浏览目录权限
 判断一个目录是否允许浏览可能需要一点点小技巧,但是,在网站的默认首页(如:default.asp)不存在的话,那么就再简单不过了。在浏览器里面输入:
  
  http://iis-server/dir/ ;
  
  如果权限开着的,那么会返回200响应,并且列出当前目录里面的内容,反之,没有列出目录的话就是关了。但是,如果默认页面default.asp存在呢?敲入上面的地址就直接打开这个页面了。别急,
WebDAV 里面有一个请求方法叫:PROFIND。这个方法使得我们可以从服务器资源里面得到一些如文件名,创建时间,最后修改时间等等的信息。利用它我们也可以绕过 default.asp 来判断目录浏览权限的情况, telnet到IIS-server的web端口,发送如下请求:
  
  PROPFIND /dir/ HTTP/1.1
Host: iis-server
Content-Length: 0
  
  这时,服务器会送回一个207 Multi Status的响应,如果目录是允许浏览的,那么同时会列出目录里面的资源以及他们的属性。如果目录浏览不允许,返回的信息就会少的多。目录浏览一般来说只能算是一个低危险等级的漏洞,比如一个images目录,里面除了图片没有别的东西了,那对于服务器的安全就没有什么危害,但是,如果目录里面放了一个管理页面adminpage.asp或者一些数据库连接信息文件,可能会导致你的服务器拱手相让给入侵者。
  
  读权限
 判断这点很容易,发一个带 txt文件的请求就可以:
  
  http://iis-server/dir/no-such-file.txt ;
  
  如果返回一个 404 文件不存在的响应,就说明读权限是开着的,反正,返回403错误则说明都权限没有开。早几年接触安全的人一定知道 ::$DATA泄露ASP源代码的漏洞,其实如果一个目录里面权势asp脚本的话,那么读权限也可以不用开的,ASP只需要脚本执行权限就可以了。
IIS 认证方法的判断
这个漏洞是最近才公布出来的,IIS服务器支持匿名访问,基本认证和使用NTLM方式的windows集成认证,如果客户端发送一个包含认证信息的请求,IIS就会强行的尝试用这些认证信息取认证,并且放回不会的响应。这样我们就能够确定IIS的认证的配置。
要确定IIS是否支持基本认证,可以telnet到服务器的80端口,发送如下请求:
  
  GET / HTTP/1.1
Host: iis-server
Authorization: Basic c3lzdGVtOm1hbmFnZXIA
  
  这是一个基本认证的请求,里面包含了一个base 64编码的用户ID和PASS,Basic后面那串字符经过base 64解码以后就是 system:manager 。如果服务器返回一个401信息,则说明基本认证选项是开着的。如果返回200信息,则有2种可能,基本认证选项没有开或者是服务器存在一个用户名是
system的用户名,并且密码是manager (猜中的话,行大运啦)。
要确定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 ;
响应码:200 OK
响应: 找不到 IDQ 文件 D:\dir\\foo.idq
扩展名:.ida
请求:  http://iis-server/foo.ida ;
响应码:200 OK
响应: 找不到 IDQ 文件 D:\dir\foo.ida
扩展名:.htr
请求:  http://iis-server/foo.htr ;
响应: HTTP 404 - 未找到文件
  
  扩展名:.htw
请求:  http://iis-server/foo.htw ;
响应码: 200 OK
响应: QUERY_STRING 的格式无效
  
  扩展名:.stm
请求:  http://iis-server/foo.stm ;
响应: HTTP 404 - 未找到文件
  
  扩展名:.shtm
请求:  http://iis-server/foo.shtm ;
响应:  HTTP 404 - 未找到文件
  
  扩展名:.shtml
请求:  http://iis-server/foo.ida ;
响应: HTTP 404 - 未找到文件
判断操作系统是否为个人版本(Professional/Workstation )
IIS安装在windows2000专业版和NT workstation上面时候,同时进行的连接数最大为10个,利用这一点我们可以简单判断操作系统版本:创建10个 HTTP 1.1的持续连接,第11个连接请求将放回403错误信息

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-99334-1-1.html 上篇帖子: IIS 6.0部署ASP.NET MVC 2.0方法整理 下篇帖子: iis php exec unable to fork 怎么办
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表