IIS6.0 远程代码执行漏洞事件分析报告

作者:昊天实验室
日期:2017/03/29
最后更新日期:2017/03/30
pdf版本:IIS6.0 远程代码执行漏洞事件分析报告.pdf


0x01. 事件概述

在2017年3月26日CVE确认并公开了一则关于 CVE-2017-7296 漏洞信息,作者是华南理工大学计算机科学与工程学院信息安全实验中的Zhiniang Peng 和 Chen Wu 发布出来的,该漏洞讲述的是关于Microsoft IIS 6.0 应用服务器的 WebDAV 服务中存在缓冲区溢出漏洞,该漏洞通过缓冲区溢出漏洞导致该服务器遭受远程代码执行攻击。造成这次缓冲区溢出漏洞其原因是把复制内容到空间不足的缓冲区之前没有对用户输入进行限制所诱发的。 攻击者可以利用精心构造的 PROFIND 请求并且 HEADER 头信息带有 If<http:// 字样构造出相关利用的流量 包,由于是缓冲区溢出漏洞的特性,失败的攻击也会造成对应拒绝服务的漏洞。 该漏洞受影响的暂时只有 IIS 6.0 ,但不排除后续可能会影响到更高版本的 IIS 服务。值得一提的是,根据维基解密2015年所泄露出的文件中有涉及到 WebDAV 相关漏洞信息,有理由相信该漏洞在早期已经被大范围使用。


0x02. 漏洞分析

调试这个漏洞最好先执行一次 PoC ,这个时候 Windbg 就比较容易找到 w3wp.exe 进行附加调试。执行PoC 之后,由于阻塞的原因,w3wp.exe 的服务线程和PoC 都会被挂起(假若 ShellCode 不设置为挂起,就会导致 w3wp.exe 产生异常,在默认生成的 msfpayload 中,windows/exec 的 ShellCode 模块最后会调用 ExitProcess() 退出进程,这将会导致 IIS 6 产生503 错误,建议 ShellCode 使用 Sleep() 无限阻塞或者退出进程),此时可以看到 w3wp.exe)

在对 PoC 的分析中,我们发现 ScStoragePathFromUrl 的溢出漏洞的利用方法很值得称赞。第一条长链接 http://localhost/aaaaaaa 主要是覆盖 ScStoragePathFromUrl 的第一个参数到地址 0x680312C0 ,接下来的长链接 http://localhost/bbbbbbb 则会被复制到地址 0x680312C0 中。 0x680312C0 位于 rsaenh.dll ,内存拥有读写和执行的权限

然后长链接 http://localhost/aaaaaaa再次被处理,还是用来覆盖 ScStoragePathFromUrl 的第一个参数,紧接着对http://localhost/bbbbbbb则会进入到 ScStripAndCheckHttpPrefix() 函数,PoC 绕过栈返回地址保护的方法就是修改 IEcb 对象结构地址到 0x680312C0ScStripAndCheckHttpPrefix() 会调用 IEcb 对象( ScStoragePathFromUrl() 的第一个参数)的虚函数,进入到 ROP 链。

最后返回到 0x68031460进入 Unicode 编码过的 ShellCode 。 0x68031460的指令为push esi ,得到利用的寄存器为esi,根据以下命令生成shellcode。

msfvenom -p windows/exec CMD="calc.exe" -e x86/unicode_mixed BufferRegister=ESI  

0x03. 受影响情况分析

昊天实验室提取出带有认证的 IIS6.0WebDAV 服务指纹信息,并在检索全球基础信息库的时候发现除了400余条确认是受到此漏洞影响的主机。指纹信息:

IIS/6.0 MS-Author-Via: DAV  

IIS 6.0默认不开启 WebDAV ,一但开启 WebDAV 支持,安装了 IIS 6.0的服务器将可能受到该漏洞的威胁。

受该漏洞影响 IIS 6.0 服务器 全国分布情况

图3.1 确认中国内受影响的服务器

排名

省份

所占百分比

1

浙江

9.5%

2

北京

9.25%

3

香港

9.0%

4

台湾

8.05%

5

山东

7.50%

6

江苏

6.50%

7

河南

6.50%

8

上海

5.50%

9

四川

5.0%


表3.1 全国确认受该漏洞影响服务器数量最多的地区TOP9

全球IIS6.0服务器分布情况 (未确认风险)

图3.2 全球IIS6.0服务器数量分布示意图

美国

284,250

47.13%

中国

113,659

18.84%

中国香港

40,856

6.77%

英国

16,916

2.80%

加拿大

13,551

2.25%

巴西

9,786

1.62%

意大利

8,567

1.42%

澳大利亚

7,882

1.31%

中国台湾

7,323

1.21%

德国

6,641

1.10%

表3.1 全球IIS6.0分布服务器最多的地区Top 10

图3.3 全球范围IIS6.0最多组织

图3.4 全球受影响设备使用的端口的数量统计

全中国 IIS 6.0 分布情况(未确认风险)

图3.5 中国IIS6.0数量分布示意图

杭州

45,401

39.81%

北京

15,151

13.29%

广州

5,748

5.04%

上海

5,069

4.44%

郑州

3,880

3.40%

南京

3,549

3.11%

成都

2,297

2.01%

济南

1,744

1.53%

武汉

1,601

1.40%

深圳

1,547

1.36%

表3.2 中国大陆地区IIS6.0分布TOP10

图3.6 中国大陆IIS6.0分布最多的组织

根据数据统计显示,当前全球仍有高达 60w 台服务器在使用 IIS 6.0 ,位于中国的 IIS 6.0 服务器数量居全球第二。
在各大IDC中存在大量IIS6.0服务器,如阿里云,微软的Azure,亚马逊,以及GoDaddy等。


0x04. 时间线

  • 2017 年 3 月 26 日 Zhiniang Peng 和 Chen Wu 提交 CVE 并确认
  • 2017 年 3 月 27 日 Zhiniang Peng 在 Github 上放出相关 POC 及详情
  • 2017 年 3 月 29 日 昊天实验室首发相关 shellcode 的构造方式,并发布相关POC

0x05. 漏洞验证与修复

  • 原作者提供的POC(会在目标主机上运行calc.exe
  • 由昊天实验室编写的漏洞检测脚本:

POC检测情况截图

图5.1 回显POC检测情况




修复建议:

  • 关闭 WebDAV 服务
  • 升级 IIS 服务器
  • 限制 HTTP 头部值的最大长度

官方修复建议:


相关资料

[1] http://www.cvedetails.com/cve/CVE-2017-7269

[2] https://github.com/edwardz246003/IIS_exploit

[3] https://ht-sec.org/iis6-0-cve-2017-7269-ren-yi-ming-ling-zhi-xing-shellcodegouzao/

[4] https://ht-sec.org/cve-2017-7269-hui-xian-poc-jie-xi/

[5] https://github.com/lcatro/CVE-2017-7269-Echo-PoC