深入解析IIS FTP 7.5未授权拒绝服务漏洞

本文详细分析了IIS FTP 7.5中的一个未授权拒绝服务漏洞,包括漏洞成因、影响范围及防护措施,帮助用户了解如何检测和防范此类安全风险。

评估IIS FTP 7.5未授权拒绝服务漏洞

近期公开的PoC代码利用了IIS FTP 7.5中的一个漏洞,该版本随Windows 7和Windows Server 2008 R2发布。我们的工程团队正在调查此事,并初步观察到几个显著特点,可能有助于澄清一些困惑。

首先,这是一个拒绝服务漏洞,远程代码执行的可能性较低。漏洞发生在FTP服务器尝试在FTP响应中编码Telnet IAC(Interpret As Command)字符时。IAC字符在响应中表示为十进制255(十六进制FF),需要在FTP响应中添加另一个十进制255字符来编码。由于处理过程中的错误,攻击者可能覆盖响应的一部分,甚至超出堆缓冲区的末尾,导致堆缓冲区溢出。

在这种情况下,恶意客户端在溢出中唯一能控制的数据是溢出缓冲区的字节数。它无法控制被覆盖的数据——数据始终是IAC字符0xFF。此外,恶意客户端无法控制数据被覆盖的地址,且数据总是按顺序被覆盖。FTP服务7.5还受到数据执行保护(DEP)的保护。这些特点的组合使得成功执行堆喷射或部分函数指针覆盖攻击变得困难。由于溢出的性质,可能的结果仅是拒绝服务,而非代码执行。

我们的第二个发现是,此漏洞仅影响IIS FTP服务,而完全不影响IIS Web服务。因此,FTP服务的拒绝服务不会影响IIS托管的任何Web服务,仅影响FTP服务。

第三,也是最后一点,IIS FTP服务默认未安装,即使安装后也默认未启用。用户可以通过命令提示符(以管理员身份运行)查询IIS FTP服务的状态:

  • 按下“Windows”+“R”键
  • 输入“cmd.exe”(不带引号)
  • 在命令提示符中输入“sc query ftpsvc”(不带引号)
  • 如果服务未安装,将显示以下内容:

    sc query ftpsvc [SC] EnumQueryServicesStatus:OpenService FAILED 1060: The specified service does not exist as an installed service.

  • 如果服务已安装并正在运行,将显示以下内容:

    sc query ftpsvc SERVICE_NAME: ftpsvc TYPE : 20 WIN32_SHARE_PROCESS STATE : 4 RUNNING (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0

我们将继续调查此问题,并在必要时采取适当措施帮助保护客户。这可能包括通过月度发布流程提供安全更新,或提供额外指导帮助客户自我保护。

感谢MSRC工程团队在调查此问题时的帮助。

– Nazim Lala, IIS安全项目经理 发布内容“按原样”提供,不提供任何保证,也不授予任何权利。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计