>> 欢迎您, 傲气雄鹰: 重登陆 | 退出 | 注册 | 资料 | 设置 | 排行 | 新贴 | 精华 | 管理 | 帮助 首页

  小榕软件实验室
  刀光雪影
  远程分析IIS设置[转帖]
发表文章 发表涂鸦
  回复数:6  点击数:299 将此页发给您的朋友        
作者 主题: 远程分析IIS设置[转帖] 回复 | 收藏 | 打印 | 篇末
gsjj帅哥哦
级别:一般站友
威望:0
经验:0
货币:
体力:
来源:218.2.20.*
总发帖数:11
注册日期:2002-03-23
查看 邮件 主页 QQ 消息 引用 复制 下载 

远程分析IIS设置

作者: springold 发表日期: 2002-03-08 11:54:27 返回《黑客也是侠》 快速返回

 
提起微软公司IIS web服务器的安全问题,很多人立刻就会联想到那些为人们所称颂的致命

漏洞: UNICODE , CGI 解析, .ida,idq, .Printer远程溢出等. 这些伟大的漏洞恐怕是我等scripts

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 <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(权限禁止) 的响应的话,说明是开了写权限,但是匿名用户不允许。如果一个目录同时开了”写”和“脚本和可执行程序”的话,那么web用户就可以上传一个程序并且执行它,恐怖哦%^#$!~

 

纯脚本执行权限

 这样的目录就太多了。很多不需要给执行权限的目录也被管理员给了脚本执行权限,我记得在

shotgun的一篇文章里面他说过:最小的权限+最少的服务= 最大的安全 ;一点也没有错。给目录任何多余的权限都是没有必要的。判断一个目录是否可以执行纯脚本文件也很简单,发送一个如下一个请求:



  http://iis-server/dir/no-such-file.asp



返回404文件不存在说明有执行权限,返回403则是没有开。



浏览目录权限

 判断一个目录是否允许浏览可能需要一点点小技巧,但是,在网站的默认首页(如efault.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错误信息。



后话:由于各种原因,我所在的公司关门大吉了,没有工作,心就乱糟糟的,所以翻译的时候也是砍头去尾的,大家不要骂我,我拿去黑客防线骗稿费的啦。如果有不明白的地方可以参考以下几篇:

http://www.nextgenss.com/papers/iisrconfig.pdf 英文原文

http://www.nextgenss.com/advisories/iisauth.txt

http://www.nextgenss.com/advisories/iisip.txt

也欢迎大家给我email继续讨论这个话题,我的email是 scs@cnnb.net ,OK,睡觉去啦~                                           springold3.18深夜1:35










---------------------------------------------------------------
welcome to my team C4ST!
WWW.China4lert.ORG


编辑 删除 发表时间发表于 2002-04-07.20:53:15   MSIE 6.0 Windows 2000IP: 已记录
元素帅哥哦
级别:长 老 级
威望:0
经验:0
货币:2266
体力:100
来源:江苏
总发帖数:781
注册日期:2002-02-11
查看 邮件 主页 QQ 消息 引用 复制 下载 

不错不错!

推!!
----------------------------------------------------------
不认识你,我的心情28℃,认识了你,我的心情变成了40℃,爱上了你,我的心情成了80℃,拥有了你,我的心情为100℃,你变的时候,我的心情回到了28℃,你走的时候,我的心情-28℃,失去了你,我的心情-273℃,也就是绝对零度

编辑 删除 发表时间发表于 2002-04-07.21:50:05   MSIE 6.0b Windows 2000IP: 已记录
水木子帅哥哦
级别:高级站友
威望:0
经验:0
货币:588
体力:48.1
来源:浙江
总发帖数:137
注册日期:2002-03-02
查看 邮件 主页 QQ 消息 引用 复制 下载 

就是,好东西!

编辑 删除 发表时间发表于 2002-04-07.21:52:16   MSIE 5.01 Windows 2000IP: 已记录
launze帅哥哦
级别:高级站友
威望:0
经验:0
货币:402
体力:15.4
来源:202.101.145.*
总发帖数:198
注册日期:2002-02-05
查看 邮件 主页 QQ 消息 引用 复制 下载 

好东西,充分利用了win2000的错误代码
----------------------------------------------------------
我现在成为了军人了,没时间上网了,有空上来就多支持了

编辑 删除 发表时间发表于 2002-04-07.22:02:05   MSIE 5.0 Windows 98IP: 已记录
AAA1帅哥哦
级别:精灵
威望:0
经验:4
货币:589
体力:52.2
来源:云南
总发帖数:551
注册日期:2001-05-04
查看 邮件 主页 QQ 消息 引用 复制 下载 

如果每天能看到一篇这样的文章,那三年后就能黑FBI了。

编辑 删除 发表时间发表于 2002-04-07.22:10:23   MSIE 6.0 Windows 2000IP: 已记录
永远的FLASH帅哥哦
级别:刀光雪影版主
威望:3
经验:1
货币:5852
体力:100
来源:江苏
总发帖数:2264
注册日期:2002-02-11
查看 邮件 主页 QQ 消息 引用 复制 下载 

半个月前看过了!
----------------------------------------------------------
H4技术组:http://www.h4h4.com

编辑 删除 发表时间发表于 2002-04-07.22:41:16   MSIE 6.0 Windows 2000IP: 已记录
play帅哥哦
级别:一般站友
威望:0
经验:0
货币:
体力:
来源:云南
总发帖数:13
注册日期:2002-04-12
查看 邮件 主页 QQ 消息 引用 复制 下载 

我的服务器上开着1000以下很多端口
而且对所有的http错误都有错误显示页面,嘿嘿
你的每个http试探都会得到 200 返回代码,累死你!
有效的提高入侵成本也算是提高安全性的一个方法
----------------------------------------------------------
我的家就在香格里拉 ^oo^

编辑 删除 发表时间发表于 2002-04-12.16:09:47   MSIE 6.0 Windows 2000IP: 已记录
选择回复        
 快速回复主题: >>>高级模式
  用户名: 没有注册? 密码: 忘记密码?
记住密码
HTML语法
禁止IDB代码
禁止表情字符

[按 Ctrl+Enter 快捷键可直接提交帖子]
 投票评分: 共 0 票  
所有时间均为: 北京时间 ↑TOP 
关闭主题 拉前主题 移动主题 主题置顶 取消置顶 总固顶主题 取消总固顶 加入精华 移出精华 删除主题