Microsoft Windows Server 2003 R2 IIS 6.0远程代码执行技术分析与防护方案

3月27日,Zhiniang Peng 和Chen Wu发布了关于IIS 6.0 WebDAV远程代码执行的漏洞信息(CVE-2017-7269,CNNVD-201703-1151)。该漏洞源于Microsoft Windows Server 2003 R2的IIS 6.0 中WebDAV 服务下ScStoragePathFromUrl函数存在缓冲区溢出漏洞。如果一个PROPFIND请求中包含以”If: <http://”开头的超长头部,将触发一个缓冲区溢出漏洞,攻击者可以利用此漏洞远程执行任意代码,此利用方法和2016年7-8月份爆出的方法一致。

网上已有公布的POC。

相关地址:

https://github.com/edwardz246003/IIS_exploit

https://www.seebug.org/vuldb/ssvid-92834

受影响的版本

Windows Server 2003 R2下的Microsoft IIS (6.0)

不受影响的版本

目前验证其他版本不受影响。

绿盟威胁情报中心NTI关于IIS 6.0远程代码执行范围分布图

  • 全球受影响分布图

  • 国内受影响省份分布图

  • 国内受影响城市分布图

  • 全球受影响国家TOP 20排行

  • 国内受影响省份排行

漏洞分析

该漏洞源于Microsoft Windows Server 2003 R2的IIS 6.0 中WebDAV 服务下ScStoragePathFromUrl函数存在缓冲区溢出漏洞。如果一个PROPFIND请求中包含以”If: <http://”开头的超长头部,将触发一个缓冲区溢出漏洞,攻击者可以利用此漏洞远程执行任意代码。

  • 漏洞验证

根据github公布的PoC,复现了漏洞情景。

相关链接:https://github.com/edwardz246003/IIS_exploit

首先,手动开启 IIS 6.0 的 WebDAV扩展服务(此扩展服务默认不开启)。

开启WebDAV服务后,执行攻击脚本,发现IIS 6.0的进程执行了计算器的进程,测试复现成功。这里因为继承了IIS的权限,所以打开的calc.exe属于network service,所以计算器在后台运行。

  • 漏洞原理分析

IIS 6.0的WebDAV模块 %systemroot%\system32\inetsrv\httpext.dll 的函数 ScStoragePathFromUrl存在缓存区溢出漏洞。

当其接收到一个以“If: <http://” 开始的较长header头的PROPFIND请求时,没有正确校验长度,将超长的字符串复制到栈中。当IIS程序处理PROPFIND请求CPropFindRequest->Execute,然后在调用HrCheckIfHeader处理If头部的时候,调用ScStoragePathFromUrl将url地址转化为本地的地址时没有检查传入url的长度。导致传入过长url后造成栈溢出。

在HrCheckIfHeader中,

ScCanonicalizePrefixedURL(if_url, if_url_wchar, &if_url_len);

这个函数是将局部变量if_url中的’If: <http://localhost/aaaaaaaaaaa’ 转化为Windows上用的宽字节也就是’I\x00f\x00:\x00 <\x00h\x00t\x00t\x00p\x00:\x00/\x00/\x00l\x00o\x00c\x00a\x00l\x00h\x00o\x00s\x00t\x00/\x00a\x00a\x00a\x00a\x00a\x00a\x00’保存在局部变量if_url_wchar中

第一次调用仅是释放了一个元素,造成漏洞的是在第二次调用

第二次调用CMethUtil::ScStoragePathFromUrl(a1, if_url_wchar, Str, &if_url_len);

将if_url_wchar变量中存储的网络地址转化为对应在本机文件系统中的地址,类似与”c:\inetpub\wwwroot\aaaaaaaaaa”

将网络地址http://localhost/aaaaa转为”c:\inetpub\wwwroot\aaaaaaaaaa”的时候,先将本地路径拷贝到栈中,然后将请求的URI也就是aaaaa与之前的本地路径进行字符串拼接。这里没有做长度限制,导致过长的URI在拼接的时候完成栈溢出覆盖栈上其他元素,形成栈溢出漏洞。

拷贝后

覆盖了栈上的Str指针为宽字节的 “\x00\x61\x00\x61”

由于Str指针被覆盖,所以在计算字符串长度时内存越界

通过多次触发漏洞点,改写IEcb对象的虚函数,劫持控制流,获得控制权,执行ROP。

利用rsaenh.dll模块中的构造好的gadgets执行ROP,最终执行shellcode。

shellcode是经过编码后的字符串。

经过解码后,最后调用WinExec函数,弹窗计算器。

官方修复方案

由于从2015年7月15日起,微软已停止对Windows Server 2003的支持,所以官方没有相关解决方案,建议用户升级到最新系统 Windows Server 2016。

下载链接:

https://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-2016

临时修复方案

  1. 关闭IIS 下的WebDAV服务。

  1. 若直接关闭WebDAV会对您的业务造成影响,可针对WebDAV开放的方法进行灵活配置,如禁用PROPFIND方法,操作步骤如下:
    • 安装微软发布的IIS安全加固工具UrlScan,UrlScan的默认安装就会屏蔽WebDAV的功能;下载地址:https://technet.microsoft.com/en-us/security/cc242650.aspx
    • 配置ini文件,对请求方法进行过滤。如下图所示的[DenyVerbs]节点的配置中,对列表中所列举的方法都会过滤。

配置好之后,我们再次使用POC对主机尝试攻击,通过效果可知,攻击已被拦截。

技术防护方案

  • 如果您不清楚是否受此漏洞影响:
  • 公网资产可使用绿盟云 紧急漏洞在线检测,检测地址如下:

https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?page_id=12

2、内网资产可以使用绿盟科技的远程安全评估系统(RSAS V5,V6)或 Web应用漏洞扫描系统(WVSS) 进行检测。

远程安全评估系统(RSAS V5)

http://update.nsfocus.com/update/listAurora/v/5

远程安全评估系统(RSAS V6)

http://update.nsfocus.com/update/listRsasDetail/v/vulweb

Web应用漏洞扫描系统(WVSS)

http://update.nsfocus.com/update/listWvss

通过上述链接,升级至最新插件包版本即可进行检测!

  • 使用绿盟科技防护类产品(IPS/IDS/NF/WAF)进行防护:

入侵防护系统(IPS)

http://update.nsfocus.com/update/listIps

入侵检测系统(IDS)

http://update.nsfocus.com/update/listIds

下一代防火墙系统(NF)

http://update.nsfocus.com/update/listNf

Web应用防护系统(WAF)规避方案:

因为是利用HTTP头部过长的缓冲区溢出漏洞,可以开启WAF的HTTP协议校验默认策略,利用普通HTTP头部值长度限制防护。

如果担心默认长度过小误报,请复制默认策略,编辑HTTP头部值最大长度,最大不要超过1300字节。

通过上述链接,升级至最新规则升级包版本即可进行防护或根据操作进行自定义防护!

服务类

绿盟科技提供专业的安全技术服务,全方位的保障客户应用系统安全,避免受此漏洞影响。

  • 短期服务:我们可以提供应急服务,服务内容包括对客户应用系统有针对性的提供修复建议,保障客户系统的安全升级。
  • 中长期服务:结合绿盟科技检测与防护产品,提供7*24的安全运营服务,在客户应用系统遭到安全威胁时第一时间通知客户,并定期进行安全检测,针对安全风险提供专业的解决方案。

声 明

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技

北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。

基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。

北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。

如果您需要了解更多内容,可以
加入QQ群:570982169
直接询问:010-68438880

Spread the word. Share this post!

Meet The Author

Leave Comment