IIS作为一款流行的Web服务器,在当今互联网环境中占有很大的比重,绝大多数的asp、asp.net网站都运行在它上面。因此,也引来了无数黑客们关注的目光。目前针对IIS的攻击技术已经非常成熟,而且相对技术门槛较低,所以很多初学者拿它来练手。许多网站因为网站治理 员的安全意识不高或技术上的疏忽而惨遭毒手。本文通过实例来谈谈针对IIS的攻击技术与安全加固措施。
攻击实例
IIS写权限漏洞利用
我们先通过一个攻击实例来演示如何利用IIS权限配置不当来快速攻陷一个网站,以此来提高广大读者对IIS安全性的重视。
目标网站IP:192.168.1.105
利用漏洞:IIS写权限漏洞
用到的工具:IIS PUT Scaner、桂林老兵写权限利用工具
1 检测目标网站是否存在写权限漏洞
打开IIS PUT Scanner,输入目标网站的IP、端口号(默认为80端口),然后点击“Scan”按钮开始扫描,很快就返回了结果,如图1所示:
图1
2 IIS写权限漏洞利用过程
根据扫描结果,我们可以确定目标网站存在IIS写权限漏洞。下面我们来看下如何利用这个漏洞,来得到一个WebShell。
我们先将“<%eval request("cmd")%>”这段一句话木马代码保存成一个txt文档,名字随意。我这里命名为test.txt。接着打开桂林老兵写权限利用工具,输入目标网站的IP或域名,在“数据包格式”处的下拉菜单中选择“PUT”数据包提交方式,最后点击“数据包提交”按钮,我们来看服务器返回的结果。如图2所示:
图2
服务器返回了201响应码,这标志着我们成功上传了文件。
现在我们需要将刚刚上传的txt文本修改为asp文件,否则服务器不会将它解析为asp文件。在“数据包格式”的下拉菜单中选择“MOVE”数据包提交方式,在“Destination”处修改文件名称,默认为shell.asp,这里我修改为cmd.asp。然后点击“提交数据包”按钮,我们来看服务器返回的信息。如图3所示:
图3
服务器同样返回了“201”响应码,说明我们成功将test.txt修改为cmd.asp了。
现在我们用一句话木马客户端来连接刚上传的一句话木马,可以成功访问。如图4所示:
图4
这样我们就得到了一个WebShell。从整个攻击过程来看,用的时间很短,而且技术门槛很低,一个一般 人运用工具也可以很快拿下一个网站。但遗憾的是,在实际的渗透测试过程中,依旧 有不少站点存在这样的漏洞,希望通过这个实例能够引起广大网络治理 员对安全的重视。
IIS6.0解析漏洞利用
a. 在WEB目录下,当文件名称为类似“a.asp;b.jpg”这种格式的时候,IIS会将它解析为asp文件,如图5所示。
图5
b. 在WEB目录下,IIS6.0会将以“x.asp”这种格式命名的文件夹下的所有文件都解析为asp文件,如图6所示。
图6
上面这两点属于IIS设计的缺陷,但惋惜 微软认为这是IIS的特性,一直没有推出相应的安全补丁。
在尝试绕过文件上传检测时,这两种方法有时非常有效,下面是在实际渗透测试过程中遇到的一个例子。
先登录网站后台,直接上传一个asp木马,提示非法文件,不同意上传。接下来将它的名称改为1.asp;2.jpg后再次上传,发现成功上传至网站目录,如图7所示。
图7
安全加固
这部分我们通过跟踪IIS从安装到配置的整个过程,分析其中可能面临的安全风险,并给出相应的加固措施。
IIS安装及版本的选择
在IIS安装过程中,根据具体的业务需求,只安装必要的组件,以幸免安装其他一切不必要的组件带来的安全风险。如网站正常运行只需要ASP环境,那我们就没必要安装.net组件。
对于IIS版本,至少要在6.0以上,IIS5.0存在严峻 的安全漏洞,不过现在运行IIS5.0的服务器已经非常少了,对于这一点不用太过担心。
IIS配置
1 删除IIS默认站点
把IIS默认安装的站点删除或禁用掉。
2 禁用不必要的Web服务扩展
打开IIS 治理 器,检查是否有不必要的“Web服务扩展”,如果有则禁用掉。如图8所示:
图8
3 IIS访问权限配置
如果IIS中有多个网站,建议为每个网站配置不同的匿名访问账户。
方法:
a. 新建一个账号,加入Guests组
b. “网站属性”--->“目录安全性”--->“身份验证和访问操纵 ”,把“启用匿名访问”处,用刚新建的账户代替默认账户,如图9所示。
图9
4 网站目录权限配置
原则(如图10):
目录有写入权限,一定不要分配执行权限
目录有执行权限,一定不要分配写入权限
网站上传目录和数据库目录一般需要分配“写入”权限,但一定不要分配执行权限
其他目录一般只分配“读取”和“记录访问”权限即可
图10
5 只保留必要的应用程序扩展
根据网站的实际情况,只保留必要的应用程序扩展,其他的一律删除,尤其是像cer、asa这样极其危险的扩展,而且一般网站也不需要它,如图11。
图11
6 修改IIS日志文件配置
无论是什么服务器,日志都是应该高度重视的部分。当发生安全事件时,我们可以通过分析日志来还原攻击过程,否则将无从查起。有条件的话,可以将日志发送到专门的日志服务器保存。
先检查是否启用了日志记录,如未启用,则启用它。日志格式设置为W3C扩展日志格式,IIS中默认是启用日志记录的。
接着修改IIS日志文件保存路径,默认保存在“C:\WINDOWS\system32\LogFiles”目录下,这里修改为自定义路径。建议保存在非系统盘路径,并且IIS日志文件所在目录只同意Administrators组用户和SYSTEM用户访问,如图12。
图12
7 防止信息泄露
a. 禁止向客户端发送详细的ASP错误信息
“IIS治理 器”--->“属性”--->“主目录”--->“配置”--->“调试”,选择“向客户端发送下列文本错误消息”项,自定义出错时返回的错误信息,如图13。
图13
b. 修改默认错误页面
“IIS治理 器”--->“属性”--->“自定义错误”,用自定义的错误页面替换默认的默认页面。下面是我自定义的一个404错误页面,当网站发生404错误时,将向客户端返回这个页面,如图14。
图14
8 自定义IIS Banner信息
默认Banner信息会泄露服务器类型、版本等相关信息,我们需要对其进行修改,这样可以防止信息泄露,还可以骗过一些自动化扫描、攻击工具。
a. 修改默认HTTP头信息
在修改之前,我们先来看下默认的HTTP头信息是什么样的。我们向IIS服务器发一个请求,然后用抓包工具分析它返回的数据,就可以发现HTTP头信息,如图15所示:
图15
上图用红框标注的地方就是HTTP头信息,通过它我们就可以确定目标网站使用的是IIS服务器。
现在我们来看下如何自定义HTTP头信息。首先,打开“IIS治理 器”--->“属性”--->“HTTP头”,在“自定义HTTP头”选中默认的HTTP头信息,进行编辑,或者删除掉默认的,自己添加一个新的HTTP头信息。图16中是我随便自定义的一个HTTP头。
图16
在修改完成后,我们再来抓包分析一下,如图17所示:
图17
从图上可以看到,现在IIS服务器返回的HTTP头已经是我们自定义了。
b. 修改默认IIS头信息
修改默认IIS头信息需要通过工具来完成。这里推举 使用ServerMask,它是一款专门用来隐藏或修改IIS服务器默认Banner信息,防止信息泄露的工具。下图18是该软件的界面:
图18
在修改之前,我们先来分析下IIS默认的头信息,如图19所示:
图19
根据服务器返回的信息,我们很容易推断 出目标网站使用的服务器是IIS,版本是6.0,操作系统是Windows Server 2003,这些信息对攻击者确定下一步行动是非常有帮助的。
我们也可以使用扫描工具来完成刺探目标网站服务器相关信息的任务,这类工具非常多,而且使用非常简单,如图20。
图20
现在我们来把默认的IIS头信息隐藏或修改掉,首先打开软件,选中要保护的网站,在“Security Profile”处的下拉菜单中选择相应的策略,这里我自定义一个。
图21
如图21所示,我把IIS默认的头信息修改成了Apache服务器的信息。这样就可以迷惑攻击者,有效隐藏网站的真实信息。现在我们再来分析下修改后的IIS服务器返回的头信息,如图22:
图22
现在IIS服务器返回的头信息已经是我们自定义的了,这里伪装成了Apache服务器。
我们再用扫描工具扫描一下,看能否得到目标网站的真实服务器类型,结果如图23:
图23
根据上图,我们可以看到现在扫描器已经猎取 不到目标网站的服务器类型了。
对于一些自动化攻击工具来说,因为猎取 不到目标服务器的类型和版本相关信息,自然也就无法进行下一步攻击了。
总结
通过上面对IIS攻击和安全加固的实例,相信读者对IIS服务器的安全有了更加深入的认识。其实对于IIS的安全加固并不难,很多时候更重要的是治理 员的安全意识,只要有足够的安全意识,加上上面介绍的安全加固方法,相信你一定可以打造一个安全的IIS服务器。