针对CVE-2017-7269的教学性漏洞利用复现,即IIS 6.0 WebDAV中的缓冲区溢出漏洞,包含环境搭建指南、漏洞分析以及在Windows Server 2003 R2上的Metasploit利用尝试。
姓名:Killian Munt-Buron and Naji Ullah Abbasi
CVE-2017-7269 是 Microsoft Windows Server 2003 R2 中的一个缓冲区溢出漏洞。
该漏洞位于 WebDAV 的 ScStoragePathFromUrl 函数中。
该漏洞允许通过一个长头部执行任意代码。
头部以 if: <http:// 开头。
使用 ISO 文件(下载链接:https://archive.org/details/en_windows_server_2003_standard)
控制面板 => 添加或删除程序 => 添加/删除 Windows 组件
选择应用程序服务器,然后点击详细信息。
选择 Internet Information Services (IIS)
验证已选中公用文件和万维网服务。
要验证 IIS 是否已安装,请使用 Internet Explorer 打开此 URL:http://localhost/
如果您按照说明操作,您将看到此屏幕:

转到 Internet 信息服务管理器 => 单击设备名称 => 转到 Web 服务扩展 => 右键单击 WebDAV 并允许

我们有一台攻击机,运行 Ubuntu 虚拟机:

以及受害者,运行 Windows 虚拟机:

从攻击机,我们可以使用 Nmap 看到受害者:

我们尝试重现该漏洞,但遇到了一个问题。
在受害者机器上,我们创建了一个目录 /webdav。

并添加读取、写入和目录浏览权限:

使用 cadaver(一个 WebDAV 客户端),我们可以看到通信正常:


首先,我们使用一个脚本来查看服务器是否响应 PROFIND 请求:
import socket
host = "192.168.79.153"
port = 80
request = (
"PROPFIND /webdav/ HTTP/1.1\r\n"
"Host: {host}\r\n"
"Content-Length: 0\r\n"
"Content-Type: text/xml\r\n"
"Depth: 0\r\n"
"Translate: f\r\n"
"\r\n"
).format(host=host)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send(request.encode())
response = s.recv(4096)
s.close()
print(response.decode())
我们得到如下结果:
killian@vmlinux:~$ python3 mis3.py
HTTP/1.1 207 Multi-Status
Date: Sun, 18 Jan 2026 19:22:56 GMT
Server: Microsoft-IIS/6.0
Content-Type: text/xml
Transfer-Encoding: chunked
之后,我们使用 Metasploit 生成缓冲区溢出:

但我们遇到了 Internet Information Services (IIS) 的问题
我们在日志中看到: