IIS文件解析漏洞

IIS(Internet Information Services)是微软出品的灵活、安全、易于管理的Web服务器。 
在总结过ApacheNginx的文件解析漏洞后,现在来总结下IIS的文件解析漏洞。

默认后缀

这其实不是文件解析漏洞,但能达到和文件解析漏洞一样的效果。IIS总是和asp联系在一起。一般而言,asp程序文件的后缀为.asp,但实际上,IIS默认地还会解析其他后缀的文件为asp文件。如下图是我在Windows7中开启IIS7.5对asp支持后处理程序映射的默认设置:

这里写图片描述

由上图可知,.cer文件和.asp文件的处理程序一样,均为IsapiModule(实际上就是aspnet_isapi.dll),故.cer文件也被当做asp程序执行。经测试,确实是这样。

网上找到的资料说.asa、.cer和.cdx都是默认被IIS6.0当做asp执行的后缀。我在Windows XP SP3 + IIS5.1和Windows Server 2003 + IIS6.0中测试发现,.asa和.cer是被当做asp执行的后缀,.cdx不行。

总结一下,可能被IIS当做asp程序执行的后缀有:

  .asp
  .cer
  .asa
  .cdx

IIS 6.0 文件解析漏洞

这个真的是漏洞,不是什么特性。测试发现,IIS5.1和IIS7.5无此漏洞。

IIS 6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。这一漏洞有两种完全不同的利用方式:

  /test.asp/test.jpg
  test.asp;.jpg

第一种是新建一个名为“test.asp”的目录,该目录中的任何文件都被IIS当做asp程序执行(特殊符号是“/”);第二种是上传名为“test.asp;.jpg”的文件,虽然该文件真正的后缀名是“.jpg”,但由于含有特殊符号“;”,仍会被IIS当做asp程序执行。

漏洞原理见《IIS 文件名解析漏洞扼要分析》。该文链接可能已失效,百度文章标题,可以找到转载版本。原理大抵是IIS 5.x/6.0在从文件路径中读取文件后缀时,遇到一个“.”后,便进入了一种截断状态,在该状态下遇到特殊符号——“/”和“;”,都会进行截断,只保留特殊符号前的部分,即:“.asp”,从而认为文件后缀为“.asp”。

下图是我在Windows Server 2003 + IIS6.0中进行测试确认该漏洞存在的截图:

IIS6.0存在文件解析漏洞

遇到php时文件解析问题

  test.jpg/.php

IIS和Nginx在这一点上是一样的,一看到URL中文件后缀是.php,便无论该文件是否存在,都直接交给php处理,而php又默认开启“cgi.fix_pathinfo”,会对文件路径进行“修理”,何谓“修理”?举个例子,当php遇到文件路径“/aaa.xxx/bbb.yyy/ccc.zzz”时,若“/aaa.xxx/bbb.yyy/ccc.zzz”不存在,则会去掉最后的“/ccc.zzz”,然后判断“/aaa.xxx/bbb.yyy”是否存在,若存在,则把“/aaa.xxx/bbb.yyy”当做文件“/aaa.xxx/bbb.yyy/ccc.zzz”,若“/aaa.xxx/bbb.yyy”仍不存在,则继续去掉“/bbb.yyy”,以此类推。

若有文件test.jpg,访问时在其后加/.php,便可以让IIS把“test.jpg/.php”交给php,php“修理”文件路径“test.jpg/.php”得到“test.jpg”,该文件存在,便把该文件作为php程序执行了。下图所示,是在 IIS7.5+php5.3+FastCGI 下的测试情况:

成功执行php代码

asp没有“cgi.fix_pathinfo”,所以不存在这一问题。

Windows操作系统文件命名规则

Windows操作系统中,文件名不能以空格或“.”开头,也不能以空格或“.”结尾。当把一个文件命名为以空格或“.”开头或结尾时,会自动地去掉开头和结尾处的空格和“.”。利用此特性,也可能造成“文件解析漏洞”

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IIS(Internet Information Services)是微软开发的一款用于在Windows操作系统上托管和发布网站的Web服务器软件。而IIS 8.5是IIS的一个版本。 所谓的解析漏洞是指由于服务器在解析用户提交的URL请求时没有正确验证或过滤,导致攻击者可以通过构造恶意的请求来绕过服务器的安全机制,进而执行未经授权的操作。 IIS 8.5的解析漏洞会导致以下问题: 1. 目录遍历:攻击者可以通过构造特定的URL请求,获取网站服务器上的敏感文件或目录,从而获得未经授权的访问权限。 2. 文件包含:攻击者可以通过构造特定的URL请求,将自己的恶意文件包含在服务器响应的页面中,当用户访问该页面时,恶意文件会被执行,从而实现远程命令执行或注入攻击。 3. SQL注入:攻击者可以通过构造特定的URL请求,将恶意的SQL代码注入到服务器后台数据库中,从而获取数据库中的敏感信息或篡改数据。 4. 远程命令执行:攻击者可以通过构造特定的URL请求,远程执行服务器上的命令,获取服务器的访问权限,从而导致服务器遭到控制。 为了防止IIS 8.5解析漏洞,我们可以采取以下安全措施: 1. 及时更新:定期安装微软官方发布的最新安全补丁,确保服务器上的IIS 8.5始终保持最新版本。 2. 配置安全策略:通过限制服务器上IIS 8.5的访问权限、禁用不必要的功能和服务、设置安全的文件和目录权限等来减少攻击面。 3. 输入验证和过滤:确保服务器能够对用户提交的URL请求进行有效的验证和过滤,过滤掉恶意的请求,防止攻击者利用解析漏洞进行利用。 4. 安全编码:开发人员在编写网站代码时应遵循安全编码的最佳实践,避免常见的漏洞,如目录遍历、文件包含和SQL注入等。 总之,IIS 8.5解析漏洞是存在的,但我们可以通过更新和配置安全策略等措施来防止被利用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值