远程分析IIS设置_服务器

提起微软公司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则是没有开。 

浏览目录权限 

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

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

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

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

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

时间: 2024-08-01 20:05:58

远程分析IIS设置_服务器的相关文章

IIS里的AJAX相关的设置_服务器

今天在IIS里发现一个 保持 HTTP 连接 的选项 说明如下 启用保持 HTTP 连接 大多数 Web 浏览器都要求服务器对多个请求保持连接打开状态,这称为"保持 HTTP 连接".保持连接是一个 HTTP 规范,能够显著增强服务器性能.如果没有它,浏览器将不得不对包含多个元素(如图形)的网页发出多个连接请求.可能需要为每个元素都生成一个连接.这些额外的请求和连接需要额外的服务器活动和资源,这将降低服务器的效率,还会使浏览器速度变慢并且响应不灵敏,特别是对高滞后时间(慢)连接更是如此

采用软件负载均衡器实现web服务器集群(iis+nginx)_服务器其它

我用nginx实现网站负载均衡测试的例子,windows下IIS做负载实测.   如果你的网站访问量(pv)越来越高,一台服务器已经没有办法承受流量压力,那就增多几台WEB服务器来做负载吧. 做网站负载可以买硬件设备来实现,我们公司用的是F5,不过价格就几十万到上百万,太贵了, 目前好多门户网站与大访问量的网站都在使用nginx做为HTTP服务器,所以nginx是非常优秀的,下面我亲手做这个负载测试吧. 软/硬件环境:   (2台服务器) 第一台:  CPU:Inter(R) 酷睿 i5 CPU

阿江的WINDOWS服务器安全设置_服务器

前言 其实,在服务器的安全设置方面,我虽然有一些经验,但是还谈不上有研究,所以我写这篇文章的时候心里很不踏实,总害怕说错了会误了别人的事. 本文更侧重于防止ASP漏洞攻击,所以服务器防黑等方面的讲解可能略嫌少了点. 基本的服务器安全设置 安装补丁 安装好操作系统之后,最好能在托管之前就完成补丁的安装,配置好网络后,如果是2000则确定安装上了SP4,如果是2003,则最好安装上SP1,然后点击开始→Windows Update,安装所有的关键更新. 安装杀毒软件 虽然杀毒软件有时候不能解决问题,

IIS排错_服务器

给需要的人看看应该有用吧. IIS排错  IIS服务器排错IIS服务器出错的原因是复杂的.象服务启动失败.IIS进程中断或者站点不能启动这些错误都会在系统日志中记录一个错误事件.不论IIS出现何种错误,在确定排错方案之前,都应先使用事件查看器查阅系统日志所记录的相关事件.某些错误显然是由服务器硬件的损坏而造成的,而另一些由于软件原因造成的错误往往不易察觉.本节就一般性的IIS排错提供指导性的介绍.重新启动IIS按照微软产品的一般性排错方法和故障解决方案,大多数软件问题可以通过重新启动到方

正确开启Win2008远程桌面的方法_服务器其它

1.正常的开启操作: 在桌面上右点"计算机"->"属性"->在打开的"系统"窗口里点击"远程设置",再切换到"远程"选项板中,将"远程协助"打上对钩,再将"远程桌面"里根据你的需要选择一项目,比方我选择的是"允许运行任意版本远程桌面的计算机连接".确定就行了. 2.特殊的情况:有的网友会发现在给"远程协助"打钩时,是

虚拟主机安全设置_服务器

1.如何让asp脚本以system权限运行?  修改你asp脚本所对应的虚拟目录,把"应用程序保护"修改为"低"....  2.如何防止asp木马?  基于FileSystemObject组件的asp木马  cacls %systemroot%\system32\scrrun.dll /e /d guests //禁止guests使用  regsvr32 scrrun.dll /u /s //删除  注:这样服务器的FSO就不能用了: 在CMD命令行状态输入以下命令

[windows服务器]serv-u登陆信息设置_服务器

使用FTP Serv-U安装FTPSERVER的朋友,可以使用Serv-U符号信息参数来向CLIENT端显示一些重要的信息.   比如:   Mon Dec 10 22:32:46 2001 220-==============================   Mon Dec 10 22:32:46 2001 220-服务器状态:   Mon Dec 10 22:32:46 2001 220-现在时间:22:35:40, 在过去24小时共有 1578 人访问本服务器.   Mon Dec 1

远程分析win2003 IIS安全设置第1/2页_win服务器

提起微软公司IIS web服务器的安全问题,很多人立刻就会联想到那些为人们所称颂的致命漏洞: UNICODE , CGI 解析, .ida,idq, .Printer远程溢出等. 这些伟大的漏洞恐怕是我等scriptskidding的最爱了,利用他们可以很轻松的拿到较高的系统权限.但是这篇文章并非是讨论这些致命的漏洞的,只是比较详细的介绍了如何远程判断IIS 服务器的各种设置,如目录权限,认证方法等等,文中有些东西已经很老了,但是新的东西还是值得一看的. 希望本文能够起到一个抛砖引玉的作用.好了

备份和恢复Windows IIS服务器设置的方法_服务器

我们在使用Windows 2000 Server自带的IIS(Internet Information Server,Internet信息服务器)时,经常需要设置一些Web服务.FTP服务等,但是经过一段时间的使用之后,Web站点.FTP站点.虚拟目录比较多了,其配置也变得越来越复杂.IIS能不能恢复到以前的状态呢?答案是肯定的.    备份IIS设置:IIS本身自带了备份和恢复IIS设置的功能.在恢复IIS设置之前需要备份IIS.备份的过程很简单:在Windows 2000 Server中找到