在IIS设置里,有一个“Web服务扩展”的设置,其中包括“WebDAV”扩展。许多人都不明白,这个“WebDAV”扩展是干嘛用的,要不要开启呢?有不少人的想法是“开启吧,以免影响网站运行,启用总比不启用好”。其实,这些人的想法是错误的,我们在设置服务器时,基本原则是启用的服务越少越好,能不启用就不启用,在不了解某一服务时,千万不要开启它。为什么呢?因为那怕是一个小小的不经意的配置失误,都可能造成整台服务器被人入侵而沦陷。而“WebDAV”扩展就属于此类高风险的服务,绝对不能轻易开启,除非你对此服务已经相当熟悉,且做好了足够的安全设置。

在IIS中安装“WebDAV”扩展:

安装后就会在IIS中出现“WebDAV 创作规则”模块:

了解“WebDAV”扩展


WebDAV是一种基于 HTTP 1.1协议的通信协议,它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法。使应用程序可直接对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。
IIS实现Webdav是采用它的两种接口:CGI、ISAPI的ISAPI接口。
Webdav支持的请求包括PROPFIND、PROPPATCH、MKCOL、DELETE、PUT、COPY、MOVE、LOCK、UNLOCK等。

配置“WebDAV”扩展


为了安全上的考虑,IIS默认并不会启动WebDAV的功能,因此必须另外来激活它。
通过启动“IIS管理器”,展开本地计算机,选择“Web服务扩展”,选择“允许”的途径来启动WebDAV功能。
开启WebDAV之后,IIS就支持PROPFIND、PROPPATCH、MKCOL、DELETE、PUT、COPY、MOVE、LOCK、UNLOCK等方法了。
当IIS中的配置允许写入的时候就可以直接PUT文件上去,由此可能引发非常严重的安全问题,强烈建议禁止。

“WebDAV”扩展的危害


当开启了WebDAV后,IIS中又配置了目录可写,便会产生很严重的问题,由此配置产生的问题很多,并且有老外黑了一群中国政府站有一部分就是由于此配置。 危害巨大,操作简单,直接批量扫描,上传shell。

测试IIS的put漏洞


演示用的是新装的Win2003虚拟机,IIS采用的默认的设置,勾选上了主目录标签页下的“写入”复选框。
对服务器发送OPTION包:

返回响应头如下:

HTTP/1.1 200 OK
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
MS-Author-Via: DAV
Content-Length: 0
Accept-Ranges: none
DASL: <DAV:sql>
DAV: 1, 2
Public: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, MKCOL, LOCK, UNLOCK
Cache-Control: private

当ALLOW中包含如上方法时,可以确定服务器开启了WebDAV。
 
此时可以用PUT上传文件,但是不可以直接上传可执行脚本文件,可以先上传一个其他类型的文件,然后MOVE成脚本文件。

启用了“WebDAV”扩展,并且复选了“写入”,就可以写入txt文件了。要想使用MOVE命令将其更名为脚本文件后缀,必须还复选上“脚本资源访问”。
 
但是发现利用IIS的解析漏洞,可以MOVE成test.asp;.jpg,然后就可以当做shell来执行了。

测试NTFS权限的设置是否能够对IIS的写权限产生影响


测试一:
站点根目录设置IIS匿名帐户的权限为允许“读取和运行,列出文件夹目录,读取”,其它未勾选。经测试,可以成功PUT写入文件。

测试二:
站点根目录设置IIS匿名帐户的权限为允许“读取和运行,列出文件夹目录,读 取”,并且勾选禁止“写入”。经测试,可以PUT写入文件失败。

返回报文如下:

HTTP/1.1 401 Unauthorized
Content-Length: 75
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Fri, 01 Jan 2010 08:33:09 GMT<html><head><title>Error</title>< /head><body>错误: 拒绝访问。</body></html>注释:写入操作被 拒绝。

总结:不要开启“WebDAV”扩展


(1)如果没有启用“WebDAV”扩展,OPTIONS命令是无法查看IIS支持的方法集合 的。即便是复选上了“写入”,仍然无法写入txt文件(asp的当然也不行)。
(2)启用了“WebDAV”扩展,并且复选了“写入”,就可以写 入txt文件了。要想使用MOVE命令将其更名为脚本文件后缀,必须还复选上“脚本资源访问”。
(3)只有设置了IIS匿名帐户禁止“写入”的 NTFS权限,才能拒绝写入。注意:这个拒绝写入的权限是大家很容易忽视的,如果未设置,还是可以成功写入文件的。它并不单单是针对IIS写权限的,测试发现,如果没有禁止写入,脚本木马还是可以创建和修改文件的。

安全提示:IIS不要开启“WebDAV”扩展相关推荐

  1. PHP扩展——IIS下开启PHP扩展失败解决方案

    问题描述 无法开启GD.MySQL等PHP扩展. 解决方案 1.php.ini应该在c:\windows目录下或者自定义目录 2.php.ini文件中设置extension_dir目录 extensi ...

  2. XP下安装VS2003 ,安装先决条件IIS后,提示未安装frontpage服务器扩展

    iis安装完后,一直没找到如何安装Frontpage服务器扩展,改inf文件的方法如下: 1. 打开 c:(系统盘)\windows\inf\sysoc.inf 文件,  2. 在 ims=imsin ...

  3. php extension curl,php中开启curl扩展的方法详解

    例1, curl扩展开启的步骤: 1.将PHP文件夹下的三个文件php_curl.dll,libeay32.dll,ssleay32.dll复制到system32下; 2.将php.ini(c:WIN ...

  4. php开启curl,给PHP安装和开启curl扩展

    安装某些PHP源码如CMSTOP时需求系统开启curl扩展,这需要修改PHP的配置,在Windows 中只需简单三步. 一.window下安装php_curl支持 1.将PHP安装文件夹下的三个文件p ...

  5. ubuntu php 开启pdo扩展

    ubuntu下安装好LAMP后默认情况没有安装mysql_pdo扩展,以下是安装 步聚,在终端输入以下命令 1.pecl search pdo 2.sudo pecl install pdo 当出现E ...

  6. 在IIS上开启https服务

     在IIS上开启https服务. 前两天因为需要修正一个Windows Live Contacts Gadget在https连接下无法工作的错误,在dev machine的IIS上设置了一下SSL功能 ...

  7. php安装和开启curl扩展,php开启curl扩展

    配置方法: 1.拷贝PHP目录中的libeay32.dll 和 ssleay32.dll 两个文件到 system32 目录. 2.修改php.ini:配置好 extension_dir ,去掉 ex ...

  8. linux php 开启curl,PHP开启curl扩展的方法:windows +Linux

    相信很多人都知道,在默认情况下PHP的curl扩展是没有开启的,windows相对来说开启都非常的简单.linux开启此扩展则很麻烦. 下面我讲分别讲一下PHP如何开启curl扩展? 同时,如果你要安 ...

  9. linux php支持curl,linux下给php安装和开启curl扩展

    在使用某些PHP系统时要求开启curl扩展,下面是linux下安装.开启php curl 扩展方法: 方法一 安装cURL wget http://curl.haxx.se/download/curl ...

  10. php 开启mysql_php如何开启mysqli扩展

    php开启mysqli扩展的方法:首先打开php.ini配置文件:然后找到[extension=php_mysqli.dll],并取消注释:最后找到[extension_dir],设置ext路径即可. ...

最新文章

  1. 2013年工作中遇到的20个问题:181-200
  2. 1过程流程图 3 apqp_为什么说APQP以最低成本及时提供优质的产品?
  3. neo4j查询节点与相应的边的方法
  4. 开源是如何让Android成为移动市场大佬的?
  5. 如何在SQL Server 2019中添加数据敏感度分类的命令
  6. Linux性能调优、Linux集群与存储等
  7. Django module学习之模板
  8. 如何写好学术期刊文章?
  9. 通讯http,TCP/IP与socket之间的区别
  10. struts2面试题大全含答案
  11. PySide使用QVariant
  12. 读书:Jenkins权威指南[2016京东畅销书]
  13. PDF怎么拆分,PDF拆分技巧
  14. 黑客必知投资人的那点事儿——The Hacker’s Guide to Investors
  15. python五大模块_python-5-常用模块
  16. 总结下利用python赚钱的方法,在闲余时间月赚2k-5k
  17. 世界各国和地区名称及首都
  18. vue js 复制div区域内容
  19. 什么是smarty及其安装
  20. RPC VS REST

热门文章

  1. 最小生成树 POJ - 3522(枚举边最小生成树)
  2. oracle语句_ORACLE 常用语句实例:CTE MERGE 结合
  3. 折线分割平面(递推dp)
  4. python lambda函数 与 函数式编程
  5. 回文数 详解(C++)
  6. 思科网院Packet Tracer实验(八)子网划分
  7. ssas连接mysql_BI-SSAS简介篇
  8. 辅助函数 php,php的辅助函数功能
  9. drbd mysql mha_浅谈秒级故障切换!用MHA轻松实现MySQL高可用(三)
  10. python多进程_python学习笔记:多进程