【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS

目录

  • 1 文件解析漏洞概述
    • 1.1 概述
    • 1.2 IIS 解析漏洞
      • 1.2.1 文件解析漏洞
      • 1.2.2 目录解析漏洞
      • 1.2.3 文件类型解析漏洞
      • 1.2.4 CGI-PHP 解析漏洞
  • 2 实验
    • 2.1 实验目的
    • 2.2 实验环境
      • 2.2.1 实验环境一:IIS6.0
      • 2.2.2 实验环境二:IIS7.0
    • 2.3 实验一:验证IIS6.0文件解析漏洞
    • 2.4 实验二:验证IIS6.0文件夹解析漏洞
    • 2.5 实验三:验证IIS7.0下的CGI+PHP解析漏洞
      • 2.5.1 实验步骤
      • 2.5.2 防御方法一
      • 2.5.3 防御方法二
  • 3 总结

1 文件解析漏洞概述

1.1 概述

  1. 定义:解析漏洞主要是一些特殊文件被IIS、Apache、Nginx等服务在某种情况下解释成脚本文件格式并得以执行而产生的漏洞。
  2. 相关文章分布:
    IIS相关的文件解析漏洞参考本文;
    Apache相关的文件解析漏洞参考《中间件文件解析漏洞基础知识及实验——Apache》;
    Nginx相关的文件解析漏洞参考《中间件文件解析漏洞基础知识及实验——Nginx》。

1.2 IIS 解析漏洞

1.2.1 文件解析漏洞

  1. 定义:在iis6.0下,分号后面的不被解析,所以xx.asp;.jpg被解析为asp脚本得以执行。
  2. 防御:对所上传的文件重命名后再保存,比如,所上传的xx.asp;.jpg重命名为xxxxxx.jpg再保存。

1.2.2 目录解析漏洞

  1. 定义:在网站下创建名字为.asp.asa的文件夹,其下任何扩展名的文件都被IIS当做asp文件来解析并执行。攻击者利用该漏洞,创建文件夹并往文件夹内上传图片马,不需修改后缀名便可直接执行!
  2. 目录解析漏洞格式,例如: /xx.asp/xx.jpg
  3. 适用版本:IIS 5.x/6.0。对于高版本暂未实验。

1.2.3 文件类型解析漏洞

  1. 定义:在 iis6.0 中,默认的可执行文件除了asp还包含这三种asa、cer、cdx。
  2. 防御:黑白名单过滤时要全面。

1.2.4 CGI-PHP 解析漏洞

  1. 定义:该漏洞常见于IIS7.0、IIS7.5、Nginx <8.03等中间件,当浏览器采用1.jpg/.php的方式访问1.jpg文件时,jpg文件会以PHP程序执行。
  2. 原因:该漏洞的产生原因与中间件无关,主要是PHP配置上CGI.fix_pathinfo参数值默认为1,将其设置为0可以避免这个漏洞。
  3. 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”,以此类推。

2 实验

2.1 实验目的

  1. 加深对IIS几种解析漏洞的理解;
  2. 掌握漏洞的检验及利用方法。

2.2 实验环境

2.2.1 实验环境一:IIS6.0

  1. 由于没有找到方便直接使用的靶场环境,此处新建一个网站来作为靶场。
  2. 虚拟机安装win2003系统,相关步骤参考《虚拟机及常用系统配置步骤添加链接描述》。
  3. win2003系统搭建IIS服务器,相关步骤参考《IIS之WEB服务器部署及网站发布》。
  4. 按以上步骤安装后,点击开始→管理工具→Internet(信息服务IIS)。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第1张图片
  5. 在D盘新建目录upload,在该目录下新建txt文件,输入内容<%=time()%>,该内容为asp语句,执行后返回当前时间,并将文件名修改为time.asp作为动态网页访问。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第2张图片
  6. 在第4步的界面,即IIS管理器界面,先右键默认网站→停止。然后再右键网站→新建→网站→输入描述(随便写)→下一步→分配本机IP给该网站→下一步。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第3张图片
  7. 选择网站的默认路径,选择刚刚新建文件的文件夹→下一步→勾选全部权限→下一步。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第4张图片
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第5张图片
  8. 回到IIS管理器界面,设置新建站点的属性。右键该网站→属性→选项→启用父路径。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第6张图片
  9. 右键服务扩展→在右侧找到 Active Server Gages →点击允许。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第7张图片
  10. 在真实机浏览器,输入虚拟机IP并加上文件名访问指定文件,如下。至此,实验环境搭建结束。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第8张图片

2.2.2 实验环境二:IIS7.0

  1. 由于没有找到方便直接使用的靶场环境,此处新建一个网站来作为靶场,并设置映像链接来处理PHP语句。
  2. 在虚拟机中,安装win2008系统,步骤参考文章《虚拟机及常用系统配置步骤添加链接描述》。
  3. 在win2008中,部署IIS服务器。右键计算机→管理→添加角色→下一步→如下勾选IIS服务器→下一步。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第9张图片
  4. 在设置角色服务时,勾选ASP相关服务,点下一步直到开始安装。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第10张图片
  5. 安装完成后,如下找到并停止默认网站,同样操作删除默认站点。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第11张图片
  6. 在D盘下新建文件夹,本实验命名为upload,新建TXT文件,输入内容');?>,并将文件重命名为1.jpg。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第12张图片
  7. 在IIS管理器,右键网站→添加网站→如下设置名字和路径信息→确定。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第13张图片
  8. 在虚拟机系统上安装phpstudy8.1,下载可前往官网,本实验将其安装在C盘下。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第14张图片
  9. 安装后,在小皮面板的软件管理处,安装php5.4.45版本。在C盘下phpstudy的安装目录下,可以找到该版本PHP的路径为:C:\phpstudy_pro\Extensions\php\php5.4.45nts
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第15张图片
  10. 为IIS服务器添加映射到PHP。打开IIS管理器,双击刚刚新建的网站,找到处理程序映射,双击。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第16张图片
  11. 其中第一行表示任意以php结尾的文件;第二行选择FastCgi模块;第三行是在PHP安装目录下找到响应的可执行程序,参考下一张图设置;第四行随便写点;点击确定。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第17张图片
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第18张图片
  12. 双击IIS服务器,找到FastCGI配置,双击打开。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第19张图片
  13. 按下步骤让CGI跟随PHP配置文件而修改配置。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第20张图片
  14. 至此,就可以让IIS支持PHP脚本。在网站目录下新建TXT文件,输入内容为并重命名为info.php。在真实机输入win2008虚拟机IP地址并指定文件名进行访问,可以看到文件PHP代码成功执行。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第21张图片

2.3 实验一:验证IIS6.0文件解析漏洞

  1. 由于没有可直接利用的靶场,此处就跳过文件上传的环节,直接验证文件能否被解析。
  2. 在win2003虚拟机中,复制time.asp文件(上文搭建环境时建立的文件)黏贴后重命名为time.asp;1.jpg
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第22张图片
  3. 在真实机浏览器,输入虚拟机IP并加上文件名访问指定文件,如下。可以看到在iis6.0下,分号后面的不被解析,所以xx.asp;.jpg被解析为asp脚本得以执行。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第23张图片

2.4 实验二:验证IIS6.0文件夹解析漏洞

  1. 由于没有可直接利用的靶场,此处就跳过文件上传的环节,直接验证文件能否被解析。
  2. 在win2003虚拟机中,在网站根目录下新建文件夹,命名为1.asp,将time.asp文件(上文搭建环境时建立的文件)复制进去并重命名为1.jpg
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第24张图片
  3. 在真实机浏览器,输入虚拟机IP并加上文件名访问指定文件,如下。可以看出,当文件夹名字中含有后缀.asp时,其目录内的任何扩展名的文件都被iis当做asp文件来解析并执行(.asa同理)。因此只要攻击者可以通过该漏洞直接上传图片马,并且可以不需要改后缀名!
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第25张图片

2.5 实验三:验证IIS7.0下的CGI+PHP解析漏洞

2.5.1 实验步骤

  1. 将info.php文件(上文搭建环境时建立的文件)复制黏贴并重命名为1.jpg。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第26张图片
  2. 在真实机访问该文件时,虽然该文件后缀为jpg,但是访问时只要在URL后加了/.php就能让该文件以PHP格式运行,成功执行该文件内的PHP代码。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第27张图片

2.5.2 防御方法一

  1. 在win2008系统中,打开IIS管理器界面,找到搭建环境时建立的映射文件。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第28张图片
  2. 选中该映射文件,点击右侧的编辑,点击请求限制,在限制栏下,勾选上并点击确定。
    【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第29张图片

2.5.3 防御方法二

将php.ini文件中的cgi.fix_pathinfo的值设置为0,并将该行代码签名的分号去掉,保存并重启phpstudy。
【文件上传漏洞10】中间件文件解析漏洞基础知识及实验——IIS_第30张图片

3 总结

  1. 文件上传漏洞第一个条件是文件成功上传且没能过滤掉恶意代码;第二个条件是让代码执行。
  2. 对于第一个条件,存在着前端JS检测绕过、服务端MIME类型绕过、服务端后缀名绕过、文件内容绕过等,其根本目的是要上传文件。
  3. 对于第二个条件,当中间件为IIS时:
    (1)优先考虑绕过后缀名时采用恶意代码能够执行的后缀,这样文件能直接执行;
    (2)当IIS版本为5.x或6.x时,考虑利用文件解析漏洞、目录解析漏洞执行该文件;
    (3)当IIS版本为7.x时,考虑利用CGI-PHP解析漏洞来执行该文件。

你可能感兴趣的:(#,筑基07:WEB漏洞原理,中间件,安全,网络安全,IIS,PHP)